在我的应用程序中,我有一个自定义视图,它呈现一些位图并使用onDraw()
将它们绘制到视图的画布上。画布首先填充颜色。基本上我有以下代码:Android:如何在View.onDraw()中使用RGB_565颜色来匹配位图颜色
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颜色填充视图的画布以解决这些颜色问题?
我试图通过降低至少显著位(red >> 3
,green >> 2
,blue >> 3
)转换(200,50,50)
到RGB_565,但当然不会在这里做一个区别。 Android在内部从(200,50,50)
获得(206,48,49)
是什么?我在推理中的错误在哪里?