Android:翻转网页视图

时间:2012-02-28 06:41:46

标签: android

我在android工作。我想创建一个我想要执行webview翻转的应用程序。我用图像完成了Flip操作,但我不知道如何在网页中使用翻转操作。

假设我的网页长度比我的屏幕大,那么我想在用户使用右翻时显示该页面的剩余内容。 通常我们使用垂直滚动条来查看页面的剩余内容,但我不想使用滚动条,我想在下一页显示页面的剩余内容,我们必须为此进行翻转。

例如: -

enter image description here

我希望你能理解我想要的东西,如果对我的问题有任何疑问,请随时24小时在这里随时问我。

您可以向我推荐一些与此相关的网络链接。

提前谢谢你......

2 个答案:

答案 0 :(得分:2)

加载页面后,请尝试:

View v = getYourWebView();
v.setDrawingCacheEnabled(true);

//cheat to force webview to draw itself
v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 
v.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
v.setDrawingCacheEnabled(false); // clear drawing cache

然后你可以滚动你的webview并再次进行,这样你就可以有两个可以翻转的位图。 您还可以尝试将webview放入scrollview并将webview设置为较大的高度,这样您就可以立即捕获整个网站的位图。

答案 1 :(得分:0)

这里的代码是未经测试的,概念证明代码 - 但是考虑到你的问题,你似乎仍处于原型设计阶段。让我知道你怎么去!

此处描述的方法适用于“原子地”翻页 - 即,用户滑动手指,然后页面更改。如果您在实际页面卷曲之后,则需要将我在此处写的内容与http://code.google.com/p/android-page-curl/之类的内容结合起来。

首先,子类WebView根据Fling Gesture and Webview in Android附加GestureListener和GestureDetector。为方便起见,我在这里复制了代码。

class MyWebView extends WebView {
    Context context;
    GestureDetector gd;

    public MyWebView(Context context) {
        super(context);

        this.context = context;
        gd = new GestureDetector(context, sogl);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gd.onTouchEvent(event);
    }

    GestureDetector.SimpleOnGestureListener sogl = new GestureDetector.SimpleOnGestureListener() {
        public boolean onDown(MotionEvent event) {
            return true;
        }

        public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
            if (event1.getRawX() > event2.getRawX()) {
                // Scroll up
            } else {
                // Scroll down
            }
            return true;
        }
    };
}

然后,当用户以某种方式甩开“页面”时,请执行以下操作;

  • 根据@ Deadeye的回答,将WebView的当前内容呈现为位图

例如:

View v = getYourWebView();
v.setDrawingCacheEnabled(true);

// Cheat to force WebView to draw itself
v.measure(
    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
);

v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 
v.buildDrawingCache(true);

Bitmap b = Bitmap.createBitmap(v.getDrawingCache());
v.setDrawingCacheEnabled(false);
  • 将WebView向下滚动一个视口的长度

使用jQuery并完成它:

$(document).scrollTop($(document).scrollTop()+$(window).height());
  • 将下一页渲染为第二个位图

然后使用您已编写的任何页面翻转逻辑将其翻转掉:)