iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
AI & Data

AI Facial Expression Recognition: Data, Model, Application系列 第 26

[Day 26] Android Studio 七日隕石開發:噓! 我正在監聽這個元件

前言

昨天我們設計好UI介面後,
我們有一堆按鈕和文字框的"元件",
要讓這些元件活起來,我們必須"綁定"元件,
將元件與Kotlin程式碼互相連結。

例如:將按鈕綁定到Kotlin中的函數,使得按下按鈕後可以出現特定文字或是改變顏色。
而元件也可以被不同的"事件"觸發,
像是短按和長按就是不同"事件",

我們藉由"監聽"元件,使得當特定"事件"發生時,可以執行"綁定後"的功能。


監聽器範例(click button to open the camera)

  1. 官網範例
    綁定元件、設定button變數: val button: Button = findViewById(R.id.corky)
    監聽"click事件": button.setOnClickListener(this)
    設定button被click時的功能: fun onClick(...)
class ExampleActivity : Activity(), OnClickListener {
  
    protected fun onCreate(savedValues: Bundle) {
        val button: Button = findViewById(R.id.corky)
        button.setOnClickListener(this)
    }

    // Implement the OnClickListener callback
    fun onClick(v: View) {
        // do something when the button is clicked
    }
}
  1. 專案範例(打開相機傳送拍照結果)
    綁定btn_photo+監聽click事件: findViewById<Button>(R.id.btn_photo).setOnClickListener {...}
    開啟照相機、存相片到intent: MediaStore.ACTION_IMAGE_CAPTURE
    發送intent: startActivityForResult(intent, 0 )
  • intent右邊的"0"是requestCodeonActivityResult(後幾天會介紹)會根據requestCode判斷接收到的對象
findViewById<Button>(R.id.btn_photo).setOnClickListener {
    //建立一個相片的 Intent 物件
    val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    startActivityForResult(intent, 0)
}

其他監聽器?

除了OnClickListener(短按)之外,常用的還有:

  1. OnLongClickListener (長按)
  2. OnKeyListener (按鍵)
  3. OnTouchListener (按到、滑到)
  4. OnCheckedChangeListener (狀態改變)

上一篇
[Day 25] Android Studio 七日隕石開發:一起來布局 App 介面!
下一篇
[Day 27] Android Studio 七日隕石開發:又到了開啟相簿的季節
系列文
AI Facial Expression Recognition: Data, Model, Application30

尚未有邦友留言

立即登入留言