android 之View 一
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
publicbooleanonTouchEvent(MotionEventevent){
//创建
VelocityTrackervelocityTracker=VelocityTracker.obtain();
velocityTracker.addMovement(event);
//计算
velocityTracker.computeCurrentVelocity(1000);//设定计算时间,毫秒为单位
floatXVelocity=velocityTracker.getXVelocity();
floatYVelocity=velocityTracker.getYVelocity();
Log.d(TAG,"XVelocity:"+XVelocity+"YVelocity:"+YVelocity);
returnsuper.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滑动例子:
intmLastX=0,mLastY=0;
@SuppressLint("NewApi")@Override
publicbooleanonTouchEvent(MotionEventevent){
//相对本身来滑动,也可以相对手机屏幕来滑动
intx=(int)event.getX();
inty=(int)event.getY();
switch(event.getAction()){
caseMotionEvent.ACTION_DOWN:
break;
caseMotionEvent.ACTION_MOVE:
intdeltaX=x-mLastX;
intdeltaY=y-mLastY;
inttranslationX=(int)getTranslationX()+deltaX;
inttranslationY=(int)getTranslationY()+deltaY;
setTranslationX(translationX);
setTranslationY(translationY);
break;
caseMotionEvent.ACTION_UP:
//松手后回到初始位置
setTranslationX(0);
setTranslationY(0);
break;
}
mLastX=x;
mLastY=y;
returntrue;
}
更多相关文章
- Android(安卓)Drawable 关于selector中state_pressed="true"的位
- 在Android中使用Google map
- android图片拖动Gallery
- Android轮播图(ViewPage)
- Android(安卓)PopupWindow 弹框布局要显示在某个空间下面位置
- 使用googleMap 需要获取的apikey方法
- andoid HorizontalScrollView 水平滚动问题
- android 切换到阿拉伯语电话号码+号显示在右侧及顺序错乱的处理
- Android项目打包遇com.android.builder.internal.aapt.v2.Aapt2E