什么是电子商务网站建设的基本要求,网站推广服务 商务服务,wordpress 提权攻击,抚州seo排名在android 编程时#xff0c;有时候要实现当Button一直按下的时候#xff0c;执行一些逻辑代码#xff0c;当按钮弹起的时候#xff0c;终止这些逻辑代码的执行。 比如在 设置页面的滑动开关时#xff0c;如果不监听ACTION_CANCEL#xff0c;在滑动到中间时#xff0c;如… 在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造成按下的逻辑一直会执行。 为了解决这个问题上述代码可以需要修改为 switch (event.getAction()) {case MotionEvent.ACTION_DOWN://按钮按下逻辑breakcase MotionEvent.ACTION_UP://按钮弹起逻辑breakcase MotionEvent.ACTION_CANCEL://按钮弹起逻辑break
} ACTION_UP处理的是在Button原位置弹起ACTION_CANCEL处理的是焦点离开Button两者都需要处理 才能解决这个问题。 示例我这个是在按下的时候让按钮放大手抬起的时候缩小操作 login_with_sina.setOnTouchListener(new OnTouchListener() {public boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:System.out.println(key_down);AnimUtil.showOnFocusAnimation(login_with_sina);break;case MotionEvent.ACTION_UP:System.out.println(key_down);AnimUtil.showLooseFocusAinimation(login_with_sina);break;case MotionEvent.ACTION_CANCEL:System.out.println(key_down);AnimUtil.showLooseFocusAinimation(login_with_sina);break;}return true;}}); 转载于:https://www.cnblogs.com/yejiurui/p/3770786.html