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

網上查瞭不少Gallery停止監聽位置的方法,都是通過起線程然後睡眠來判斷,我覺得這樣沒必要開線程,耗費資源,同意的舉手。

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

 

1
<strong>private void scheduleDismissOnScreenControls() {
2
        mHandler.removeCallbacks(mDismissOnScreenControlRunner);
3
        mHandler.postDelayed(mDismissOnScreenControlRunner,2000);//延遲
4
 
5
}</strong>
         再結合gallery的OnItemSelectedListener,就可以在滑動停止後執行一些操作:

 

01
class MyOnSelectLinstener implements OnItemSelectedListener {
02
    @Override
03
    public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
04
         scheduleDismissOnScreenControls();
05
    }
06
    public void onNothingSelected(AdapterView<?> parent) {
07
    }
08
    
09
}
10
private void scheduleDismissOnScreenControls() {
11
        mHandler.removeCallbacks(mDismissOnScreenControlRunner);
12
        mHandler.postDelayed(mDismissOnScreenControlRunner, 2000);
13
}
  在Runnable中執行操作,當Gallery滑動換頁的時候,mHandler先把Runnable從列隊中刪除,其中的操作因此不會執行,然後在列隊中添加延遲的Runnable,如果在延遲的時間內沒有再次翻頁就執行Runnable中的操作,這裡可以在gallery中進行判斷,拖動的時候可以不執行Runnable中的方法,具體就不說瞭。

這樣就可以起到滑動停止監聽的作用。

作者:閃星

發佈留言