Android中View的基础知识

作者: cooperise | 来源:发表于2016-08-17 23:05 被阅读128次

View的位置参数

  • top : 左上角纵坐标
  • left: 左上角横坐标
  • right : 右下角横坐标
  • bottom :右下角纵坐标
  • x : 左上角的横坐标
  • y : 左上角的纵坐标
  • translationX : View左上角相对于父容器的偏移量
  • translationY : View左上角相对于父容器的偏移量

PS:View在平移的过程中,top和left表示的是原始左上角的位置信息,其值并不会发生改变,此时发生改变的是x、y、translationX和translationY这四个参数。

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

MotionEvent

  • ACTION_DOWN -- 手指刚接触屏幕
  • ACTION_MOVE -- 手指在屏幕上滑动
  • ACTION_UP -- 手指从屏幕上松开的一瞬间

如:点击屏幕后离开,事件序列为DOWN -> UP
点击屏幕滑动一会再松开,事件序列为DOWN -> MOVE -> ... -> MOVE -> UP

获得点击事件发生的x和y坐标:

  • getX/getY -- 相对于当前View左上角的x和y坐标
  • getRawX/getRawY -- 相对于手机屏幕左上角的x和y坐标

TouchSlop

TouchSlop是系统所能识别出的被认为是滑动的最小距离,可通过如下方式获得

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

VelocityTracker

速度追踪,用于追踪手指在滑动过程中的速度,包括水平和竖直方向的速度。使用过程如下:

  • 在View的onTouchEvent方法中追踪当前单击事件的速度
VelocityTracker velocityTracker = VelocityTracker.obtain();
velocityTracker.addMovement(event);
  • 获得当前移动速度
velocityTracker.computeCurrentVelocity(1000);    //先根据时间计算速度
int xVelocity = (int) velocityTracker.getXVelocity();
int yVelocity = (int) velocityTracker.getYVelocity();
  • 回收内存
velocityTracker.clear();
velocityTracker.recycle();

GestureDetector

手势检测,用于辅助检测用户的单击、滑动、长按和双击等行为。

  • 创建一个GestureDetector对象并实现OnGestureListener接口或者OnDoubleTapListener
GestureDetector mGestureDetector = new GestureDetector(this);
// 解决长按屏幕后无法拖动的现象
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触发 OnDoubleTapListener
onSingleTapConfirmed 严格的单击行为(只能是单击,不能是双击中的一次单击) OnDoubleTapListener
onDoubleTapEvent 表示发生了双击行为 ,DOWN、MOVE、UP都会触发 OnDoubleTapListener

相关文章

网友评论

    本文标题:Android中View的基础知识

    本文链接:https://www.haomeiwen.com/subject/wmxusttx.html