Android Canvas绘制多帧图像

时间:2012-12-17 22:12:25

标签: android android-canvas

我有一个不同帧的图像要显示,如下所示:

Multiframe gif

正如你所看到的那样,图像有三个框架,全心,半心和空白。

现在我只需要三个中的一个帧。我只是想知道是否有一种方法可以在android sdk中使用单个gif来做到这一点。 例如,在几种语言中有一种方法,如:

canvas.drawImage(xpos,ypos,xwidth,xheight,gifx,gify,gifwidth,gifheight)

其中gifx,gify,gifwidth,gifheight是所选框架的坐标和大小。

1 个答案:

答案 0 :(得分:1)

好的,我回答自己,我刚刚找到了解决方案。

为了绘制复帧图像,可以使用以下方法:

public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)

其中:

  • 位图bitamp 是使用BitmapFactory.decodeResource(或通过您首选的方法)获得的Bitmap资源。
  • Rect src 是要显示的帧(可以为null)
  • Rect dst rhe矩形,位图将被缩放/翻译以适应(它可以为null)
  • 用于绘制位图的绘画(可以为空)

另一种方式(我没有经过测试)可能正在使用 BitmapRegionDecoder 首先必须使用BitmapRegionDecoder.newInstance创建对象的新实例( ...) 然后可以用以下方法获得所选择的位图区域:

public Bitmap decodeRegion (Rect rect, BitmapFactory.Options options)

其中rect是要显示的选定区域。有关BitmapRegionDecoder的更多信息: http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html