Android中View的基礎知識

View的位置參數(shù)

  • top : 左上角縱坐標
  • left: 左上角橫坐標
  • right : 右下角橫坐標
  • bottom :右下角縱坐標
  • x : 左上角的橫坐標
  • y : 左上角的縱坐標
  • translationX : View左上角相對于父容器的偏移量
  • translationY : View左上角相對于父容器的偏移量

PS:View在平移的過程中,top和left表示的是原始左上角的位置信息,其值并不會發(fā)生改變,此時發(fā)生改變的是x、y、translationX和translationY這四個參數(shù)。

x = left + translationX;
y = right + translationY;

MotionEvent

  • ACTION_DOWN -- 手指剛接觸屏幕
  • ACTION_MOVE -- 手指在屏幕上滑動
  • ACTION_UP -- 手指從屏幕上松開的一瞬間

如:點擊屏幕后離開,事件序列為DOWN -> UP
點擊屏幕滑動一會再松開,事件序列為DOWN -> MOVE -> ... -> MOVE -> UP

獲得點擊事件發(fā)生的x和y坐標:

  • getX/getY -- 相對于當前View左上角的x和y坐標
  • getRawX/getRawY -- 相對于手機屏幕左上角的x和y坐標

TouchSlop

TouchSlop是系統(tǒng)所能識別出的被認為是滑動的最小距離,可通過如下方式獲得

ViewConfiguration.get(getContext()).getScaledTouchSlop();

VelocityTracker

速度追蹤,用于追蹤手指在滑動過程中的速度,包括水平和豎直方向的速度。使用過程如下:

  • 在View的onTouchEvent方法中追蹤當前單擊事件的速度
VelocityTracker velocityTracker = VelocityTracker.obtain();
velocityTracker.addMovement(event);
  • 獲得當前移動速度
velocityTracker.computeCurrentVelocity(1000);    //先根據(jù)時間計算速度
int xVelocity = (int) velocityTracker.getXVelocity();
int yVelocity = (int) velocityTracker.getYVelocity();
  • 回收內存
velocityTracker.clear();
velocityTracker.recycle();

GestureDetector

手勢檢測,用于輔助檢測用戶的單擊、滑動、長按和雙擊等行為。

  • 創(chuàng)建一個GestureDetector對象并實現(xiàn)OnGestureListener接口或者OnDoubleTapListener
GestureDetector mGestureDetector = new GestureDetector(this);
// 解決長按屏幕后無法拖動的現(xiàn)象
mGestureDetector.setIsLongpressEnabled(false);
  • 接管目標View的onTouchEvent方法
boolean consume = mGestureDetector.onTouchEvent(event);
return consume;

表 OnGestureListener和OnDoubleTapListener中的方法介紹:

方法名 描述 所屬接口
onDown 手指輕輕觸摸屏幕的一瞬間 OnGestureListener
onShowPress 手指輕輕觸摸屏幕,尚未松開和拖動 OnGestureListener
onSingleTapUp 手指(輕輕觸摸屏幕后)松開 OnGestureListener
onScroll 手指按下屏幕并拖動 OnGestureListener
onLongPress 用戶長久按著屏幕不放 OnGestureListener
onFling 用戶按下觸摸屏,快速滑動后松開 OnGestureListener
onDoubleTap 雙擊,第二下單擊Down觸發(fā) OnDoubleTapListener
onSingleTapConfirmed 嚴格的單擊行為(只能是單擊,不能是雙擊中的一次單擊) OnDoubleTapListener
onDoubleTapEvent 表示發(fā)生了雙擊行為 ,DOWN、MOVE、UP都會觸發(fā) OnDoubleTapListener
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容