View 是 Android 中所有控件的基類话肖,如:
Object——View——TextView——Button
Object——View——ViewGroup——RelativeLayout
1. View 的位置參數(shù)
View 的位置主要由 4 個頂點來決定,在 View 中用 mLeft, mRight, mTop, mBottom 這四個屬性來表示葡幸。獲取方式如下:
getLeft(), getRight(), getTop(), getBottom()最筒。
從 Android 3.0 以來,增加了 x, y, translationX, translationY 參數(shù)蔚叨,表示左上角的坐標床蜘,
x = mLeft + translationX;
y = mTop + translationY;
當 View 的位置發(fā)生變化辙培,mLeft 等這些參數(shù)不會發(fā)生改變,x, y, translationX, translationY 會發(fā)生改變邢锯。
2. MotionEvent
MotionEvent 有三個事件類型:
ACTION_DOWN, ACTION_MOVE, ACTION_UP扬蕊。
通過 MotionEvent 可以獲取點擊事件發(fā)生的坐標,getX()/getY() 獲取的是相對于當前 View 的坐標丹擎,想要獲取相對于屏幕的坐標需用 getRawX()/getRawY()尾抑。
3. 其它可能用到的 (VelocityTracker, GestureDetector, Scroller)
- VelocityTracker
速度追蹤,使用方法:
首先創(chuàng)建對象蒂培,把 MotionEvent 添加進來:
VelocityTracker velocityTracker = VelocityTracker.obtain();
velocityTracker.addMovement(event);
然后計算速度蛮穿,注意需要先調(diào)用 computeCurrenVelocity() 方法,1000 指的是 1000ms毁渗。
velocityTracker.computeCurrentVelocity(1000);
velocityTracker.getXVelocity();
velocityTracker.getYVelocity();
最后不用了需要清除設(shè)置并回收:
velocityTracker.clear();
velocityTracker.recycle();
- GestureDetector
手勢檢測践磅,一般用于輔助檢測單擊,雙擊灸异,長按府适,滑動手勢。使用方法:
首先創(chuàng)建對象肺樟,實現(xiàn) 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);
- Scroller
彈性滑動對象,用于實現(xiàn) View 的彈性滑動田柔。