在屏幕上触摸移动textview并在双击Android

时间:2016-03-05 10:08:32

标签: android textview touch gesturelistener

我是android新手。我有一个TextView应该在整个屏幕上触摸移动,我也想要使用TextView双击事件。我知道如何移动触摸,我也使用GestureListener获得双标签事件,但我不知道如何合并该代码,因为当我双击textview时它也会调用action down事件。

  private class GestureListener extends GestureDetector.SimpleOnGestureListener {

                // event when double tap occurs
                @Override
                public boolean onDoubleTap(MotionEvent e) {

                    return true;
                }
            }

    tv.setOnTouchListener(new OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent e) {

                    return gestureDetector.onTouchEvent(e);
                }

这样我可以使用触摸方法实现双击。以及触摸移动TextView的方法。

public boolean onTouch(View v, MotionEvent e) {

     switch(event.getAction())
                     {
                        case MotionEvent.ACTION_MOVE:
                        {
                            //some code
                          break;
                        }
                        case MotionEvent.ACTION_UP:
                        {
                            // some code
                          break;
                        }
                        case MotionEvent.ACTION_DOWN:
                        {
                      // some code
                         break;
                        }
                     }
                    return true;
                }

但是如何合并触摸事件并实现移动触摸以及双击。

1 个答案:

答案 0 :(得分:0)

可能有帮助

boolean flag = false;

public boolean onTouch(View v, MotionEvent e) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_MOVE: {
            flag = flase;//on move
            break;
        }
        case MotionEvent.ACTION_UP: {
            // some code
            break;
        }
        case MotionEvent.ACTION_DOWN: {
            if (flag == true) {
                //double tap event
            }
            flag = true;//first tap
            break;
        }
    }
    return true;
}