这是我观点的最简化版本。
public class MyView extends View {
private int mBackgroundColor = android.R.color.white;
@Override
public void setBackgroundColor(int color) {
super.setBackgroundColor(color);
mBackgroundColor = color;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(mBackgroundColor);]
//canvas.drawColor(mBackgroundColor, Mode.CLEAR);
//canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint);
}
}
当从活动中调用setBackgroundColor
时,问题是背景颜色不会改变。我想我没有看到明显的。
解决:
从nmJohn那里得到关于clipRect
//Clear the screen
canvas.clipRect(0, 0, viewWidth, viewHeight, Region.Op.REPLACE);
mPaint.setColor(mBackgroundColor);
canvas.drawRect(0, 0, viewWidth, viewHeight, mPaint);
//Draw the image
canvas.clipRect(mRectDst.left, mRectDst.top, mRectDst.right, mRectDst.bottom, Region.Op.REPLACE);
canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint);
为未来寻求者提供一个暗示
请确保提供 android.graphics.Color 即十六进制格式而不是android.R.color。[White / Black / ..]暂时不知道。
答案 0 :(得分:0)
drawColor只设置当前剪辑的背景颜色。尝试将clipRect设置为画布区域。
另外,请确保您的视图实际上已失效,否则将无法调用onDraw。