android应用开发(触摸事件的开发)

来源:互联网 发布:mac怎么安装anaconda 编辑:程序博客网 时间:2024/05/21 16:22

android关于触摸事件:

(1)对于单点触摸的理解:

public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) 
{
//触摸屏幕按下事件
case MotionEvent.ACTION_DOWN:
break;
//触摸并移动时刻
case MotionEvent.ACTION_MOVE:
break;
//触摸屏幕提起事件
case MotionEvent.ACTION_UP:
break;
}
return true(如果返回值为false,事件会继续传递,会有一些操作异常不可用);
}

实现功能:

1.侧滑功能

获取按下事件时的位置:positionX=event.getX();

获取提起事件时的位置:positionX‘=event.getX();

一次完整动作的位置差值:x=positionX‘-positionX

如果x大于零判断向右滑动,否则向左滑动。这样可以实现仿QQ消息记录侧滑的置顶删除功能。

2.长按事件功能

当前事件产生的时间的函数:getEventTime()

按下时间:getDowntime()

根据事件产生的时间差,判断产生事件的位置差,如果小于某一差值,可以判定为长按时间


(2)多点触摸事件:

MotionEvent.ACTION_MASK&&event.getAction()
有各种常量定义(常用的常量) 
MotionEvent.ACTION_POINTER_DOWN(用于屏幕上已经有手指按下且没有松开,再次按下一个手指触发该事件)
 MotionEvent.ACTION_POINTER_UP(用于屏幕上有不止一个点按下,只要有其中一个手指提起就触发该事件)
1.双指放大功能:
获取按下的手指位置:event.getX(int Index),event.getY(int Index)第几个手指按下的位置
获取按下事件距离差值:x=|event.getX(0)-event.getY(0)|
获取提起事件距离差值:x‘=|event.getX(0)-event.getY(0)|
如果x-x'>0,放大功能,否则缩小功能,由于触摸移动事件很灵敏,刻意设置界限值触发放大缩小功能
2.多点触控功能:在大屏幕上显示摊开牌功能,相册摊开
多照片重叠在一起时,可以五个手指放在相片上,然后画弧,在滑动事件中每过一段时间放置一张照片,和自定义view绘制可以在一个圆上摊开牌


0 0