2016-05-26 1 views
0

Мой кодGestureDetectorCompact не работает?

public class TestActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test); 

     GestureDetectorCompat gestureDetectorCompat=new GestureDetectorCompat(this,this); 
     gestureDetectorCompat.setOnDoubleTapListener(this); 
    } 

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

    @Override 
    public void onShowPress(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 void onLongPress(MotionEvent e) { 

    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     return false; 
    } 

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

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

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

Я отладки каждый метод, но ни один прибудете называеться. Где я ошибаюсь?

+0

Это нормально работает в моем случае с 'onTouchEvent (....)' –

ответ

2

GestureDetectorCompat не авто-называется. Вы должны переопределить onTouchEvent(MotionEvent event) в своем Activity и передать событие детектору жестов. Например.

public boolean onTouchEvent(MotionEvent event) { 
    return gestureDetectorCompat.onTouchEvent(event) 
    } 

Вы можете найти документацию here. Пожалуйста, обратитесь к нему, для значения возвращаемого значения

1

Добавьте к вашему коду следующее. Это упоминается here.

@Override 
    public boolean onTouchEvent(MotionEvent event){ 
     this.mDetector.onTouchEvent(event); 
     // Be sure to call the superclass implementation 
     return super.onTouchEvent(event); 
    } 
Смежные вопросы