Android 开发艺术探索-View 的事件体系-View 的基础

View 是 Android 中所有控件的基类,如:
Object——View——TextView——Button
Object——View——ViewGroup——RelativeLayout

1. View 的位置参数

View 的位置主要由 4 个顶点来决定,在 View 中用 mLeft, mRight, mTop, mBottom 这四个属性来表示。获取方式如下:
getLeft(), getRight(), getTop(), getBottom()。
从 Android 3.0 以来,增加了 x, y, translationX, translationY 参数,表示左上角的坐标,
x = mLeft + translationX;
y = mTop + translationY;
当 View 的位置发生变化,mLeft 等这些参数不会发生改变,x, y, translationX, translationY 会发生改变。

2. MotionEvent

MotionEvent 有三个事件类型:
ACTION_DOWN, ACTION_MOVE, ACTION_UP。
通过 MotionEvent 可以获取点击事件发生的坐标,getX()/getY() 获取的是相对于当前 View 的坐标,想要获取相对于屏幕的坐标需用 getRawX()/getRawY()。

3. 其它可能用到的 (VelocityTracker, GestureDetector, Scroller)

  1. VelocityTracker
    速度追踪,使用方法:
    首先创建对象,把 MotionEvent 添加进来:
    VelocityTracker velocityTracker = VelocityTracker.obtain();
    velocityTracker.addMovement(event);
    然后计算速度,注意需要先调用 computeCurrenVelocity() 方法,1000 指的是 1000ms。
    velocityTracker.computeCurrentVelocity(1000);
    velocityTracker.getXVelocity();
    velocityTracker.getYVelocity();
    最后不用了需要清除设置并回收:
    velocityTracker.clear();
    velocityTracker.recycle();
  1. GestureDetector
    手势检测,一般用于辅助检测单击,双击,长按,滑动手势。使用方法:
    首先创建对象,实现 OnGestureListener 接口
    GestureDetector gestureDetector = new GestureDetector(this);
    然后onTouchEvent 返回 gestureDetector.onTouchEvent(event),就可以捕捉到OnGestureListener 中的方法了。
    单击,双击事件在 OnDoubleTapListener 中,使用方法:
    GestureDetector.OnDoubleTapListener listener = new GestureDetector.OnDoubleTapListener() {
    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
    Log.e(TAG, "onSingleTapConfirmed");
    return true;
    }
       @Override
        public boolean onDoubleTap(MotionEvent e) {
            Log.e(TAG, "onDoubleTap");
            return true;
        }
       @Override
        public boolean onDoubleTapEvent(MotionEvent e) {
            Log.e(TAG, "onDoubleTapEvent");
            return true;
        }
    };
    listener.onDoubleTap(event);
  1. Scroller
    弹性滑动对象,用于实现 View 的弹性滑动。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容