Android 默認是沒有雙擊事件的,不知道為什么~~.. 不多說,直接上代碼。
首先增加一個雙擊事件接口:
public interface OnDoubleClickListener {
public void OnSingleClick(View v);
public void OnDoubleClick(View v);
}
然后再添加一個方法:
/**
* 注冊一個雙擊事件
* 改自網友的,增加 Handler 處理,如果不加這個,會引起線程安全之類錯誤。
*/
public static void registerDoubleClickListener(View view, final OnDoubleClickListener listener){
if(listener==null) return;
view.setOnClickListener(new View.OnClickListener() {
private static final int DOUBLE_CLICK_TIME = 350; //雙擊間隔時間350毫秒
private boolean waitDouble = true;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
listener.OnSingleClick((View)msg.obj);
}
};
//等待雙擊
public void onClick(final View v) {
if(waitDouble){
waitDouble = false; //與執行雙擊事件
new Thread(){
public void run() {
try {
Thread.sleep(DOUBLE_CLICK_TIME);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //等待雙擊時間,否則執行單擊事件
if(!waitDouble){
//如果過了等待事件還是預執行雙擊狀態,則視為單擊
waitDouble = true;
Message msg = handler.obtainMessage();
msg.obj = v;
handler.sendMessage(msg);
}
}
}.start();
}else{
waitDouble = true;
listener.OnDoubleClick(v); //執行雙擊
}
}
});
}
最后注冊事件:
ImageView imageview = (ImageView)findViewById(R.id.imageview1);
registerDoubleClickListener(imageview, this);
