//(x,y)是否在view的区域内private boolean isTouchPointInView(View view, int x, int y) {        if (view == null) {            return false;        }        int[] location = new int[2];        view.getLocationOnScreen(location);        int left = location[0];        int top = location[1];        int right = left + view.getMeasuredWidth();        int bottom = top + view.getMeasuredHeight();        //view.isClickable() &&        if (y >= top && y <= bottom && x >= left                && x <= right) {            return true;        }        return false;    }
 @Override    public boolean dispatchTouchEvent(MotionEvent ev) {        int x = (int) ev.getRawX();        int y = (int) ev.getRawY();        if (isTouchPointInView(viewGroup, x, y)) {            iosInterceptFlag = true;            return super.dispatchTouchEvent(ev);        }        //do something    }

此处顺便说一下ev.getX()ev.getRawX()的区别
ev.getX():表示相对于控件自身左上角的X坐标
ev.getRawX():表示相对于手机屏幕左上角的X坐标

利用这个方法,也可以循环遍历找出点击的view了。

    private View getTouchTarget(View view, int x, int y) {        View targetView = null;        // 判断view是否可以聚焦        ArrayList TouchableViews = view.getTouchables();        for (View child : TouchableViews) {            if (isTouchPointInView(child, x, y)) {                targetView = child;                break;            }        }        return targetView;    }

利用这个方法isTouchPointInView(),也可以让子view截获touch事件,解决与parent的冲突(特别是当parent重写了dispatchTouchEvent(MotionEvent ev)方法)。

参考
http://blog.csdn.net/liufang1991/article/details/44303113

更多相关文章

  1. Android(安卓)View的scrollTo()、scrollBy() 和Scroller类总结
  2. android 通话记录去重查询方法
  3. android NDK开发 静态/动态注册 jni
  4. Android(安卓)WebView中无法用JS调用Java对象的问题
  5. 由一份 log 看 Binder
  6. GIT和repo使用方法:下载内核 android源码包
  7. android 网络编程 HttpGet类和HttpPost类使用详解
  8. Android本地存储——SQLite数据库
  9. Android列表实现单选、多选、全选、取消、删除

随机推荐

  1. Android的shape的使用
  2. Broadcast Receiver
  3. android 倒影
  4. android 多张图片动画方式轮播(转载)
  5. Vitamio打造android个性化得播放器
  6. Android 自定义文本框(带图片)
  7. Android 获取当前语言的方法1
  8. android 自动化测试 monkey
  9. Android的setTag
  10. Android延时执行的几种方法