Android 單雙擊實現的方法步驟
更新時間:2020年01月12日 09:31:19 作者:幾圈年輪
這篇文章主要介紹了Android 單雙擊實現的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
記錄單擊、雙擊實現過程,進行簡單的封裝,便于復用,包括常用的軟件雙擊退出。
雙擊實現:記錄第一次點擊時間,在設定時間內再次點擊,則返回監(jiān)聽事件,否則不做處理;Application雙擊退出亦是同樣的實現邏輯。
/**
* 雙擊實現
*
* @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();
}
}
單擊及雙擊實現:使用Handler進行延時消息發(fā)送,通過計數獲取點擊次數,若設定時間內點擊兩次則返回雙擊事件;單次,則返回單擊事件。
/**
* 單擊、雙擊實現
*
* @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);
}
/**
* 單擊實現
*
* @param v 視圖
*/
public abstract void onSingleClick(View v);
/**
* 雙擊實現
*
* @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í)行過程的機制,它既可以用于程序調試,也可以用于產品運營中的事件記錄;在平時開發(fā)過程中經常需要與log打交道,所以很有必要了解log的使用方法及簡單的原理,感興趣的朋友可以了解下啊2013-01-01

