【问题标题】:Drawing WebView into set position on Canvas将 WebView 绘制到 Canvas 上的设定位置
【发布时间】:2013-09-28 10:34:58
【问题描述】:

我创建了一个自定义 WebView,将用于播放 gif 文件。现在我需要将它绘制到我的画布上的特定位置并使用设定的大小。

但是,我不完全确定如何将这个包含 Gif 的 webView 转换为位图,以便我可以将其插入到 Canvas 上的正确位置。

我的 WebView 类:

public class finishWebView extends WebView
{

    public finishWebView(Context context, String path) 
    {
        super(context);
        loadUrl(path);
    }
}

获取主Activity的原始资源:

finishWebView view = new finishWebView(context, "file:///android_asset/test.gif");

将我的图像转换为正确尺寸并插入画布的原始代码:

finish = BitmapFactory.decodeResource(getResources(), R.drawable.finish);
finish = Bitmap.createScaledBitmap(finish, (PhoneWidth / 5), (PhoneWidth / 5), true);

protected void onDraw(Canvas canvas)
{
    canvas.drawBitmap(finish, (j * totalCellWidth), (i * totalCellHeight), null);
}

所以本质上,我需要找到一种方法来绘制带有 gif 图像的 webView 显示在我的画布中的指定位置,类似于我目前使用 'canvas.drawBitmap(...)' 所做的。

----------------------------------- 编辑 ----------- -----------------------------

使用 mikejonesguy 提供的代码 sn-p,我已经到了这里,但是现在这只是显示一个空白屏幕。

public static Bitmap createBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565);
    Canvas c = new Canvas(b);
    v.draw(c);
    return b;
}

// Within onDraw
GIFView gifView = new GIFView(context);
canvas.drawBitmap(createBitmapFromView(gifView), (j * totalCellWidth), (i * totalCellHeight), null);

我已经在普通的 xml 布局页面上测试了我的 GIFView,它可以正常工作,只是无法将它插入到我的画布中。

【问题讨论】:

  • 我通过扩展 View 而不是 Webview 创建了 GifView,它工作正常。它还可以从 sdcard 和资源中播放 gif 图像。
  • 你有任何示例代码,让我知道你是如何实现它的,以及如何将它添加到我的 onDraw 中具有动态大小的设置位置?

标签: java android webview android-canvas gif


【解决方案1】:

有几种方法可以将视图转换为位图。这种方法是一种方式:

public static Bitmap createBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);
    Canvas c = new Canvas(b);
    v.draw(c);
    return b;
}

当然,你必须等到你的 webView 完成加载 GIF 之后,才能调用它来获取位图。

如果您只是想播放动画 gif,那么其他 SO 帖子可能会有所帮助:Showing gif in android

【讨论】:

  • 不太确定您的上述代码如何帮助我将 gif 实现到画布中的集合/动态位置?
  • 以上代码将 webview 转换为位图,然后您可以随意绘制。不过,让我问一下,你真的需要 webview(即你的布局中的 webview 部分对用户可见吗?或者你只需​​要 GIF 吗?
  • 我只需要在画布上的固定位置绘制 gif,所以不,我不需要 webview。但是,不确定如何播放 gif。基本上我想在我原来的问题中使用我的代码只是用 gif 图像替换位图“完成”。
  • 如果是这种情况,我在上面链接到的其他 SO 帖子中的示例代码是您的最佳选择。将 GIF 解码为电影,然后绘制电影。
  • 我还是 android 开发的新手,似乎真的无法将这个实现到我的画布中,不确定我缺少什么。不断获得空指针,已经尝试过您的版本和其他版本。我需要在哪里定义函数以及如何正确引用它们以获取空点。
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
相关资源
最近更新 更多