zoukankan      html  css  js  c++  java
  • (转载)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搜索一下,晚上都有的

  • 相关阅读:
    【Zookeeper】源码分析之Leader选举(一)
    【Zookeeper】源码分析之网络通信(三)之NettyServerCnxn
    【Scala】Scala之Methods
    【Zookeeper】源码分析之网络通信(二)之NIOServerCnxn
    【Zookeeper】源码分析之网络通信(一)
    【Zookeeper】源码分析之请求处理链(四)之FinalRequestProcessor
    【Zookeeper】源码分析之请求处理链(三)之SyncRequestProcessor
    【Scala】Scala之Classes and Properties
    【Zookeeper】源码分析之请求处理链(二)之PrepRequestProcessor
    【Zookeeper】源码分析之请求处理链(一)
  • 原文地址:https://www.cnblogs.com/greywolf/p/2825348.html
Copyright © 2011-2022 走看看