iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
Mobile Development

Android Kotlin開發 -小嫩雞的30篇精選筆記系列 第 8

Android x Kotlin : 自定義Listener,預防神經病的發瘋式連續點擊

簡介

寫App時往往要考慮到使用者的諸多不良操作,其中一項就是要預防一些神經病無腦的發瘋式連續點擊。於是我們需要自定義一個監聽器,判斷使用者是不是在短時間內觸發同一顆按鈕兩次以上。

1. 宣告一個class

寫一個class,裡面定義一個方法來判斷是否快速連續點擊,是的話回傳true,否則回傳false。

class PreventFastDoubleClick(){
    companion object{
        private var lastClickTime:Long = 0

        fun isFastDoubleClick():Boolean{
        
             //取得現在時間
             var time = System.currentTimeMillis()
             //timeD :上次點擊時間與現在時間的時間差
             var timeD = time - lastClickTime
             if(timeD>0 && timeD<500){
                 //若小於0.5秒則判定是快速點擊
                 return true
             }
             else{
                 //若大於0.5秒,把現在時間設為上次點擊時間
                 lastClickTime = time
                 return false
             }
        }

    }
}

//"->"後面表示要回傳的型態。Unit表示此方法不回傳值
//把function當成參數傳入另一個function,此為高階函式的用法。
//下一篇會詳細介紹高階函式ㄉ
fun View.setMyClickListener(a:() ->Unit ){
    setOnClickListener {
        if(!PreventFastDoubleClick.isFastDoubleClick()){
            a.invoke()
        }
        else Toast.makeText(context,"你按太快了",Toast.LENGTH_SHORT).show()
    }


}

2. MainActivity

這裡的btn是為你在layout裡面定義的按鈕id。

btn.setMyClickListener {
            Toast.makeText(this,"你按了一下按鈕",Toast.LENGTH_SHORT).show()
        }
    ```

上一篇
Android x Kotlin : tabLayout與viewPager的美麗結合
下一篇
Android x Kotlin : 全螢幕: 隱藏狀態欄與底部導覽欄、設定狀態欄底色
系列文
Android Kotlin開發 -小嫩雞的30篇精選筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言