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

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

final int RIGHT = 0;      final int LEFT = 1;      private GestureDetector gestureDetector; @Overrideprotected 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() {@Overridepublic 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方法即可:

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


在找原因的时候发现布局文件中添加android:longClickable="true"对监听滑动事件也有影响,具体没仔细研究

更多相关文章

  1. 2.2.1 LinearLayout(线性布局)
  2. Android弹出式窗口PopuWindow的使用
  3. 了解使用Android(安卓)ConstraintLayout
  4. Android(安卓)CheckBox 控件突然报错
  5. android中三种onClick事件的实现,与对比
  6. LinearLayout 线性布局属性
  7. Android(安卓)多种ViewType的ListView
  8. Android游戏开发系列教程第三讲(事件处理)
  9. 【安卓笔记】touch事件的分发和消费机制

随机推荐

  1. Android(安卓)Button 你真的会用吗(含福利
  2. Android学习之表格布局管理器
  3. 电话接听并查看该人姓名
  4. Android 智能手机比较
  5. Android Studio使用Wifi调试的方法:使用An
  6. android弹出对话框大全
  7. Android性能优化(一)App启动原理分析及启动
  8. Android(1)--Application和Activity
  9. Android——简介
  10. [android] 百度地图开发 (一).申请AK显示