安卓button點選事件設定
遮蔽多次點選事件
1 2 3 4 5 6 7 8 9 10 11 12 |
"您點選了測試網路按鈕..." , Toast.LENGTH_LONG).show();
|
這裡的fastButton就是一個普通的按鈕元件,然後我們為該元件設定了點選事件,並且傳入的是我們自定義的OnClickListener類(這裡需要說明的是,不只是button元件任何View元件的點選事件都是可以的,這裡只是以Button元件為例子),這裡預設的遮蔽多次點選事件的時間間隔為900ms,也就是說當我們為元件設定了我們自定義的點選事件監聽之後,假如有兩次點選事件,並且第二次點選時若距離第一次點選事件小於0.9s,則第二次點選不會起作用;
遮蔽網路情況
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
同樣的,這裡的networkButton也是我們自定義的一個按鈕元件,我們為其設定了點選事件監聽,並傳入了我們自定義的OnNetworkClickListener類,可以發現OnNetworkClickListener類中有兩個回撥方法,其中onNetworkClick方法用於執行當前裝置有網的情況,而onNoNetworkClick方法用於處理當前裝置沒有網路的後續操作;
遮蔽是否登入情況
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
這裡的loginButton同樣是我們自定義的一個按鈕元件,併為其設定了我們的OnLoginedClickListener類,然後其中有三個回撥方法,
其中方法isLogined用於判斷當前使用者是否登入,返回為true則表示使用者已經登入,返回為false則表示使用者未登入,具體實現邏輯需要在業務層實現,方法onLoginedClick用於執行登入之後的邏輯,而方法onNoLoginedClick用於執行使用者尚未登入的邏輯。
這就是這個類庫大概的實現功能,說完功能之後我們來看一下其具體實現邏輯:
實現方式
上面我們講解了該類庫的使用方式,那麼我們是如何實現的呢?下面我們看一下該類庫的原始碼。
防止按鈕重複點選
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
以上就是我們防止按鈕重複點選的OnFastClickListener的原始碼了,可以看到這裡我們定義了防止重複點選的OnClickListener物件,並重寫了其onClick方法,可以看到我們在onClick方法中呼叫了isFastDoubleClick方法,該方法就是具體實現是否重複點選邏輯的,當按鈕上一次點選的時間與本次點選的時間間隔小於900ms的時候isFastDoubleClick方法就會返回為true,這時候onClick方法直接返回,不在執行後續的onFastClick方法,否則就直接執行onFastClick方法。然後我們在為我們的View元件設定點選事件的時候只需要重寫onFastClick方法就好了。。。
按鈕點選監聽網路狀況
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
和剛剛的防止按鈕重複點選事件類似,這裡也是重寫了自己的OnClickListener物件,然後重寫了其onClick方法,並在其中執行isNetworkConnected方法,該方法就是判斷是否當前裝置是否有網路,若有網路則執行onNetworkClick方法,若無網路則執行onNoNetworkClick方法,這樣當我們為自己的View元件設定點選事件的時候只需要為View元件設定onClickListener為我們自定義的OnClickListener物件,然後重寫其中的onNetworkClick和onNoNetworkClick方法,其中onNetworkClick方法為有網路的回撥方法,而onNoNetworkClick方法為無網路的回撥方法。
按鈕點選監聽是否登入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
這裡也是通過定義自身的OnClickListener類,然後重寫其中的onClick方法,並在其中執行isLogined方法,該方法用於返回使用者是否登入的邏輯判斷,並且也是一個抽象的方法,所以也需要我們在業務層實現其具體的邏輯,然後我們重寫了其中的onLoginedClick方法和onNoLoginedClick方法,其中onLoginedClick方法為使用者登入之後的回撥方法,而onNoLoginedClick方法為使用者未登入之後執行的回撥方法。
定製化執行相應的業務邏輯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|