3 回答
![?](http://img1.sycdn.imooc.com/533e52b90001456f02000200-100-100.jpg)
TA贡献1806条经验 获得超8个赞
建议取决于你想要做什么。
如果您担心控件需要很长时间才能绘制,并且您想要绘制位图以便您可以通过blit重新绘制位图而不是通过画布重新绘制,那么您不希望双重猜测平台 - 控件自动将其绘图缓存到临时位图,甚至可以使用控件从控件中获取这些位图getDrawingCache()
如果要使用画布绘制位图,通常的配方是:
使用创建正确大小的位图
Bitmap.createBitmap()
使用
Canvas(Bitmap)
构造函数创建指向此位图的画布实例画到画布上
使用位图
![?](http://img1.sycdn.imooc.com/5458471300017f3702200220-100-100.jpg)
TA贡献1798条经验 获得超7个赞
所以你创建一个新的Bitmap,例如:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )
同width和height是一样的画布。
接下来,使用canvas.setBitmap(myBitmap),但不是drawBitmap()。
在你打电话之后setBitmap,你在画布上绘制的所有内容实际上都是myBitmap通过我所说明的示例代码来实现的。
编辑:
您无法直接创建位图,例如:
Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 );
你必须使用:
Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 );
![?](http://img1.sycdn.imooc.com/545847f50001126402200220-100-100.jpg)
TA贡献1812条经验 获得超5个赞
其他例子:
public Bitmap getBitmapNews(int item , boolean selected, int numbernews){
Bitmap bitmap;
if(selected)
bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true);
else
bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true);
Canvas canvas = new Canvas(bitmap);
if(numbernews<10){
canvas.drawBitmap(mNotiNews[numbernews],0,0,null);
}else{
canvas.drawBitmap(mNotiNews[0],0,0,null);
}
return bitmap;
}
- 3 回答
- 0 关注
- 438 浏览
添加回答
举报