āĻāĻŽāĻ°āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻā§āĻāĻ˛āĻŋāĻ¨ā§ āĻāĻŋāĻĒāĻ¸ āĻāĻŖāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ°āĻ āĻ¸ā§āĻĒāĻˇā§āĻ āĻāĻ°ā§ āĻŦāĻ˛āĻ˛ā§, āĻā§āĻāĻ˛āĻŋāĻ¨ 1.3.21, āĻ
ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§āĻĄ 4, āĻ
ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§āĻĄ āĻ¸ā§āĻā§āĻĄāĻŋāĻ 3āĨ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻšāĻŦā§, āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ¯āĻžāĻ°āĻž āĻ
ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§āĻĄ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦāĻŋāĻāĻžāĻļā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¯āĻžāĻ¤ā§āĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻā§āĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻā§ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻž āĻŦā§āĻāĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
āĻ°ā§āĻ¸ā§āĻ¤ā§āĻ°āĻžāĻ āĻŦāĻž āĻā§āĻ¯āĻžāĻĢā§āĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻžāĻāĻžāĻ¨ā§āĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻ¯āĻŧ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻāĻŋāĻĒāĻ¸ā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ˛ā§ āĻāĻ āĻā§āĻ¯āĻžāĻ˛āĻā§āĻ˛ā§āĻāĻ°āĻāĻŋ āĻāĻžāĻā§ āĻāĻ¸āĻŦā§āĨ¤ āĻ
āĻŦāĻļā§āĻ¯āĻ, āĻ¸āĻŦāĻžāĻ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¯āĻŧā§āĻāĻžāĻ°āĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻĒ āĻĻā§āĻ¯āĻŧ āĻ¨āĻž; āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻļā§āĻāĻŋāĻŽāĻž āĻāĻ¤āĻŋāĻšā§āĻ¯, āĻ¤āĻŦā§ āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¯ā§ āĻā§āĻ¨āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧāĨ¤
āĻāĻŽāĻ°āĻž āĻŽāĻ¨ā§ āĻāĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻā§āĻāĻŋ: "Habr"-āĻāĻ° āĻ¸āĻāĻ˛ āĻĒāĻžāĻ āĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ - "Habr" āĻĒā§āĻ°āĻāĻžāĻ°āĻŽā§āĻ˛āĻ āĻā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯ā§āĻā§āĻ¨ā§ Skillbox āĻā§āĻ°ā§āĻ¸ā§ āĻ¨āĻĨāĻŋāĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ 10 āĻ°ā§āĻŦā§āĻ˛ āĻāĻžāĻĄāĻŧāĨ¤
Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§: āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ āĻā§āĻ°ā§āĻ¸
"āĻŽā§āĻŦāĻžāĻāĻ˛ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° PRO .
āĻāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻāĻŋ:
āĻāĻĒāĻ¨āĻŋ āĻŽā§āĻ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§āĻ° āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻļāĻ¤āĻžāĻāĻļ, āĻŽāĻŋāĻāĻŋāĻ āĻ
āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ˛āĻŋāĻā§āĻ¨ āĻāĻŦāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻžāĻ¨ - āĻāĻĒāĻ¨āĻžāĻ° āĻ¯ā§ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻāĻŋāĻĒ āĻā§āĻĄāĻŧā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻļā§āĻ°ā§ āĻāĻ°āĻž
āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻāĻ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻĒā§āĻ°āĻĨāĻŽ āĻāĻ°ā§āĻŽ-
āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻā§āĻ°āĻŽāĻŋāĻ āĻā§āĻ°āĻŽā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻĻā§āĻāĻ¤ā§, View -> Tool Windows -> TODO āĻā§āĻ˛ā§āĻ¨āĨ¤
āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ°āĻ āĻĒā§āĻ¯āĻžāĻ˛ā§āĻ āĻŽā§āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ colors.xml āĻā§āĻ˛āĻŋāĨ¤ strings.xml-āĻ āĻā§āĻā§āĻ¸āĻ āĻĄā§āĻāĻž (āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ°) āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ styles.xml-āĻ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĢāĻ¨ā§āĻ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻ°āĻ āĻŦāĻŋāĻāĻžāĻ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨
activity_main.xml āĻā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ āĻ¨āĻŋāĻā§āĻ° āĻā§āĻĄāĻāĻŋ LinearLayout āĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ (#1):
<TextView
android_id="@+id/expensePerPersonTextView"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_paddingTop="30dp"
style="@style/h1Bold"
android_textColor="@color/colorAccent"
android_text="0"/>
<TextView
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_paddingBottom="25dp"
style="@style/h2"
android_textColor="@color/colorAccent"
android_text="@string/perPersonStaticText"/>
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻŽāĻžāĻ¨ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¸ā§āĻāĻžāĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻŦāĻž āĻ°āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻāĻ¨ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻž āĻĄā§āĻāĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻ°āĻāĻā§āĻ˛āĻŋ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻšāĻŋāĻ¸āĻžāĻŦ āĻŦāĻŋāĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨
āĻŦā§āĻ¯āĻ¯āĻŧ āĻŦāĻŋāĻāĻžāĻā§āĻ° (#2) āĻĒāĻ°ā§ āĻ˛āĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻ˛ā§āĻāĻāĻā§ āĻ¨ā§āĻā§āĻ° āĻā§āĻĄāĻāĻŋ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨:
<LinearLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
android_orientation="vertical"
android_background="@color/colorAccent">
<! â TODO #3: Build Bill Section â
âĻ
</LinearLayout>
āĻāĻŽāĻ°āĻž TODO-āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻĒāĻ°ā§ LinearLayout āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻŋ, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻŋ, āĻāĻāĻŋāĻā§ LinearLayout (#3) āĻāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ°ā§āĻā§:
<TextView
android_layout_margin="15dp"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
style="@style/h4"
android_text="@string/billStaticText"/>
<EditText
android_id="@+id/billEditText"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
android_inputType="numberDecimal"
android_maxLines="1"
style="@style/h2Bold"
android_text="0"/>
āĻ¯ā§āĻšā§āĻ¤ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻ°ā§āĻ¸ā§āĻā§āĻ°ā§āĻ¨ā§āĻā§āĻ° āĻ¸āĻŽāĻžāĻŦā§āĻļā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻĨāĻ āĻāĻ°āĻ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž, āĻ¤āĻžāĻ CostPerPersonTextView āĻŽā§āĻ˛ āĻā§āĻŽāĻŋāĻāĻž āĻĒāĻžāĻ˛āĻ¨ āĻāĻ°ā§āĨ¤
EditText āĻāĻ¨āĻĒā§āĻāĻā§ āĻāĻ āĻ˛āĻžāĻāĻ¨ā§ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻāĻ°ā§, āĻāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ NumberDecimal inputType-āĻ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻˇāĻ¤āĻŋāĻ° (āĻāĻžāĻāĻž āĻāĻžāĻĒ, āĻĒā§āĻ˛ā§āĻ, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻŋāĨ¤
"āĻŽāĻžāĻ¨ā§āĻˇ āĻāĻŦāĻ āĻāĻŋāĻĒāĻ¸" āĻŦāĻŋāĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨
āĻāĻāĻāĻŋ āĻāĻŋāĻĒ āĻāĻ˛āĻŋāĻāĻŽ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§, āĻ¨ā§āĻā§āĻ° āĻā§āĻĄāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ LinearLayout āĻŦāĻŋāĻāĻžāĻā§ āĻĒā§āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨ (#4):
<TextView
android_layout_margin="15dp"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
style="@style/h4"
android_text="@string/tipStaticText"/>
<LinearLayout
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_orientation="horizontal">
<ImageButton
android_id="@+id/subtractTipButton"
style="@style/operationButton"
android_layout_marginLeft="20dp"
android_layout_marginStart="20dp"
android_src="@drawable/subtract"/>
<TextView
android_id="@+id/tipTextView"
android_layout_margin="15dp"
android_layout_width="0dp"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
android_layout_weight="1"
style="@style/h2Bold"
android_text="20%"/>
<ImageButton
android_id="@+id/addTipButton"
style="@style/operationButton"
android_layout_marginEnd="20dp"
android_layout_marginRight="20dp"
android_src="@drawable/add"/>
</LinearLayout>
āĻā§āĻĄā§āĻ° āĻāĻ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻāĻŋāĻĒā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻā§āĻā§āĻ¸āĻ āĻŽāĻžāĻ¨ āĻšāĻ˛ 20āĨ¤ āĻ˛ā§āĻāĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻāĻāĻāĻ¨ āĻ¸āĻš āĻāĻŽā§āĻ āĻŦāĻžāĻāĻ¨ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻāĻžāĻŦā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ (#5):
- āĻāĻŽā§āĻ āĻŦāĻžāĻāĻ¨ āĻāĻāĻĄāĻŋ (āĻŦāĻŋāĻ¯āĻŧā§āĻ āĻāĻ°ā§āĻ¨ āĻĒāĻŋāĻĒāĻ˛āĻŦāĻžāĻāĻ¨, āĻ ā§āĻ¯āĻžāĻĄāĻĒāĻŋāĻĒāĻ˛āĻŦāĻžāĻāĻ¨)
- TextView ids(numberOfPeopleStaticText, numberOfPeopleTextView)
- numberOfPeopleTextView āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻĒāĻžāĻ ā§āĻ¯ (4āĻāĻŋ āĻšāĻ¤ā§ āĻšāĻŦā§)āĨ¤
āĻāĻāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨, āĻ¤āĻāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻ¸ā§āĻ¯ā§āĻ āĻĨāĻžāĻā§, "āĻ¯ā§āĻ/āĻŦāĻŋāĻ¯āĻŧā§āĻ" āĻŦā§āĻ¤āĻžāĻŽāĻā§āĻ˛āĻŋāĻ āĻāĻžāĻ āĻāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨āĻ āĻāĻŋāĻā§āĻ āĻāĻā§āĻ¨āĻŋā§ˇ
āĻāĻŋāĻ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§
MainActivity.kt āĻā§āĻ˛ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ initViews āĻĢāĻžāĻāĻļāĻ¨ā§ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ (#6):
private fun initViews() {
expensePerPersonTextView = findViewById(R.id.expensePerPersonTextView)
billEditText = findViewById(R.id.billEditText)
addTipButton = findViewById(R.id.addTipButton)
tipTextView = findViewById(R.id.tipTextView)
subtractTipButton = findViewById(R.id.subtractTipButton)
addPeopleButton = findViewById(R.id.addPeopleButton)
numberOfPeopleTextView = findViewById(R.id.numberOfPeopleTextView)
subtractPeopleButton = findViewById(R.id.subtractPeopleButton)
//TODO #8: Bind Buttons to Listener
//TODO #16: Bind EditText to TextWatcher
}
āĻŦā§āĻ¤āĻžāĻŽāĻā§āĻ˛āĻŋ āĻļā§āĻˇ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻŦā§āĻ¤āĻžāĻŽ āĻā§āĻ˛āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻžāĻ¸ āĻ¸ā§āĻ¤āĻ°ā§ View.OnClickListener āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻŋ (#7):
āĻā§āĻ˛āĻžāĻ¸ āĻŽā§āĻāĻ¨ āĻ ā§āĻ¯āĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ: AppCompatActivity(), View.OnClickListener {
āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻŦā§ āĻ¨āĻž; āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ°āĻ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (#8):
override fun onClick(v: View?) {
when (v?.id) {
R.id.addTipButton -> incrementTip()
R.id.subtractTipButton -> decrementTip()
R.id.addPeopleButton -> incrementPeople()
R.id.subtractPeopleButton -> decrementPeople()
}
}
āĻŦā§āĻ¤āĻžāĻŽ āĻāĻŦāĻ āĻ¸ā§āĻāĻ āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§āĻā§āĻˇāĻŋāĻ¤ā§, Kotlin āĻ¸āĻŦāĻāĻŋāĻā§ āĻā§āĻŦ āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻ¸āĻāĻāĻ āĻŋāĻ¤! āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻŦāĻ āĻšā§āĻ°āĻžāĻ¸ āĻĢāĻžāĻāĻļāĻ¨ āĻ¨ā§āĻā§āĻ° āĻā§āĻĄ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨
(#9 - #12):
private fun incrementTip() {
if (tipPercent != MAX_TIP) {
tipPercent += TIP_INCREMENT_PERCENT
tipTextView.text = String.format("%d%%", tipPercent)
}
}
private fun decrementTip() {
if (tipPercent != MIN_TIP) {
tipPercent -= TIP_INCREMENT_PERCENT
tipTextView.text = String.format("%d%%", tipPercent)
}
}
private fun incrementPeople() {
if (numberOfPeople != MAX_PEOPLE) {
numberOfPeople += PEOPLE_INCREMENT_VALUE
numberOfPeopleTextView.text = numberOfPeople.toString()
}
}
private fun decrementPeople() {
if (numberOfPeople != MIN_PEOPLE) {
numberOfPeople -= PEOPLE_INCREMENT_VALUE
numberOfPeopleTextView.text = numberOfPeople.toString()
}
}
āĻāĻāĻžāĻ¨ā§ āĻā§āĻĄ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻŽāĻžāĻ¨ (MAX_TIP āĻāĻŦāĻ MAX_PEOPLE) āĻ¸āĻš āĻŦā§āĻĻā§āĻ§āĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ°āĻā§āĻˇāĻž āĻāĻ°ā§āĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻā§āĻĄāĻāĻŋ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻŽāĻžāĻ¨ (MIN_TIP āĻāĻŦāĻ MIN_PEOPLE) āĻ¸āĻš āĻšā§āĻ°āĻžāĻ¸ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ°āĻā§āĻˇāĻž āĻāĻ°ā§ā§ˇ
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž initViews āĻĢāĻžāĻāĻļāĻ¨ā§ āĻļā§āĻ°ā§āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦā§āĻ¤āĻžāĻŽāĻā§āĻ˛āĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŋ (#13):
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ¨ āĻŽā§āĻ āĻā§āĻˇāĻ¤āĻŋ, āĻāĻŋāĻĒāĻ¸ āĻāĻŦāĻ āĻŽāĻŋāĻāĻŋāĻ āĻ
āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻā§āĻāĻž, āĻāĻāĻ¨ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻˇāĻ¯āĻŧ...
āĻāĻ°āĻ āĻāĻŖāĻ¨āĻž āĻŦāĻŋāĻāĻžāĻ
āĻāĻ āĻā§āĻĄ āĻāĻ°āĻ āĻāĻŖāĻ¨āĻž āĻāĻ°ā§ (#14):
private fun calculateExpense() {
val totalBill = billEditText.text.toString().toDouble()
val totalExpense = ((HUNDRED_PERCENT + tipPercent) / HUNDRED_PERCENT) * totalBill
val individualExpense = totalExpense / numberOfPeople
expensePerPersonTextView.text = String.format("$%.2f", individualExpense)
}
āĻ āĻŋāĻ āĻāĻā§, āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¯āĻž āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻ˛ā§āĻā§āĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻŋāĻĒāĻ¸ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§ (#15):
private fun incrementTip() {
âĻ
}
private fun decrementTip() {
âĻ
}
private fun incrementPeople() {
âĻ
}
private fun decrementPeople() {
âĻ
}
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ. āĻāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻŦāĻ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻ°āĻ āĻāĻžāĻ˛ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŋāĻĒāĻ¸ āĻŦāĻž āĻŦāĻ¨ā§āĻ§ā§āĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻā§āĻ°ā§āĻ¯āĻžāĻļ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§ āĻāĻžāĻ°āĻŖ āĻļā§āĻ¨ā§āĻ¯ āĻāĻ°āĻā§āĻ° āĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ¨āĻ āĻā§āĻ¨āĻ āĻā§āĻ āĻ¨ā§āĻā§ˇ āĻ¤āĻžāĻāĻžāĻĄāĻŧāĻž, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻžāĻ°ā§āĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻžāĨ¤
āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒāĻĻāĻā§āĻˇā§āĻĒ
āĻā§āĻā§āĻ¸āĻāĻāĻ¯āĻŧāĻžāĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ (#16):
āĻā§āĻ˛āĻžāĻ¸ āĻŽā§āĻāĻ¨ āĻ ā§āĻ¯āĻžāĻā§āĻāĻŋāĻāĻŋāĻāĻŋ: AppCompatActivity(), View.OnClickListener, TextWatcher {
āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻ˛āĻāĻĄāĻŋāĻāĻā§āĻā§āĻ¸āĻ āĻ˛āĻŋāĻ¸ā§āĻ¨āĻžāĻ° (#17) āĻāĻŽā§āĻŦā§āĻĄ āĻāĻ°āĻŋ:
billEditText.addTextChangedListener(āĻāĻāĻŋ)
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŽāĻ°āĻž TextWatcher (#18) āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻŋ:
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (!billEditText.text.isEmpty()) {
calculateExpense()
}
}
override fun afterTextChanged(s: Editable?) {}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
āĻāĻ¯āĻŧā§āĻ˛, āĻāĻāĻ¨ āĻāĻā§āĻŦāĻžāĻ°ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°ā§! āĻ
āĻāĻŋāĻ¨āĻ¨ā§āĻĻāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻā§āĻāĻ˛āĻŋāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻā§āĻ° "āĻāĻŋāĻĒ āĻā§āĻ¯āĻžāĻ˛āĻā§āĻ˛ā§āĻāĻ°" āĻ˛āĻŋāĻā§āĻā§āĻ¨ā§ˇ
Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§:
- āĻĻā§āĻ āĻŦāĻāĻ°ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ āĻā§āĻ°ā§āĻ¸
"āĻāĻŽāĻŋ āĻāĻāĻāĻ¨ āĻĒā§āĻ°ā§ āĻāĻ¯āĻŧā§āĻŦ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°" .- āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻā§āĻ°ā§āĻ¸
"āĻ¸āĻŋ# āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°" .- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ āĻŦāĻāĻ°ā§āĻ° āĻā§āĻ°ā§āĻ¸
"0 āĻĨā§āĻā§ PRO āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§" .
āĻāĻ¤ā§āĻ¸: www.habr.com