您的位置:首页 > 移动开发 > Android开发

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

2012-12-23 20:49 573 查看
主要问题是加入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;

@Override
public 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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐