滑动后退的手势监听

 1 private GestureDetector gd;
 2
 3
 4 @Override
 5 public boolean onTouchEvent(MotionEvent event) {
 6         // TODO Auto-generated method stub
 7         return gd.onTouchEvent(event);
 8     }
 9
10 private void initGD() {
11         gd = new GestureDetector(this, new GestureDetector.OnGestureListener() {
12             @Override
13             public boolean onSingleTapUp(MotionEvent e) {
14                 // TODO Auto-generated method stub
15                 return false;
16             }
17
18             // 这个方法主要是为了告诉用户手指已经按下,可以高亮被按下的区域
19             @Override
20             public void onShowPress(MotionEvent e) {
21                 // TODO Auto-generated method stub
22             }
23
24             @Override
25             public boolean onScroll(MotionEvent e1, MotionEvent e2,
26                     float distanceX, float distanceY) {
27                 // TODO Auto-generated method stub
28                 return false;
29             }
30
31             @Override
32             public void onLongPress(MotionEvent e) {
33                 // TODO Auto-generated method stub
34             }
35
36             // 当手指滑动时调用的方法
37             @Override
38             public boolean onFling(MotionEvent e1, MotionEvent e2,
39                     float velocityX, float velocityY) {
40                 // TODO Auto-generated method stub
41
42                 if (velocityX > 0) {
43                     finish();
44                     return true;
45                 }
46
47                 return false;
48             }
49
50             // 每一个事件都会先触发这个方法
51             @Override
52             public boolean onDown(MotionEvent e) {
53                 // TODO Auto-generated method stub
54                 return false;
55             }
56         });
57     }

当有一些View会拦截并消费掉触摸事件时,需要为这些View注册setOnTouchListener,

交由GestureDetector.onTouchEvent(event); 统一处理

 1 ListView listView=(ListView)findViewById(R.id.listViewBeside);
 2
 3           listView.setOnTouchListener(new View.OnTouchListener(){
 4
 5             @Override
 6             public boolean onTouch(View v, MotionEvent event) {
 7                 // TODO Auto-generated method stub
 8                 leftPanel.getGestureDetector().onTouchEvent(event);//需要这样写!
 9                 return false;
10             }
11
12           });
13
14           listView.setOnItemClickListener(new ListView.OnItemClickListener() {
15
16             @Override
17             public void onItemClick(AdapterView<?> parent, View view,
18                     int position, long id) {
19                 // TODO Auto-generated method stub
20                 Log.i("tag", "position=="+position);
21             }
22         });

因为我的手势是定义在leftPanel这个View中的,所以是leftPanel.getGestureDetector().onTouchEvent(event);。

如果你的手势是写在Activity中的,那么就是mGestureDetector.onTouchEvent(event); 
这样既能保证在ListView上实现拖动,又能保证ListView上的Item Click.

时间: 2024-10-04 01:53:55

滑动后退的手势监听的相关文章

自定义View实现手势监听

下面是我自定义的view,主要是实现左右滑动 要实现手势监听,首先要实现OnGestureListener接口 其次是实例化一个GestureDetector:mDetector = new GestureDetector(context, this); 如果只是简单的实现OnGestureListener的方法,是不能实现监听效果, 我们要将onDown , onScroll的返回值改为true,自定义view的clickable属性为true. 除此之外,我们要重写自定义view的onTou

Android开发之手势滑动(滑动手势监听)

在Android应用中,经常需要手势滑动操作,比如上下滑动,或左右方向滑动,处理手势滑动通常有两种方法:一种是单独实现setOnTouchListener监听器来,另一种是构建手势探测器 第一种方法,就是在要实现滑动的View中,实现OnTouchListener监听事件,然后判断KeyDonw和KeyUp 直接的位置距离来判断滑动方向,核心实现代码如下: /** * 设置上下滑动作监听器 * @author caizhiming */ private void setGestureListen

Android 手势监听学习总结

android的简单手势监听一般用onTouchListner接口,复杂手势监听一般用Detector来接替onTouch的处理. 手势监听后的处理涉及android坐标系统的问题. 多点触点则一般用event.getPointerCount()获取目前的触摸点的个数,用event.getX(index).event.getY(index)获得第index个触摸点的坐标. 一. 用View.OnTouchListener接口监听简单手势 在Android中,简单的手势监听用实现View类的Vie

移动端touch触屏滑动事件、滑动触屏事件监听!

移动端touch触屏滑动事件.滑动触屏事件监听! 一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因此他们的顺序是需要注意的:touchstart → mouseover → mousemove → mousedown → mouseup → click1 Apple在iOS 2.0中引入了触摸事件API,Android正迎头赶上这一事实标准,缩小

动态增添元素和进行手势监听的环形菜单

动态增添元素和进行手势监听的环形菜单 本例子是一个自定义菜单View,包含菜单按钮和子菜单列表.环形的子菜单可以动态增减元素并且可以监听 轻触触摸屏,尚未松开或拖动.轻触触摸屏后松开.按下触摸屏,并拖动.长按触摸屏.上下左右滑动等多种手势,并且可以长按拖动到任意位置在接近边框的时候会自动调整子菜单的位置来让菜单不被边框遮蔽.本项目编译版本4.4.2项目编码UTF-8 下载地址:http://www.devstore.cn/code/info/582.html 运行截图:   

Android手势监听类GestureDetector的使用

在使用自定义视图的时候,对触屏事件的处理是比不可少的,有能力的可以自己写代码处理,这样更加的灵活.如果不想这么麻烦,Android提供了一个手势监听类GestureDetector,可以供我们使用.GestureDetector使用很方便,提供了单击,双击,长按等操作的处理,但是一般的定义界面都比较复杂,还用很多需要注意的地方,在这儿总结一下GestureDetector的使用. 首先新建一个空白的工程,主界面的layout中只需要添加一个按钮就行 <RelativeLayout xmlns:a

Android手势监听

public class MainActivity extends Activity { /* * 要实现手指在屏幕上左右滑动的事件需要实例化对象GestureDetector,new * GestureDetector(MainActivity.this * ,onGestureListener);首先实现监听对象GestureDetector * .OnGestureListener,根据x或y轴前后变化坐标来判断是左滑动还是右滑动并根据不同手势滑动做出事件处理doResult(int *

iOS小米遥控器的手势监听及UI实现

这篇文章通过实例实现了一个类似小米手势遥控器的功能页面. 效果图如下所示: 触摸事件的响应通过对系统的触摸实践监听来进行. 通过一个数组来对点的集合进行缓存和分析. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { if (!self.allowsInteraction) return; UITouch *touch = [touches anyObject]; CGPoint start = [touch lo

Android手势监听(GestureDetector类)

public class GestureTest extends Activity implements OnClickListener, OnGestureListener { // 定义手势检测器实例 GestureDetector detector; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a