在Web画面上将WebView绘制到设置位置

时间:2013-09-23 13:41:28

标签: java android webview android-canvas gif

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

但是,我并不十分确定如何将包含Gif的webView转换为Bitmap,以便我可以将其插入到Canvas上的正确位置。

我的WebView类:

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(...)'。

----------------------------------- EDIT ----------- -----------------------------

使用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,它运行正常,无法将其插入到我的画布中。

1 个答案:

答案 0 :(得分: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