滑动和滚动一起工作

时间:2013-02-24 10:57:11

标签: android

我正在制作一个应用程序,其中我有一个textview(占据我的大部分活动)。 Textview在多个页面上显示大量文本(页面只是分配到字符串数组中的大文本,而每个数组元素都显示在页面更改触发器上)。我使用下面线程中的代码来引入向右/向左滑动来浏览页面。

Android: How to handle right to left swipe gestures

以下是我在所有人中使用的确切代码。

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
        }
    });

到目前为止一切正常。现在我想为我的textview启用垂直滚动,以防我的文字超出屏幕高度。因此,我在代码中添加了以下行来执行相同的操作。

myTextView.setMovementMethod(new ScrollingMovementMethod());

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

0 个答案:

没有答案