1,首先需知道MotionEvent类一些参数特性
ACTION_DOWN: 表示用户开始触摸(在第一个点被按下时触发)
ACTION_MOVE: 当有点在屏幕上移动时触发,注意的是,由于灵敏度很高,所以基本上只要有点在屏幕上,此事件就会不停地被触发
ACTION_UP:表示用户抬起了手指(当屏幕上唯一的点被放开时触发)
ACTION_OUTSIDE: 表示用户触碰超出了正常的UI边界
ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(非最后一个点)
getDownTime() //按下开始时间
getEvenTime()//事件结束时间
GetDownTime()-getEvenTime()//总共按下的时间
getX()//x轴坐标位置
getY()//y轴坐标位置
2,左右滑动,通过x轴正负计算左滑还是右滑
//视图滑动切换设备private void setOnLayoutTouchListener(){PICIMG.setOnTouchListener(new View.OnTouchListener() {private float posX, posY,curPosX, curPosY;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()){case MotionEvent.ACTION_DOWN:posX = event.getX();posY = event.getY();break;case MotionEvent.ACTION_MOVE:curPosX = event.getX();curPosY = event.getY();break;case MotionEvent.ACTION_UP:if ((curPosX - posX > 0) && (Math.abs(curPosX - posX) > 35)){Log.v(TAG,"向右滑动");position++;show();}else if ((curPosX - posX < 0) && (Math.abs(curPosX-posX) > 35)){Log.v(TAG,"向左滑动");position--;show();}break;}return true;}});}
3,也可以用作事件长按,通过控制时间长触发事件
//视图滑动切换设备private void setOnLayoutTouchListener(){PICIMG.setOnTouchListener(new View.OnTouchListener() {private float posX, posY,curPosX, curPosY;@Overridepublic boolean onTouch(View v, MotionEvent event) {time = event.getEventTime()-event.getDownTime();//如果不按压为0,按压松开之后显示时间long time = event.getEventTime()-event.getDownTime();//控制按多长时间触发if((int)time>2000){//这里处理长按保存图片System.out.println("执行了吗");}return true;}});}