網上查瞭不少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中的方法,具體就不說瞭。
這樣就可以起到滑動停止監聽的作用。
作者:閃星