Android Gallery 滑动停止监听方案

网上查了不少Gallery停止监听位置的方法,都是通过起线程然后睡眠来判断,我觉得这样没必要开线程,耗费资源,同意的举手。偶然看图库源码的时候看见一段代码,packages\apps\Gallery\src\com\android\camera\ViewImage.java1<strong>private void scheduleDismissOnScreenControls() {2mHandler.removeCallbacks(mDismissOnScreenControlRunner);3mHandler.postDelayed(mDismissOnScreenControlRunner,2000);//延迟45}</strong>再结合gallery的OnItemSelectedListener,就可以在滑动停止后执行一些操作:01class MyOnSelectLinstener implements OnItemSelectedListener {02@Override03public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {04scheduleDismissOnScreenControls();05}06public void onNothingSelected(AdapterView<?> parent) {07}0809}10private void scheduleDismissOnScreenControls() {11mHandler.removeCallbacks(mDismissOnScreenControlRunner);12mHandler.postDelayed(mDismissOnScreenControlRunner, 2000);13}在Runnable中执行操作,当Gallery滑动换页的时候,mHandler先把Runnable从列队中删除,其中的操作因此不会执行,然后在列队中添加延迟的Runnable,如果在延迟的时间内没有再次翻页就执行Runnable中的操作,这里可以在gallery中进行判断,拖动的时候可以不执行Runnable中的方法,具体就不说了。这样就可以起到滑动停止监听的作用。

Android Gallery获取滑动停止的位置

在网上看到很多人想得到Gallery滑动停止的位置,大部分是通过起线程的方式来获取,嘿嘿,看了一下源码查了API,

发现一个方法:

(boolean shouldCallback)

Since:

Whether or not to callback on anywhile the items are being flinged. If false, only the final selected item will cause the callback. If true, all items between the first and the final will cause callbacks.

大概意思是,设为false,中才返回gallery的停止位置position,滑动过程中不触发事件。

在中

public void onItemSelected(final AdapterView<?> parent, final View view,final int position, long id) {System.out.println("itme = " + id);}

当滑动停止后才返回Item,打印停止位置

,我提着行李,独自一人向远方走去,夕阳将我的身影拉得斜长,

Android Gallery 滑动停止监听方案

相关文章:

你感兴趣的文章:

标签云: