Цвет фона на холсте Android не соответствует значению цвета

Я создал компонент SurfaceView круговой диаграммы. Когда я устанавливаю цвет фона на # fff0f0f0, цвет на экране имеет розовый оттенок. Когда я снимаю снимок экрана и загружаю его в пакет краски, значение шестнадцатеричного цвета равно f7f3f7. Я использую следующий код для очистки фона;

int backgroundColour = getResources().getColor(R.color.grey);

Paint colour = new Paint();
colour.setAntiAlias(true);
colour.setColor(backgroundColour);

canvas.drawColor(colour.getColor());

Это называется сразу после того, как я звоню;

surfaceHolder.lockCanvas(null)

Я не могу понять, что вызывает эту проблему. Альфа-канал настроен на FF, поэтому из-за него ничего не должно быть.

Просто хочу отметить, что я пробовал с и без альфа-канала

1 ответ

По историческим причинам формат цвета по умолчанию для SurfaceView - RGB_565, что может привести к появлению нахальных оттенков (не говоря уже о бандаже).

Вы можете использовать вызов SurfaceHolder # setFormat(), чтобы изменить формат цвета на RGB_888 или RGBA_8888.

licensed under cc by-sa 3.0 with attribution.