2 sinat 34245223 sinat_34245223 于 2016.09.07 21:12 提问

GestureDetector没用 滑动屏幕没反应

public class AttributeActivity extends Activity implements GestureDetector.OnGestureListener{
private ListView listView;
private static final int FLIP_DISTANCE=80;
private GestureDetector detector;
List persons;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.attribute_main);
detector=new GestureDetector(AttributeActivity.this,AttributeActivity.this);
Intent intent=getIntent();
Bundle data=intent.getExtras();
persons=(List)data.getSerializable("MainActivity_persons");
listView=(ListView)findViewById(R.id.listView_attribute_main);
PersonAdapter personAdapter=new PersonAdapter(AttributeActivity.this,R.layout.list_item,persons);
listView.setAdapter(personAdapter);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return detector.onTouchEvent(event);
}

@Override
public void onShowPress(MotionEvent e) {

}

@Override
public void onLongPress(MotionEvent e) {

}

@Override
public boolean onSingleTapUp(MotionEvent e) {
    return false;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
    return false;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    Toast.makeText(AttributeActivity.this, "onFling()", Toast.LENGTH_SHORT).show();
    if(e2.getX()-e1.getX()>=FLIP_DISTANCE){
        Intent intent=new Intent(AttributeActivity.this,MainActivity.class);
        startActivity(intent);
        return true;
    }
    return false;
}

@Override
public boolean onDown(MotionEvent e) {
    return false;
}

}

滑了滑屏幕没反应 哪里有问题

2个回答

jjxojm
jjxojm   2016.09.07 21:50
已采纳
@Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        detector.onTouchEvent(event);
        super.dispatchTouchEvent(ev);
        return false;
    } 
jjxojm
jjxojm   2016.09.07 21:29

看你的布局文件中有ListView,应该是ListView已经处理了你的触摸事件,所以Activity中的onTouchEvent方法并没有执行。
你可以试试在ListView以外的屏幕上进行触摸操作,看看是否有反应。

jjxojm
jjxojm 回复blast_z: 应该不用那么麻烦,可以重写dispatchTouchEvent方法,然后在方法里面加上detector.onTouchEvent(event)试试
一年多之前 回复
sinat_34245223
sinat_34245223 如果我的ListView要覆盖整个屏幕 那我除了重写ListView的触摸事件之外 是不是没有办法了
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!