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(){@Overridepublic 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);