最近研究android中launcher的源码中DragController中的onTouchEvent在屏幕选中桌面图标并且拖动的情况下会执行,如果不选中的话不会执行。研究源码发现,DragController中有如下代码。

public boolean onInterceptTouchEvent(MotionEvent ev) {        if (false) {            Log.d(Launcher.TAG, "DragController.onInterceptTouchEvent " + ev + " mDragging="                    + mDragging);        }        final int action = ev.getAction();        if (action == MotionEvent.ACTION_DOWN) {            recordScreenSize();        }        final int screenX = clamp((int)ev.getRawX(), 0, mDisplayMetrics.widthPixels);        final int screenY = clamp((int)ev.getRawY(), 0, mDisplayMetrics.heightPixels);        switch (action) {            case MotionEvent.ACTION_MOVE:                break;            case MotionEvent.ACTION_DOWN:                // Remember location of down touch                mMotionDownX = screenX;                mMotionDownY = screenY;                mLastDropTarget = null;                break;            case MotionEvent.ACTION_CANCEL:            case MotionEvent.ACTION_UP:                if (mDragging) {                    drop(screenX, screenY);                }                endDrag();                break;        }        JbcaoLog.VLOG("dragcontroller onInterceptTouchEvent return "+mDragging);        return mDragging;    }

改方法返回值是判断是否拦截touchevent,使得子View不会有DispatchTouchEvent执行,mDragging表示的当前是否在托从中,如果在拖动中,返回true,则拦截touch事件,不传递到子View中,否则不拦截。不拦截的话先执行子View的onTouchEvent,我们注意到OntouchEvent和DisPatchTouchEvent都有布尔型的返回值,如果返回true,则代表此次的MotionEvent执行完毕,重新开始从父View中获取MotionEvent并且执行。

更多相关文章

  1. 拦截系统收到短信的Notification
  2. 深入浅出Android(安卓)Service (3)
  3. 2018年Android面试题整理
  4. Mac系统中,Eclipse没有显示设备
  5. Android(安卓)Studio 关于高德地图的开发:显示地图
  6. Android(安卓)拖动条(SeekBar)实例 附完整demo项目代码
  7. 可执行的android C 程序
  8. Android下执行Runtime.getRuntime().exec后返回状态
  9. activity实现滑动效果

随机推荐

  1. android的窗口机制分析------事件处理
  2. Android技术积累:开发规范
  3. 深入Android系统 Binder-3-原理
  4. 2017安卓最全框架
  5. 【android】发布应用到各大市场
  6. Android系统中prop详解
  7. android内部外部存储卡路径的获取
  8. .Android(安卓)Notification 基础
  9. Android Touch事件传递机制
  10. android jni 输出log