展会信息港展会大全

Android Gallery 滑动停止监听方案(不起线程)
来源:互联网   发布日期:2015-10-03 10:42:38   浏览:2648次  

导读:网上查了不少Gallery停止监听位置的方法,都是通过起线程然后睡眠来判断,我觉得这样没必要开线程,耗费资源,同意的举手。偶然看图库源码的时候看见一段代码,packages\apps\Gallery\src\com\android\camera\Vi......

网上查了不少Gallery停止监听位置的方法,都是通过起线程然后睡眠来判断,我觉得这样没必要开线程,耗费资源,同意的举手。

偶然看图库源码的时候看见一段代码,packages\apps\Gallery\src\com\android\camera\ViewImage.java

private void scheduleDismissOnScreenControls() {

mHandler.removeCallbacks(mDismissOnScreenControlRunner);

mHandler.postDelayed(mDismissOnScreenControlRunner,2000);//延迟

}

再结合gallery的OnItemSelectedListener,就可以在滑动停止后执行一些操作:

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中的方法,具体就不说了。

Gallery不停滑动的时候,Handler列队中有Runnable的话,就会从列队中删除,Gallery停止后的相关操作放在 Runnable中执行,因为删除Runnable之后又在列队中添加了同一个Runnable,设置了延迟,比如两秒,这时候再次滑动Gallery会 重复执行删除了添加Runnable,如果添加延迟的Runnable之后没有滑动,两秒后就会执行Runnable中的相关操作,达到滑动停止监听的效 果。

赞助本站

人工智能实验室

相关热词: Gallery 滑动

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港