Android GestureDetector滑动监听事件

项目中需要做滑动监听事件,具体如下:

做的过程中遇到点小麻烦,写了监听后无效,具体原因及解决方法请看后面


final int RIGHT = 0;
final int LEFT = 1;
private GestureDetector gestureDetector;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_news_img);
gestureDetector = new GestureDetector(NewsDetailImgActivity.this,onGestureListener);
private GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.v(TAG, "onFling...");
float x = e2.getX() - e1.getX();
float y = e2.getY() - e1.getY();

if (x > 300) {
doResult(RIGHT);
} else if (x < -300) {
doResult(LEFT);
}
return true;
}
};

public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}

public void doResult(int action) {

switch (action) {
case RIGHT:
Log.v(TAG, "go right");
System.out.println("go right");
break;

case LEFT:
Log.v(TAG, "go LEFT");
System.out.println("go LEFT");
break;

}
}


}


今天做的时候很莫名其妙的监听滑动事件不管用了,后来找到原因是因为布局文件中用了ScrollView,与GestureDetector冲突,解决方法是重写dispatchTouchEvent方法即可:


@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODOAuto-generatedmethodstub
gestureDetector.onTouchEvent(ev); // 让GestureDetector响应触碰事件
super.dispatchTouchEvent(ev); // 让Activity响应触碰事件
return false;
}


在找原因的时候发现布局文件中添加android:longClickable="true"对监听滑动事件也有影响,具体没仔细研究
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值