首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >复制的Webview

复制的Webview
EN

Stack Overflow用户
提问于 2014-03-28 07:58:14
回答 2查看 1.1K关注 0票数 1

我的问题是:

我想在屏幕上显示完全相同的网站两次。我的第一个方法是有两个Webviews,并在其中的每个加载网站。问题是性能很差(我正在加载的网站相当复杂)。

我的第二种方法是在其中一个WebView中加载网站,并将其复制到第二个。我在这个方法上失败了。

我最后一次尝试的是扩展Webview,因为它给了它两个Canvas。但我完全不知道该怎么做。这就是我来这里的原因

关于我的问题的更多规范:

布局:

代码语言:javascript
运行
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.josselin.panoviewer.MainActivity"
tools:ignore="MergeRootFrame"
android:orientation="horizontal">

<WebView 
    android:id="@+id/left"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.5"/>
<WebView 
    android:id="@+id/right"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.5"/>

</LinearLayout>

正如您所看到的,非常简单:每个视图都占屏幕的一半。网站和用户之间不会有任何互动。

我的目标是制作一个应用程序,让用户可以看到网站使用陀螺仪和加速度计与杜洛维斯潜水。

如果你有一个更好的方法,我都睁大了耳朵!

编辑1:这是我的BitmapWebview,它在参数中包含两个ImageView。我在ImageView位图画布中绘制,而不是在Webview中绘制:

代码语言:javascript
运行
复制
public class BitmapWebView extends WebView {

private ImageView left, right;
private Bitmap bm;
private Canvas cn;

public BitmapWebView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

public void setImagesViews(ImageView left, ImageView right){
    this.left = left;
    this.right = right;
}

private int width, height;

@Override
protected void onSizeChanged(int w, int h, int ow, int oh) {
    super.onSizeChanged(w, h, ow, oh);
    this.width = w;
    this.height = h;
    bm = Bitmap.createBitmap(this.width, this.height, Config.ARGB_8888);
    cn = new Canvas(bm);
    this.left.setImageBitmap(bm);
    this.right.setImageBitmap(bm);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(cn);
}

}

我现在的问题是,网站中的一些图片是用ajax加载的,所以没有在ImageView中显示.

编辑2:解决方案

起作用了!这里的解决方案是:我没有从webview中绘制imageView画布,而是在扩展的ImageView中使用了WebView的绘图功能:

代码语言:javascript
运行
复制
public class MyImageView extends ImageView {

private WebView webview;

public MyImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

public void setWebView(WebView webview){
    this.webview = webview;
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    this.webview.draw(canvas);
    this.invalidate();
}

}

谢谢大家的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-28 09:01:29

我想你可以捕捉原始网页的图像,并在任何你想要的地方显示这个图像。但是,以这种方式,您不能触摸复制页面上的URL链接或HTML输入/按钮,因为它只是原始页面的屏幕截图。

更确切地说,你可以:

  1. 使用WebViewClassic.saveViewState()loadViewState()保存和显示网页的副本。

或者:

  1. 使用将导致android.graphics.Picture对象的WebView.capturePicture()

或者您也可以参考: Tab.capture()来查看如何创建WebView的快照。

!!!请注意,这些方法在不同的API级别上可能不一致。

票数 0
EN

Stack Overflow用户

发布于 2014-03-28 08:38:32

如果性能不佳的原因是请求and服务,则可以使用HttpClient查询and内容并使用WebView。loadDataWithBaseURL ()将此内容放在两个put视图中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22707174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档