GestureDetector中无法提示调用simpOnGesturelistener的问题

在Android开发中,常用到手势识别模块,例如对down,up,scroll,filing等手势的判断和监听。这个模块是如何实现的呢?

 我们知道View类中有个View.OnTouchListenr内部接口,通过重写它的onTouch(VIew v,MotionEvent event)方法,可以处理一些touch事件,但是它的处理过于简单,无法满足我们炫酷吊炸天的开发需求,而且使用起来比较麻烦,因为我们得自己去判断用户的手势。

 鉴于此,Android sdk给我们提供了GestureDetector(手势识别)类,通过这个类,我们可以方便的识别不同手势并调用不同的功能。在这个类中,是哪个方法来识别不同手势呢?它就是onTouchEvent(event),省去了作位高大上程序员的我们的搬砖苦力。手势识别后是怎么处理的呢?怎么添加后面的业务逻辑呢?这个类对外提供了两个接口:OnGestureListenr和OnDoubleTapListener,还有一个内部类SimpleOnGestureListener,而这个内部类实现了上面的两个接口,提供给我们一个更方便的响应不同手势的类,并且该类是一个static class,也就是说他实际上是一个外部类,程序员可以在外部继承这个类,重写里面的手势处理方法,通过GestureDetector的构造方法可以将SimpleOnGestureListener对象传递进去,这样就能处理不同手势了。


因为是一个内部类,我们在调用的时候会出现一个小问题:

GestureDetector myGestureDetector = new GestureDetector(Setup1Activity.this, new GestureDetector.SimpleOnGestureListener(){

 @Override 

public boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) { return super.onFling(e1, e2, velocityX, velocityY); } });


在绿色部分调用时候,有的人会通过'alt+/ '  无法提示simpleOnGestureListener()的调用,这与api版本有关,当然,考虑到SimpleOnGestureListener实际上是内部类(虽然是静态的)因此应该通过GestureDetector外部类来调用(如码),这样问题就解决了

你可能感兴趣的:(android开发)