当我想在Android中的Canvas中绘制BitmapDrawable时,有两种可能做同样的事情,我不知道更喜欢哪一种:
使用canvas.drawBitmap()并使用getBitmap()从drawable中提取位图
使用drawable.draw(canvas),将画布作为参数传递给drawable。
我现在正在使用第一个选项,但它似乎完全随意,因为我看不出任何差异。
感谢您的回答
答案 0 :(得分:10)
永远不要像你那样做第1号选项。不是每次想要绘制时都使用drawable创建位图,而是首先创建一个位图。也就是说,如果要绘制位图,请不要创建Drawable。像这样创建一个位图:
mBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.myImage);
mBitmap = Bitmap.createScaledBitmap(mBitmap, width, height, true);
这就是你曾经做过的事情。之后,就像你一样画画(canvas.drawbitmap())。
对于选项编号2,您正确地执行此操作。
现在,存在一些差异。 选项1绘制速度更快,通常适用于背景图像。根据您是否绘制位图或可绘制,FPS会发生重大变化。位图更快。
如果您需要缩放,移动和其他类型的图像处理,选项2是可行的方法。没有那么快,但如果你想做上面提到的任何事情,别无选择。
希望这有帮助!