Gesture(手势)浅析
1.Gesture的作用
①在触摸屏上的连续触摸行为,形成某个方向上的移动趋势 (利用手势检测)
②连续画出一个不规则的行为 (利用增加手势)
2.手势检测(GestureDetector)
//创建GestureDetector public class GestureTest extends Activity { GestureDetector detector = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //第一步:用匿名类实现接口,供创建GestureDetector时候使用。 GestureDetector.OnGestureListener gestureListener = new GestureDetector.OnGestureListener() { @Override public boolean onDown(MotionEvent e) { //在屏幕按下时触发 return false; } @Override public void onShowPress(MotionEvent e) { //在屏幕按下、未移动和松开时候触发 } @Override public boolean onSingleTapUp(MotionEvent e) { //在屏幕按下时触发 return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { //在屏幕滑动的时候触发 return false; } @Override public void onLongPress(MotionEvent e) { //在屏幕长按的时候触发 } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //Touch了滑动一点距离后,拿起手时触发。velocityX表示“拖过”动作在横向的速度,velocityY表示“拖过”动作在纵向时的速度 return false; } }; //第二步:构造方法public GestureDetector(Context context,GestureDetector.OnGestureListener listener) detector = new GestureDetector(this,gestureListener); } //第三步:重写Activity的onTouchEvent()方法,并将点击事件给GestureDetector处理 @Override public boolean onTouchEvent(MotionEvent event) { return detector.onTouchEvent(event); } }
注:关于方法执行的顺序
点击一下非常快的(不滑动)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
点击一下稍微慢点的(不滑动)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
点击后一直不滑动:onDown->onShowPress->onLongPress
3.增加手势(放弃,不讲)