在android界面编程时,经常要实现当Button一直按下的时候,执行一些逻辑代码,当按钮弹起的时候,终止这些逻辑代码的执行。比如在设计设置页面的滑动开关时,如果不监听ACTION_CANCEL,在滑动到中间时,如果你手指上下移动,就是移动到开关控件之外,就会造成开关的按钮停顿在中间位置。
在一般情况下,实现这个逻辑需要注册OnTouchListener监听,OnTouchListener的OnTouch方法中代码如下:
switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //按钮按下逻辑 break; case MotionEvent.ACTION_UP: //按钮弹起逻辑 break; } 在一般情况下,这样写是没有问题的,但是当手指快速滑过这个Button时,就会发现只触发了
ACTION_DOWN时间,没有触发ACTION_UP,就会导致,按钮按下的逻辑代码一直会执行。当焦点移动到件之外,此时会触发ACTION_CANCEL,而不是ACTION_UP,造成按下的逻辑一直会执行。意思就是,当用户保持按下操作,并从你的控件转移到外层控件时,会触发ACTION_CANCEL。为了解决这个
问题,上述代码需要修改为:
switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //按钮按下逻辑 break; case MotionEvent.ACTION_UP: //按钮弹起逻辑 break; case MotionEvent.ACTION_CANCEL: //按钮弹起逻辑 break; }
ACTION_UP处理的是在Button原位置弹起,ACTION_CANCEL处理的是焦点离开Button,两者都需要处理
,才能解决这个问题。
相关推荐
tutorial create image button in android
Android Button事件的实现,初学android的好帮手
android Button常用监听事件的几种类型
各种风格的VC BUTTON,对mfc button进行封装
Android 对 Button 的三种监听 Android 对 Button 的三种监听 Android 对 Button 的三种监听 https://blog.csdn.net/nicepainkiller/article/details/85038886
相信大家都遇到过 Android listview和button点击事件冲突问题 网上有很多解决方法 但是不全面 按照网上说的通常是在ListView的Item布局中给Button加 android:focusable="false"在Item根布局加android:...
'android.intent.action.MEDIABUTTON' 扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)。 'android.intent.action.MEDIA_BAD_REMOVAL' 用户想要移除扩展介质(拔掉扩展卡)...
HTML_Button[1].onclick_事件汇总HTML_Button[1].onclick_事件汇总
java android activity例程
安卓 android 自定义 switch button,滑动开关,绝对漂亮美观
\Free_Button_Pack_by_celerayted\4.Free_Button_Pack_by_celerayted\freebuttonpack.psd
Loading Button Android
Android源码——超炫的Path Button效果源码_new_68.7z
android 自定义各种风格button
自定义安卓按钮的代码,更改颜色代码可以更改按钮在点击按钮、松开按钮的颜色以及渐变的颜色
Android源码——超炫的Path Button效果源码_new_68.zip
c# treeview 添加节点后面button触发事件
Button using Arduino Digital Port
fastButton可以解决两个问题:1.click在移动端使用时有300ms的延时,使用fastButton可以降低到10ms;2.tap在安卓端使用时会出现触发两次问题,使用fastButton可以解决这个问题。使用说明在压缩包中。