(转载)ViewFlipper 如何翻页(页面内容是WebView)

问题:试过论坛里的翻页方法,但是当页面时WebView控件时,翻页就无效了。感觉好像事件被WebView给截去了。
哪位高手给说说该如何做呀?
注:想实现如下功能ViewFlipper里面添加三个WebView,通过手势来切换。

方案:

自己新建一个继承WebView,比如MyWebView.重写他的onTouchEvent方法。晚上很多例子。你搜索一下。

public class MyWebView extends WebView {

        float downXValue;
        long downTime;
        private ViewFlipper flipper;

        private float lastTouchX, lastTouchY;
        private boolean hasMoved = false;

        public MyWebView(Context context, ViewFlipper flipper) {
                super(context);
                this.flipper = flipper;
        }

        @Override
        public boolean onTouchEvent(MotionEvent evt) {

                boolean consumed = super.onTouchEvent(evt);
                if (isClickable()) {
                        switch (evt.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                                lastTouchX = evt.getX();
                                lastTouchY = evt.getY();
                                downXValue = evt.getX();
                                downTime = evt.getEventTime();
                                hasMoved = false;
                                break;
                        case MotionEvent.ACTION_MOVE:
                                hasMoved = moved(evt);
                                break;
                        case MotionEvent.ACTION_UP:
                                float currentX = evt.getX();
                                long currentTime = evt.getEventTime();
                                float difference = Math.abs(downXValue - currentX);
                                long time = currentTime - downTime;

                                Log.i("Touch Event:", "Distance: " + difference + "px Time: "
                                                + time + "ms");
                                /** X轴滑动距离大于100,并且时间小于220ms,并且向X轴右方向滑动   && (time < 220) */
                                if ((downXValue < currentX) && (difference > 100 && (time < 220))) {
                                        /** 跳到上一页 */
                                        this.flipper.setInAnimation(AnimationUtils.loadAnimation(
                                                        this.getContext(), R.anim.push_right_in));
                                        this.flipper.setOutAnimation(AnimationUtils.loadAnimation(
                                                        this.getContext(), R.anim.push_right_out));

                                        flipper.showPrevious();

                                }
                                /** X轴滑动距离大于100,并且时间小于220ms,并且向X轴左方向滑动 */
                                if ((downXValue > currentX) && (difference > 100) && (time < 220)) {
                                        /** 跳到下一页 */
                                        this.flipper.setInAnimation(AnimationUtils.loadAnimation(
                                                        this.getContext(), R.anim.push_left_in));
                                        this.flipper.setOutAnimation(AnimationUtils.loadAnimation(
                                                        this.getContext(), R.anim.push_left_out));
                                        flipper.showNext();
                                }

                                break;
                        }
                }
                return consumed || isClickable();
        }

        private boolean moved(MotionEvent evt) {
                return hasMoved || Math.abs(evt.getX() - lastTouchX) > 10.0
                                || Math.abs(evt.getY() - lastTouchY) > 10.0;
        }

}
动画的XML搜索一下,晚上都有的

原文地址:https://www.cnblogs.com/greywolf/p/2825348.html