您的位置:首页 > 移动开发 > Android开发

android 之View 一

2016-03-23 18:46 507 查看
1.MotionEvent

ACTION_DOWN,ACTION_UP,ACTION_MOVE

getX/getY相对当前View 左上角X ,Y

getRawX/getRawY 相对手机屏幕左上角X,Y

2. TouchSlop(常量跟设备有关,Android源码中定义为8dp)

系统所能识别的最小滑动距离

获取方式: ViewConfiguration.get(getBaseContext()).getScaledTouchSlop();返回的是像素

3. VelocityTracker

用于追踪手指在屏幕的滑动速度(有X,Y两个方向)速度可以是负值

用法:在View的onTouchEvent()

@Override
public boolean onTouchEvent(MotionEvent event) {
//创建
VelocityTracker velocityTracker=VelocityTracker.obtain();
velocityTracker.addMovement(event);
//计算
velocityTracker.computeCurrentVelocity(1000);//设定计算时间,毫秒为单位
float XVelocity=velocityTracker.getXVelocity();
float YVelocity=velocityTracker.getYVelocity();
Log.d(TAG, "XVelocity: "+XVelocity+" YVelocity: "+YVelocity);
return super.onTouchEvent(event);
}


注意:不需要使用时要回收占用的内存

velocityTracker.clear();
velocityTracker.recycle();


4. GestureDetector

检测单击,滑动,双击等行为

使用方法:

1. 创建一个GestureDetector对象并实现OnGestureListener()接口,根据需求也可以实现OnDoubleTapListener().

2. 监听自定义View的onTouchEvent方法,返回mGestureDetector.onTouchEvent

5. Scroller

用于实现View的弹性滑动

scrollerTo(),scrollerBy()只能改变view中内容位置,不能改变view在布局的位置

一个简单View 滑动例子:

int mLastX=0,mLastY=0;
@Override
public boolean onTouchEvent(MotionEvent event) {
// 相对本身来滑动,也可以相对手机屏幕来滑动
int x=(int)event.getX();
int y=(int)event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int deltaX=x-mLastX;
int deltaY=y-mLastY;
int translationX=(int)getTranslationX()+deltaX;
int translationY=(int)getTranslationY()+deltaY;
setTranslationX(translationX);
setTranslationY(translationY);
break;
case MotionEvent.ACTION_UP:
//松手后回到初始位置
setTranslationX(0);
setTranslationY(0);
break;
}
mLastX=x;
mLastY=y;
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: