這是練習寫 Android App 的第二天。
這個應用是讓使用者先輸入一個價格,然後通過拖動 Seekbar 的方式來計算打折情況。
- 一個 EditView 可以通過 soft keyboard 輸入價格
- 一個 SeekBar 可以通過拖動來改變打折數
- 兩個 TextView 分別用來顯示打折金額、打折後價格
Component
- EditText – 可以用來輸入的框,可以通過設定 inputType 來改變 soft keyboard 類型
- TextView – 應該類似於 iOS 的 UILabel,用來顯示文字的。
- SeekBar – 相當於 iOS 的 UISlider,通過拖動圓點來取值。
事件監聽
SeekBar 通過加入 setOnSeekBarChangeListener,來達到監聽值改變的情況,這裡不確定用到的是不是「匿名內部類」的概念。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// progressBar progressBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) { value = priceEditText.text.toString().removePrefix("$").toFloatOrNull() ?: 0f percentTextView.text = "打折($p1%)" calculateResult() } override fun onStartTrackingTouch(p0: SeekBar?) {} override fun onStopTrackingTouch(p0: SeekBar?) {} }) |
顯示帶小數的值
通過 String.format 顯示不同 format 的值
1 |
discountTextView.text = String.format("%.2f", discount) |
String 中插入值「$Variable」
1 |
"打折($p1%)" |
筆記
- EditView 類似於 iOS 中的 UITextField,只不過我在嘗試取值的時候遇到一個問題。
1 |
priceEditText.text |
通過 .text 我以為已經拿到內容了,結果是一個 Editable 對象,然後要 .toString() 才是真的取到其中的值。
參考
- 官方文件 – Formatter
- 可以在 Github 上看到對應的 Source Code