Android Gallery 滑動中止監聽方案(不起線程)

轉載請註明地址:http://my.oschina.net/zhanyu/blog/70724java

網上查了很多Gallery中止監聽位置的方法,都是經過起線程而後睡眠來判斷,我以爲這樣不必開線程,耗費資源,贊成的舉手android

偶然看圖庫源碼的時候看見一段代碼,packages\apps\Gallery\src\com\android\camera\ViewImage.javaapp

 

private void scheduleDismissOnScreenControls() { mHandler.removeCallbacks(mDismissOnScreenControlRunner); mHandler.postDelayed(mDismissOnScreenControlRunner,2000);//延遲 }

         再結合gallery的OnItemSelectedListener,就能夠在滑動中止後執行一些操做:ide

 

class MyOnSelectLinstener implements OnItemSelectedListener {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
         scheduleDismissOnScreenControls();
    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
    
}
private void scheduleDismissOnScreenControls() {
        mHandler.removeCallbacks(mDismissOnScreenControlRunner);
        mHandler.postDelayed(mDismissOnScreenControlRunner, 2000);
}

  在Runnable中執行操做,當Gallery滑動換頁的時候,mHandler先把Runnable從列隊中刪除,其中的操做所以不會執行,而後在列隊中添加延遲的Runnable,若是在延遲的時間內沒有再次翻頁就執行Runnable中的操做,這裏能夠在gallery中進行判斷,拖動的時候能夠不執行Runnable中的方法,具體就不說了。post

Gallery不停滑動的時候,Handler列隊中有Runnable的話,就會從列隊中刪除,Gallery中止後的相關操做放在Runnable中執行,由於刪除Runnable以後又在列隊中添加了同一個Runnable,設置了延遲,好比兩秒,這時候再次滑動Gallery會重複執行刪除了添加Runnable,若是添加延遲的Runnable以後沒有滑動,兩秒後就會執行Runnable中的相關操做,達到滑動中止監聽的效果。.net

相關文章
相關標籤/搜索