iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 2
1

Kotlin 30 天,通過每天一個小 demo 學習 Android 開發系列 第 2

Kotlin 開發第 2 天 Discount (Seekbar + Keyboard)

Discount

這是練習寫 Android App 的第二天。

這個應用是讓使用者先輸入一個價格,然後通過拖動 Seekbar 的方式來計算打折情況。

  • 一個 EditView 可以通過 soft keyboard 輸入價格
  • 一個 SeekBar 可以通過拖動來改變打折數
  • 兩個 TextView 分別用來顯示打折金額、打折後價格

Component

  • EditText – 可以用來輸入的框,可以通過設定 inputType 來改變 soft keyboard 類型
  • TextView – 應該類似於 iOS 的 UILabel,用來顯示文字的。
  • SeekBar – 相當於 iOS 的 UISlider,通過拖動圓點來取值。

事件監聽

SeekBar 通過加入 setOnSeekBarChangeListener,來達到監聽值改變的情況,這裡不確定用到的是不是「匿名內部類」的概念。

// 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?) {}
})

顯示帶小數的值

改變 format

discountTextView.text = String.format("%.2f", discount)

String 中插入值「$Variable」

"打折($p1%)"

筆記

  • EditView 類似於 iOS 中的 UITextField,只不過我在嘗試取值的時候遇到一個問題。
priceEditText.text

通過 .text 我以為已經拿到內容了,結果是一個 Editable 對象,然後要 .toString() 才是真的取到其中的值。

參考


上一篇
Kotlin 開發第 1 天 Tap Counter (Button + TextView)
下一篇
Kotlin 開發第 3 天 image picker (Intent + ImageView)
系列文
Kotlin 30 天,通過每天一個小 demo 學習 Android 開發11

尚未有邦友留言

立即登入留言