在我的應用程序中,我有一個自定義視圖,它呈現一些位圖並使用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)
是什麼?我在推理中的錯誤在哪裏?