与手势识别有关的Android类
来源:互联网 发布:java开源框架有哪些 编辑:程序博客网 时间:2024/06/04 19:33
GestureDetector
ScaleGestureDecoder
VelocityTracker
一. GestureDetector
GestureDetector对象对接收多个MotionEvent事件。并根据这些MotionEvent事件来判断用户在进行什么操作。
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
//用户轻触屏幕后松开。
return false;
}
@Override
public void onShowPress(MotionEvent e) {
//用户轻触屏幕,尚末松开或拖动,注意,强调的是没有没有松开或者拖动状态
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
//用户按下屏幕并拖动,相当于windows 的mouse_move
return false;
}
@Override
public void onLongPress(MotionEvent e) {
//用户长按屏幕
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
//用户按下屏幕,快速移动后松开(就是在屏幕上滑动),相当于iOS的swipe
}
Java代码:
•@Override
•public boolean onTouchEvent(MotionEvent event) {
•if (gestureDetector.onTouchEvent(event))
•return true;
•else
•return false;
•}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
二. ScaleGestureListener
主要用于:多点触摸,放大缩小
public static class SimpleOnScaleGestureListener implements OnScaleGestureListener {
public boolean onScale(ScaleGestureDetector detector) {
return false;
}
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;
}
public void onScaleEnd(ScaleGestureDetector detector) {
// Intentionally empty
}
}
三、VelocityTracker
追踪Fling等触摸事件的速度
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
mVelocityTracker.addMovement(ev);
final int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK) {
。。。
case MotionEvent.ACTION_UP:
if (mTouchState == TOUCH_STATE_SCROLLING) {
final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
final int velocityX = (int) velocityTracker.getXVelocity(mActivePointerId);
.....
if (velocityX > SNAP_VELOCITY && mCurrentScreen > 0) {
.....
} else if (velocityX < -SNAP_VELOCITY && mCurrentScreen < getChildCount() - 1) {
......
} else {
.....
}
if (mVelocityTracker != null) {
mVelocityTracker.recycle();
mVelocityTracker = null;
}
}
mTouchState = TOUCH_STATE_REST;
break;
}
}
- 与手势识别有关的Android类
- android的手势识别
- Android的手势识别
- Android的手势识别
- Android 手势的识别
- 手势的创建与识别
- android的手势识别例子
- 理解Android的手势识别
- 理解Android的手势识别
- 理解Android的手势识别
- 理解Android的手势识别
- 理解Android的手势识别
- Android的手势识别GestureDetector
- Android的手势操作识别
- 理解Android的手势识别
- 理解Android的手势识别
- 理解Android的手势识别
- 理解Android的手势识别
- NHibernate系列1-Session建立过程
- 一个字符串问题的思考
- 一个C程序的编译过程(Linux环境下Gcc)
- 如何将 Access 数据导出到 Oracle 数据库中?
- 线程同步
- 与手势识别有关的Android类
- java 跟.net webservice 互通问题(3)
- 杯具……
- C语言函数内部改变指针本身
- 用SQL Server Management Studio远程连接Integration Services失败的解决方法
- rtsp协议调试程序
- 用const修饰"记忆变量"。。。
- wangzhan
- 大学毕业了,不对政府参与了,只能结业吧!!!