码迷,mamicode.com
首页 > 其他好文 > 详细

ui2

时间:2015-03-01 18:26:27      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

不要重复造轮子。 很多控件都为我们提供了双击等事件的处理。但还是有一部分控件没用提供较好的帮助。 那么我们就可以使用GestureDetector来弥补此处的不足。 尽量不要自己去重复实现双击等事件。 因为这样你会损失掉一部分内容。

步骤:

1. 在onCreate 方法中去创建

  mGestureDetector = new GestureDetector(this, new MyGestureListener()); 


2. 把普通的触摸事件,抛给GestureDetector来处理

技术分享
控件.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//采用手势来处理
return this.gestureDetector.onTouchEvent(event);
}
});
技术分享


3. 实现自己的GestureDetector,完成代码:MyGestureListener。

 

下面就要介绍一怎样扩展MyGestureListener来实现我们的功能需求。

1. 双击事件:

技术分享
gestureDetector.setOnDoubleTapListener(new OnDoubleTapListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}

@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}

@Override
public boolean onDoubleTap(MotionEvent e) {
//事件处理,普通是双击都是这么干的。
return false;
}
});
技术分享

2. 水平移动,判断是水平移动还是垂直移动的事件。

技术分享
       @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if(Math.abs(e1.getX() - e2.getX()) - Math.abs(e1.getY() - e2.getY()) > 0) {
Toast.makeText(NewViewActivity.this, "xxxx", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(NewViewActivity.this, "yyyy", Toast.LENGTH_SHORT).show();
}
return false;
}


2. 水平移动,判断是水平移动还是垂直移动的事件。


按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
 

ui2

标签:

原文地址:http://www.cnblogs.com/xubin-123/p/4307303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!