4

我正在制作一个应用程序,其中有一个文本视图(占用了我的大部分活动)。Textview 跨多个页面显示大量文本(页面只不过是分配给字符串数组的大文本,并且每个数组元素都显示在页面更改触发器上)。我使用下面线程中的代码来介绍右/左滑动以在页面之间导航。

Android:如何处理从右到左的滑动手势

以下是我在全部中使用的确切代码。

public class OnSwipeTouchListener extends Activity implements OnTouchListener{

private final GestureDetector gestureDetector = new GestureDetector(getBaseContext(), new GestureListener());

public boolean onTouch(final View v, final MotionEvent event) {
    //super.onTouch(v, event);
    return gestureDetector.onTouchEvent(event);
}

private final class GestureListener extends SimpleOnGestureListener {

    private static final int SWIPE_THRESHOLD = 100;
    private static final int SWIPE_VELOCITY_THRESHOLD = 100;

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

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        boolean result = false;
        try {
            float diffY = e2.getY() - e1.getY();
            float diffX = e2.getX() - e1.getX();
            if (Math.abs(diffX) > Math.abs(diffY)) {
                if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffX > 0) {
                        onSwipeRight();
                    } else {
                        onSwipeLeft();
                    }
                }
            } 
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return result;
    }
}

public void onSwipeRight() {
}

public void onSwipeLeft() {
}

然后这就是我在活动中使用这个类的方式

        myTextView.setOnTouchListener(new OnSwipeTouchListener() {
        public void onSwipeRight() {
            displayPreviousPage() //code to display previous page
        }
        public void onSwipeLeft() {
            displayNextPage()  //code to display next page
        }
    });

到目前为止一切正常。现在我想为我的文本视图启用垂直滚动,以防我的文本超出屏幕高度。因此,我在代码中添加了以下行来做同样的事情。

myTextView.setMovementMethod(new ScrollingMovementMethod());

但这似乎不起作用。任何建议为什么?是不是我在 OnSwipeTouchListener 类中重写了 onFling 方法,并且 setMovementMethod 也使用相同的(onFling 方法)来实现它?

4

0 回答 0