1

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

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

我的网络视图类:

public class finishWebView extends WebView
{

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

获取主要活动的原始资源:

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 提供的代码片段,我已经到了这里,但是现在这只是显示一个空白屏幕。

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,它工作正常,只是无法将它插入到我的画布中。

4

1 回答 1

0

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

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

于 2013-10-04T03:09:34.303 回答