我创建了一个自定义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,它运行正常,无法将其插入到我的画布中。
答案 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