Android 中View只能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决办法
来源:互联网 发布:旅游网络销售范围 编辑:程序博客网 时间:2024/05/21 17:03
昨天晚上调试了一晚上,在LinearLayout上接收屏幕动作,但是出现了问题, 下面的代码是本人调的代码
</pre><pre name="code" class="java">private int pressedArrow;public class onSetterTouchListener implements OnTouchListener {@Overridepublic boolean onTouch(View v, MotionEvent event) {float pt = event.getX();switch(event.getAction()) {case MotionEvent.ACTION_DOWN:if (pt > last_strpos && pt < last_endpos) {if (pt - last_strpos <= last_endpos - pt) {cur_strpos = pt;pressedArrow = R.id.start_pos;} else {cur_endpos = pt;pressedArrow = R.id.end_pos;}} else if (pt <= last_strpos) {cur_strpos = pt;pressedArrow = R.id.start_pos;} else if (pt >= last_endpos) {cur_endpos = pt;pressedArrow = R.id.end_pos;}requestLayout();Log.d(TAG, "down " + cur_strpos + " " + cur_endpos);last_endpos = cur_endpos;last_strpos = cur_strpos;break;case MotionEvent.ACTION_MOVE:Log.d(TAG, "MOVE " + cur_strpos + " " + cur_endpos);if (pressedArrow == R.id.start_pos) {if (pt < last_endpos)cur_strpos = pt;} else if (pressedArrow == R.id.end_pos) {if (pt > last_strpos)cur_endpos = pt;}requestLayout();last_endpos = cur_endpos;last_strpos = cur_strpos;break;case MotionEvent.ACTION_UP:updateCalibrator((int)cur_strpos);break;}return false;}}
这样一看这个OnTouchListener 的复写应该没什么问题,结尾处return false 代表该事件在此处已经被消费了,可是打开DDMS查看打印日志,当手指滑动到设置了上面Touch监听器的ImageView时,总是打印不出来ACTION_MOVE这里,很明显是根本没有进去,后来各种查问题都查不到,因为ACTION_DOWN是可以进入的,但是ACTION_MOVE和ACTION_UP却不行,已经不是代码的问题了。
各种查找才发现,要把设置监听的这个View的属性设置成 android:clickable="true" 这样才可以响应ACTION_MOVE和ACTION_UP了。
<ImageView android:id="@+id/track" android:layout_width="match_parent" android:layout_height="20dp" android:clickable="true" android:layout_gravity="center" android:background="#00000000" android:baselineAlignBottom="true" android:visibility="visible" />
在这里记下了,也给别人提供一个方便
1 0
- Android 中View只能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决办法
- View只能获得ACTION_DOWN消息, ACTION_MOVE消息接收不到
- 自定义View想使用Scroller实现滑动效果,但是事件接收出现问题,只收到ACTION_DOWN,而无法收到ACTION_MOVE, ACTION_UP等消息的处理
- Android 自定义View可以监听ACTION_DOWN却监听不到ACTION_MOVE和ACTION_UP
- android事件传递ACTION_DOWN、ACTION_MOVE、ACTION_UP的深入研究
- Android 自定义view之后只能监听到MotionEvent.ACTION_DOWN的解决办法
- 安卓关于自定义View只能接收ACTION_DOWN事件问题的解决
- OnTouch事件ACTION_DOWN,ACTION_MOVE,ACTION_UP的事件拦截
- SurfaceView监听不到MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP事件的解决办法
- 安卓——问题:控件(view)的OnTouch事件只能获取到ACTION_DOWN事件,UP、MOVE等事件都无法获取到
- 新手求教,请问ACTION_DOWN和ACTION_UP什么时候触发呢?
- winsock为什么只能收到http头信息,无法接收到文件的本身呢?
- android 应用停止后无法接收到广播
- Android中发送和接收短信
- Android 中发送和接收短信
- Android中发送和接收短信
- android 在自定义的view中接收不到onkeydown事件
- android(仿QQ向右滑动退出)在viewpager中onTouchEvent无法监听到ACTION_DOWN的getX的值
- permission is only granted to system apps
- [C语言][LeetCode][88]Merge Sorted Array
- AJAX
- Linux中的cp命令
- sscanf的高级用法
- Android 中View只能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决办法
- HDU 3405 World Islands (prim算法)
- 多线程并发库高级应用 之 其它同步工具类
- 多线程并发库高级应用 之 java5中的线程并发库--线程池、Callable&Future
- .net中使用ODP.net访问Oracle数据库(无客户端部署方法)
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- 插件失效
- Qt助手翻译篇之—— QGrapicsItem类
- 最小堆解决topK问题