在我的应用程序中,我有一个自定义视图,它呈现一些位图并使用onDraw()
. 画布最初是用一种颜色填充的。基本上我有以下代码:
public static int COLOR = Color.rgb(200, 50, 50);
@Override
public void onDraw(Canvas canvas) {
canvas.drawColor(COLOR);
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565);
Canvas c = new Canvas(bitmap);
c.drawColor(COLOR);
canvas.drawBitmap(bitmap, 0, 0, null);
}
我期待代码创建一个连续的红屏;位图以不同的红色渲染,因此它的位置是可见的。为了分析颜色,我对其进行了截图 - 位图是用(206,48,49)
而不是(200,50,50)
.
显然,这必须与使用 RGB_565 而不是 ARGB_8888 的位图有关(虽然我不想使用)。所以我的问题是,如何用 RGB_565 颜色填充视图的画布以解决这些颜色问题?
我尝试通过删除最低有效位( , , )来转换(200,50,50)
为 RGB_565 ,但当然这在这里没有什么区别。Android在内部做什么?我的推理错误在哪里?red >> 3
green >> 2
blue >> 3
(206,48,49)
(200,50,50)