MapView的OnTouchListener返回布尔值的作用及使用方法
Android OnTouchListener onTouch方法返回值详解
返回值的作用
这个返回值是用来标识当前回调是否消费了本次触摸事件:
- 返回
true:代表你已经处理完这次触摸事件,事件不会再向下传递,也不会交给View本身的默认触摸处理逻辑执行 - 返回
false:代表你没有消费这次事件,事件会继续传递给View自身的onTouchEvent方法处理,也会继续分发给后续的触摸事件回调
返回值的流向
这个返回值不会作为MapView的字段存储在map实例中,它是直接返回给Android的触摸事件分发系统的ViewGroup事件分发逻辑使用的,仅用来控制事件传递链路,不会持久化保存在View对象里供外部读取,所以你无法通过读取MapView的某个字段拿到这个返回值。
需求实现方案
你要实现「用户触摸地图后停止自动对齐GPS中心点」的逻辑,不需要依赖系统的返回值存储,自己新增一个标志位即可,示例代码如下:
// 全局添加标志位,默认开启自动居中 private boolean isAutoCenterEnabled = true; MapView map; map = findViewById(R.id.view_map); map.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch (View v, MotionEvent event) { // 检测到触摸按下事件时关闭自动居中 if (event.getAction() == MotionEvent.ACTION_DOWN) { isAutoCenterEnabled = false; } // 照常返回false,不影响MapView本身的滑动、缩放等原生触摸逻辑 return false; } });
之后在原有自动对齐GPS的逻辑中,先判断isAutoCenterEnabled为true时再执行对齐操作即可,如果需要恢复自动居中,手动把这个标志位改回true即可。
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

