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两个方向)速度可以是负值

用法:在ViewonTouchEvent()

@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.监听自定义ViewonTouchEvent方法,返回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;

}

更多相关文章

  1. Android(安卓)Drawable 关于selector中state_pressed="true"的位
  2. 在Android中使用Google map
  3. android图片拖动Gallery
  4. Android轮播图(ViewPage)
  5. Android(安卓)PopupWindow 弹框布局要显示在某个空间下面位置
  6. 使用googleMap 需要获取的apikey方法
  7. andoid HorizontalScrollView 水平滚动问题
  8. android 切换到阿拉伯语电话号码+号显示在右侧及顺序错乱的处理
  9. Android项目打包遇com.android.builder.internal.aapt.v2.Aapt2E

随机推荐

  1. Android(安卓)Animation学习笔记
  2. android 命令行安装apk
  3. 自己封装的Android(安卓)sqlite-helper.j
  4. Android开发学习:ImageView的scaletype属
  5. Android(安卓)Animation之frame animatio
  6. Android(安卓)网络请求简单使用方式
  7. android控件背景揭密--NinePatch
  8. Android(安卓)Layout属性
  9. lua学习笔记 3 android调用Lua。Lua脚本
  10. I/O流的梳理和小结