Android 單雙擊實(shí)現(xiàn)的方法步驟
記錄單擊、雙擊實(shí)現(xiàn)過程,進(jìn)行簡單的封裝,便于復(fù)用,包括常用的軟件雙擊退出。
雙擊實(shí)現(xiàn):記錄第一次點(diǎn)擊時(shí)間,在設(shè)定時(shí)間內(nèi)再次點(diǎn)擊,則返回監(jiān)聽事件,否則不做處理;Application雙擊退出亦是同樣的實(shí)現(xiàn)邏輯。
/** * 雙擊實(shí)現(xiàn) * * @author 幾圈年輪 */ public abstract class BaseDoubleClickListener implements View.OnClickListener { private static final long DOUBLE_TIME = 500; private static long lastClickTime = 0; @Override public void onClick(View v) { long currentTimeMillis = System.currentTimeMillis(); if (currentTimeMillis - lastClickTime < DOUBLE_TIME) { onDoubleClick(v); } lastClickTime = currentTimeMillis; } /** * 雙擊事件 * * @param v 視圖 */ public abstract void onDoubleClick(View v); }
調(diào)用方式:
view.setOnClickListener(new BaseDoubleClickListener() { @Override public void onDoubleClick(View v) { } });
Application雙擊退出:
private long onBackPressedTime; @Override public void onBackPressed() { long timeSpan = System.currentTimeMillis() - onBackPressedTime; onBackPressedTime = System.currentTimeMillis(); if (timeSpan > 2000) { Toast.makeText(this, getResources().getString(R.string.exit), Toast.LENGTH_SHORT).show(); } else { super.onBackPressed(); } }
單擊及雙擊實(shí)現(xiàn):使用Handler進(jìn)行延時(shí)消息發(fā)送,通過計(jì)數(shù)獲取點(diǎn)擊次數(shù),若設(shè)定時(shí)間內(nèi)點(diǎn)擊兩次則返回雙擊事件;單次,則返回單擊事件。
/** * 單擊、雙擊實(shí)現(xiàn) * * @author 幾圈年輪 */ public abstract class BaseClickListener implements View.OnClickListener { private static final int TIMEOUT = 400; private int clickCount = 0; private Handler handler; protected BaseClickListener() { handler = new Handler(); } @Override public void onClick(View v) { clickCount++; handler.postDelayed(new Runnable() { @Override public void run() { if (clickCount == 1) { onSingleClick(v); } else if (clickCount == 2) { onDoubleClick(v); } handler.removeCallbacksAndMessages(null); clickCount = 0; } }, TIMEOUT); } /** * 單擊實(shí)現(xiàn) * * @param v 視圖 */ public abstract void onSingleClick(View v); /** * 雙擊實(shí)現(xiàn) * * @param v 視圖 */ public abstract void onDoubleClick(View v); }
調(diào)用方式:
view.setOnClickListener(new BaseClickListener() { @Override public void onSingleClick(View v) { } @Override public void onDoubleClick(View v) { } });
主要重寫了View的OnClickListener事件,也可以重寫OnTouchListener進(jìn)行處理;采用抽象類抽象方法,也可使用接口封裝進(jìn)行處理。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程實(shí)現(xiàn)google消息通知功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)google消息通知功能,結(jié)合具體實(shí)例形式分析了Android消息處理及C#服務(wù)器端與google交互的相關(guān)操作技巧,需要的朋友可以參考下2017-06-06Android編程實(shí)現(xiàn)Dialog窗體監(jiān)聽的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)Dialog窗體監(jiān)聽的方法,結(jié)合實(shí)例形式分析了Android針對(duì)Dialog對(duì)話框窗體事件監(jiān)聽與響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2017-03-03Android平臺(tái)中實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的5種方式
這篇文章主要為大家分享了介紹了Android平臺(tái)中實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)技術(shù)的5種方式,供大家學(xué)習(xí),感興趣的小伙伴們可以參考一下2016-06-06Android開發(fā)中使用mms模塊收發(fā)單卡和雙卡短信的教程
這篇文章主要介紹了Android開發(fā)中使用mms模塊收發(fā)單卡和雙卡短信的教程,文中舉了MOTO XT800手機(jī)(估計(jì)已經(jīng)落伍很久了--)的例子來說明如何解決雙卡雙待時(shí)的短信異常問題,需要的朋友可以參考下2016-02-02android studio生成aar包并在其他工程引用aar包的方法
本篇文章主要介紹了android studio生成aar包并在其他工程引用aar包的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11Android開發(fā)中PopupWindow用法實(shí)例分析
這篇文章主要介紹了Android開發(fā)中PopupWindow用法,結(jié)合實(shí)例形式分析了PopupWindow彈出窗口效果的使用技巧,需要的朋友可以參考下2016-02-02TextView實(shí)現(xiàn)圖文混合編排的方法
這篇文章主要為大家詳細(xì)介紹了TextView實(shí)現(xiàn)圖文混合編排的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Android ExpandableListView實(shí)現(xiàn)下拉刷新和加載更多效果
這篇文章主要為大家詳細(xì)介紹了Android ExpandableListView實(shí)現(xiàn)下拉刷新和加載更多效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06