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 的弹性滑动。

你可能感兴趣的:(Android 开发艺术探索-View 的事件体系-View 的基础)