博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Gallery 滑动停止监听方案(不起线程)
阅读量:7106 次
发布时间:2019-06-28

本文共 1266 字,大约阅读时间需要 4 分钟。

hot3.png

转载请注明地址:

网上查了不少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中的相关操作,达到滑动停止监听的效果。

 

 

 

 

转载于:https://my.oschina.net/zhanyu/blog/70724

你可能感兴趣的文章
jetty使用terracotta集群配置
查看>>
比较实用的Cron表达式
查看>>
干系人的管理
查看>>
第五章:浏览器的嗅探和特征侦测
查看>>
去年这时候又辞退了一个老油条,不知道他现在是否在开公司了,可以对比一下混工资的水平...
查看>>
将Vi打造成一个IDE(适合新手和懒人)
查看>>
Solaris目录结构
查看>>
shell自动监控重启tomcat脚本
查看>>
邮箱验证js
查看>>
安装samba软件包失败,求解?
查看>>
企业要什么样的“云”
查看>>
组策略部署软件之四:部署Service pack和补丁
查看>>
【开篇导航】—Entity Framework实例详解
查看>>
SQL Server 环形缓冲区(Ring Buffer) -- SQL Server的Ring Buffer类型
查看>>
OutCallReceiver
查看>>
网络的理解2
查看>>
python中的map、filter、reduce函数
查看>>
Exchange 2016 之分层通讯簿
查看>>
【Java例题】4.3 3. 使用Gauss消元法求解n元一次方程组的根,
查看>>
SSH 认证
查看>>