Android 為View實現雙擊效果

來源:互聯網
上載者:User

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);

  

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.