Android:canvas.drawBitmap和BitmapDrawable.draw之间的区别?

当我想在Android中将CanmapDrawable绘制到Canvas时,有两种可能做同样的事情,我不知道更喜欢哪一种:

  1. 使用canvas.drawBitmap()并使用getBitmap()从drawable中提取Bitmap

  2. 使用drawable.draw(canvas),将canvas作为parameter passing给drawable。

我现在正在使用第一个选项,但它似乎完全随意,因为我看不出任何差异。

谢谢你的回答

不要像你那样做选项号1。 每次想要绘制时,不是从drawable创建位图,而是首先创建一个位图。 也就是说,如果要绘制位图,请不要创建Drawable。 像这样创建一个位图:

mBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.myImage); mBitmap = Bitmap.createScaledBitmap(mBitmap, width, height, true); 

而这只是你做过一次的事情。 之后,就像你一样绘制(canvas.drawbitmap())。

对于选项编号2,您正在正确执行。

现在,存在一些差异。 选项1绘制速度更快,通常对背景图像有益。 根据您是否绘制位图或可绘制,FPS会发生重大变化。 位图更快。

如果您需要缩放,移动和其他types的image processing,选项2是可行的方法。 没有那么快,但如果你想做上面提到的任何事情,别无选择。

希望这可以帮助!