Android 單雙擊實現(xiàn)的方法步驟
記錄單擊、雙擊實現(xiàn)過程,進行簡單的封裝,便于復用,包括常用的軟件雙擊退出。
雙擊實現(xiàn):記錄第一次點擊時間,在設定時間內再次點擊,則返回監(jiān)聽事件,否則不做處理;Application雙擊退出亦是同樣的實現(xiàn)邏輯。
/**
* 雙擊實現(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);
}
調用方式:
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();
}
}
單擊及雙擊實現(xiàn):使用Handler進行延時消息發(fā)送,通過計數(shù)獲取點擊次數(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);
}
/**
* 單擊實現(xiàn)
*
* @param v 視圖
*/
public abstract void onSingleClick(View v);
/**
* 雙擊實現(xiàn)
*
* @param v 視圖
*/
public abstract void onDoubleClick(View v);
}
調用方式:
view.setOnClickListener(new BaseClickListener() {
@Override
public void onSingleClick(View v) {
}
@Override
public void onDoubleClick(View v) {
}
});
主要重寫了View的OnClickListener事件,也可以重寫OnTouchListener進行處理;采用抽象類抽象方法,也可使用接口封裝進行處理。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android系統(tǒng)開發(fā)中l(wèi)og的使用方法及簡單的原理
LOG是廣泛使用的用來記錄程序執(zhí)行過程的機制,它既可以用于程序調試,也可以用于產(chǎn)品運營中的事件記錄;在平時開發(fā)過程中經(jīng)常需要與log打交道,所以很有必要了解log的使用方法及簡單的原理,感興趣的朋友可以了解下啊2013-01-01
android 仿微信demo——登錄功能實現(xiàn)(移動端)
本篇文章主要介紹了微信小程序-閱讀小程序實例(demo),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望能給你們提供幫助2021-06-06
Android使用Room操作數(shù)據(jù)庫流程詳解
谷歌推薦使用Room操作數(shù)據(jù)庫,Room在 SQLite 上提供了一個抽象層,在充分利用 SQLite強大功能的同時,能夠流暢地訪問數(shù)據(jù)庫2022-11-11

