เดเตเดเตเดฒเดฟเดจเดฟเดฒเต เดจเตเดฑเตเดเตเดเตเดเตพ เดเดฃเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดเตเดเดจเต เดธเตเดทเตเดเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดจเดฟเดเตเดเดณเตเดเต เดชเดฑเดฏเตเดจเตเดจเต. เดเตเดเตเดคเตฝ เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดเตเดเดพเตฝ, เดเตเดเตโเดฒเดฟเตป 1.3.21, เดเตปเดกเตเดฐเตเดฏเดฟเดกเต 4, เดเตปเดกเตเดฐเตเดฏเดฟเดกเต เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต 3. เดเตปเดกเตเดฐเตเดฏเดฟเดกเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดกเตเดตเดฒเดชเตโเดฎเตเดจเตเดฑเดฟเตฝ เดฏเดพเดคเตเดฐ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดตเตผเดเตเดเต เดฒเตเดเดจเด เดฐเดธเดเดฐเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด. เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเตฝ เดเดจเตเดคเดพเดฃเต, เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเดเตเดเดพเตป เดเดคเต เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเต เดฑเตเดธเตเดฑเตเดฑเตเดฑเดจเตเดฑเดฟเดฒเต เดเดซเตเดฏเดฟเดฒเต เดธเดฎเดฏเด เดเตเดฒเดตเดดเดฟเดเตเดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดเดฎเตเดชเดจเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดจเตเดฑเตเดเตเดเตเดเดณเตเดเต เด
เดณเดตเต เดจเดฟเดเตเดเตพ เดเดฃเดเตเดเดพเดเตเดเตเดฃเตเดเดฟเดตเดฐเตเดฎเตเดชเตเตพ เด เดเดพเตฝเดเตเดเตเดฒเตเดฑเตเดฑเตผ เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเด. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดฒเตเดฒเดพเดตเดฐเตเด เดเดชเตเดชเตเดดเตเด เดตเตเดฏเดฟเดฑเตเดฑเตผเดฎเดพเตผเดเตเดเต เดเดฐเต เดจเตเดฑเตเดเตเดเต เดจเตฝเดเดฟเดฒเตเดฒ; เดเดคเต เดเดฐเต เดชเดพเดถเตเดเดพเดคเตเดฏ เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฃเต, เดเดจเตเดจเดพเตฝ เด
เดคเตเดคเดฐเดฎเตเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดคเต เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเดฒเตเด เดฐเดธเดเดฐเดฎเดพเดฃเต.
เดเดเตเดเตพ เดเตผเดฎเตเดฎเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต: "Habr"-เดจเตเดฑเต เดเดฒเตเดฒเดพ เดตเดพเดฏเดจเดเตเดเดพเตผเดเตเดเตเด - "Habr" เดชเตเดฐเตเดฎเตเดทเดฃเตฝ เดเตเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดคเตเดเตเดเดฟเดฒเตเด เดธเตเดเดฟเตฝเดฌเตเดเตเดธเต เดเตเดดเตเดธเดฟเตฝ เดเตเดฐเตเดฎเตเดชเตเตพ 10 เดฑเตเดฌเดฟเตพเดธเต เดเดฟเดดเดฟเดตเต.
เดธเตเดเดฟเตฝเดฌเตเดเตเดธเต เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต: เดชเตเดฐเดพเดฏเตเดเดฟเด เดเตเดดเตเดธเต
"เดฎเตเดฌเตเตฝ เดกเตเดตเดฒเดชเตเดชเตผ เดชเดฟ.เดเตผ.เด .
เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเตฝ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
เดจเดฟเดเตเดเตพ เดเดเต เดคเตเดเดฏเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดถเดคเดฎเดพเดจเด, เดฎเตเดฑเตเดฑเดฟเดเดเดฟเตฝ เดชเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดตเดฐเตเดเต เดเดฃเตเดฃเด เดเดจเตเดจเดฟเดต เดจเตฝเดเตเด, เดซเดฒเด เดจเตเดเตเด - เดจเดฟเดเตเดเตพ เดเดชเตเดเตเดทเดฟเดเตเดเตเดฃเตเด เดเดฟเดชเตเดชเดฟเดจเตเดฑเต เดคเตเด.
เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต
เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดจเตเดฑเตผเดซเตเดธเต เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
เดเดฆเตเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด -
เดเดฒเตเดฒเดพเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดพเดฒเดเตเดฐเดฎเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดคเต เดเดพเดฃเตเดจเตเดจเดคเดฟเดจเต, View -> Tool Windows -> TODO เดคเตเดฑเดเตเดเตเด.
เดเดเตเดเตพ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดชเด เดฟเดเตเดเตเดเดฏเตเด เดตเตผเดฃเตเดฃ เดชเดพเดฒเดฑเตเดฑเต เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต color.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-เดเดณเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเต เดถเตเดทเด เดเดเตเดเตพ เดฒเตเดจเดฟเดฏเตผ เดฒเตเดเดเตเดเต เดเตเดฒเตเดธเต เดเตเดฏเตเดฏเตเด, เดคเตเดเตผเดจเตเดจเต เดชเตเดคเดฟเดฏ เดเตเดกเต เดเตเตผเดเตเดเตเด, เด เดคเต เดฒเตเดจเดฟเดฏเตผ เดฒเตเดเดเตเดเดฟเดจเตเดณเตเดณเดฟเตฝ (#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 เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฃเด.
เดเดเตเดเตพ เดเตเดธเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดชเตเดคเตเดตเดพเดฏ เดเตเดเตเดชเดพเดเตเดเตพเดเตเดเตเดณเตเดณ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต (เดคเดเตผเดจเตเดจ เดเดชเตเดชเตเดเตพ, เดชเตเดฒเตเดฑเตเดฑเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต)
"เดเดณเตเดเดณเตเด เดจเตเดฑเตเดเตเดเตเดเดณเตเด" เดตเดฟเดญเดพเดเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดเดธเดจเด
เดเดฐเต เดเดฟเดชเตเดชเต เดตเตเดณเดฟเดฏเด เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตฝ เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดชเตเดคเดฟเดฏ เดฒเตเดจเดฟเดฏเตผ เดฒเตเดเดเตเดเต เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเตเดเตเดเต (#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):
- เดเดฎเตเดเต เดฌเดเตเดเตบ เดเดกเดฟเดเตพ (เดชเตเดชเตเดชเดฟเตพเดฌเดเตเดเตบ เดเตเดฑเดฏเตเดเตเดเตเด, เดเดกเต เดชเตเดชเตเดชเดฟเตพเดฌเดเตเดเตบ)
- เดเตเดเตเดธเตเดฑเตเดฑเต เดตเตเดฏเต เดเดกเดฟเดเตพ (เดจเดฎเตเดชเตผเดเดซเต เดชเตเดชเตเดชเดฟเตพเดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเตเดเตเดธเตเดฑเตเดฑเต, เดจเดฎเตเดชเตผเดเดซเต เดชเตเดชเตเดชเดฟเตพเดเตเดเตเดธเตเดฑเตเดฑเต เดตเตเดฏเต)
- 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):
เดเตเดฒเดพเดธเต MainActivity: 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()
}
}
เดฌเดเตเดเดฃเตเดเดณเตเดเตเดฏเตเด เดธเตเดตเดฟเดเตเดเตเดเดณเตเดเตเดฏเตเด เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเตเดเตเดฒเดฟเตป เดเดฒเตเดฒเดพเด เดตเดณเดฐเต เดฐเดธเดเดฐเดฎเดพเดฃเต! เดเดฒเตเดฒเดพ เดเตปเดเตเดฐเดฟเดฎเตเดจเตเดฑเต, เดกเดฟเดเตเดฐเดฟเดฎเตเดจเตเดฑเต เดซเดเดเตโเดทเดจเตเดเดณเดฟเดฒเตเดเตเดเตเด เดเตเดตเดเตเดฏเตเดณเตเดณ เดเตเดกเต เดเตเตผเดเตเดเตเด
(#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(เดเดคเต)
เดเตเดเดพเดคเต เดเตเดเตเดธเตเดฑเตเดฑเต เดตเดพเดเตเดเตผ (#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) {}
เดถเดฐเดฟ, เดเดชเตเดชเตเตพ เดเดฒเตเดฒเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต! เด
เดญเดฟเดจเดจเตเดฆเดจเดเตเดเตพ, เดจเดฟเดเตเดเตพ เดเตเดเตเดฒเดฟเดจเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด "เดเดฟเดชเตเดชเต เดเดพเตฝเดเตเดเตเดฒเตเดฑเตเดฑเตผ" เดเดดเตเดคเดฟเดฏเดฟเดเตเดเตเดฃเตเดเต.
เดธเตเดเดฟเตฝเดฌเตเดเตเดธเต เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต:
- เดฐเดฃเตเดเตเดตเตผเดทเดคเตเดคเต เดชเตเดฐเดพเดเตเดเดฟเดเตเดเตฝ เดเตเดดเตเดธเต
"เดเดพเตป เดเดฐเต เดตเตเดฌเต เดกเตเดตเดฒเดชเตเดชเตผ PRO เดเดฃเต" .- เดเตบเดฒเตเตป เดเตเดดเตเดธเต
"C# เดกเตเดตเดฒเดชเตเดชเตผ" .- เดชเตเดฐเดพเดฏเตเดเดฟเด เดตเตผเดท เดเตเดดเตเดธเต
"0 เดฎเตเดคเตฝ PRO เดตเดฐเตเดฏเตเดณเตเดณ PHP เดกเดตเดฒเดชเตเดชเตผ" .
เด เดตเดฒเดเดฌเด: www.habr.com