我正在尝试绘制到Bitmap,因此我可以将自定义视图放在imageView中。onDraw方法中的代码是:
public void onDraw(Canvas canvas) {
Bitmap drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888);
canvas.setBitmap(drawGraph);
canvas.drawBitmap(drawGraph, 0, 0, bgPaint);
我的问题是,如果我尝试以这种方式使用Bitmap,我只会得到一个黑屏。我知道如果我不尝试绘制位图,我的其余代码就会显示。
如果我注释掉该行
canvas.setBitmap(drawGraph);
然后一切都很完美,所以这就是问题,但我不知道为什么。
我哪里错了?
答案 0 :(得分:6)
原来我必须创建第二个画布。我的工作代码仅适用于可能需要它的人:
public void onDraw(Canvas canvas) {
Canvas singleUseCanvas = new Canvas();
drawGraph = Bitmap.createBitmap(canvas.getWidth(),canvas.getHeight(),Bitmap.Config.ARGB_8888);
singleUseCanvas.setBitmap(drawGraph);
canvas.drawBitmap(drawGraph, 100, 100, bgPaint);
答案 1 :(得分:1)
我认为是canvas
和canvas2
二分法。尝试仅使用canvas2(参数)进行绘制。
答案 2 :(得分:0)
AFAIK最有效的方法是覆盖可绘制的设置器。
@Override
public void setImageBitmap(Bitmap bm) {
bmp = bm;
}
@Override
public void setImageDrawable(Drawable drawable) {
try {
bmp = ((BitmapDrawable) drawable).getBitmap();
} catch (Exception e){
log(e.toString());
}
}