android开发问题(二)解决ScrollView加入后无法执行OnGestureListener的监听函数

来源:互联网 发布:高中历史辅助教程 知乎 编辑:程序博客网 时间:2024/06/05 03:40

主要问题是加入ScrollView之后,左右滑动不执行OnGestureListener的函数了。

为解决这个问题,应该先覆写dispatchTouchEvent方法,然后在执行父类方法钱加入detector.onTouchEvent(ev),来先执行OnGestureListener的函数


package com.sid.point;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.GestureDetector.OnGestureListener;import android.view.MotionEvent;public class AboutActivity extends Activity  implements  OnGestureListener {    private GestureDetector detector;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.about_layout);//绑定新的分析用户的动作类        detector = new GestureDetector(this);}/* 以下是监听左右滑动事件 ;需要继承OnGestureListener*/    @Override      public boolean onTouchEvent(MotionEvent event) {        return this.detector.onTouchEvent(event);      }    /**     * 解决ScrollView后不执行左右移动监听事件OnGestureListener     * 在Activity中添加ScrollView实现滚动activity的效果后,activity的滑动效果却无法生效了     * 原因是因为activity没有处理滑动效果,重写以下方法即可解决。     */    @Override     public boolean dispatchTouchEvent(MotionEvent ev) {         detector.onTouchEvent(ev);         return super.dispatchTouchEvent(ev);     }     /**      * 监听滑动      */      @Override      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,              float velocityY) {    System.out.println("=======================================");        if (e1.getX() - e2.getX() < -120) {        finish();        }          return true;      }    @Override      public boolean onDown(MotionEvent e) {          return false;      }    @Override      public void onLongPress(MotionEvent e) {      }      @Override      public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) {          return false;      }      @Override      public void onShowPress(MotionEvent e) {      }      @Override      public boolean onSingleTapUp(MotionEvent e) {          return false;      }  }


原创粉丝点击