Проблема совместимости с градиентом – ICS по умолчанию уменьшает количество цветов, чем все предыдущие версии Android

2.3.3 слева, ICS справа (эмулятор). Обратите внимание на разницу эффектов затухания градиента внутри красного прямоугольника.

Император Gingerbread (2.3.3) вышел, эмулятор ICS (4.0.3) вправо. Обратите внимание на разницу эффектов затухания градиента внутри красного прямоугольника (открыть в отдельном окне, чтобы увидеть полноразмерное изображение).

Фон Mainview:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/app_bg" android:orientation="vertical" > ... </LinearLayout> 

app_bg.xml

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#000" android:centerColor="#333" android:endColor="#000" android:angle="270" /> </shape> 

Что вызывает эту проблему? Как это исправить, чтобы градиент ICS выглядел так же гладко, как версия 2.3.3? Возникает ли проблема только на эмуляторе?

Я думаю, проблема в том, что андроид (справа) рисует градиент, используя меньшее количество цветов. Я считаю, что вы хотите включить сглаживание, чтобы помочь замаскировать падение глубины цвета. Возможно, посмотрите на эту ссылку ответа

Я не совсем уверен, как это работает, но я считаю, что андроид иногда по умолчанию будет использовать режим RGB_565, даже если устройство способно использовать 24-битные цвета.

ICS автоматически добавляет эффект градиента, если аппаратное ускорение включено в приложении. Также возможно принудительное аппаратное ускорение для всех приложений, вы заметите, что некоторые приложения будут иметь градиентный фон, а не черный.

Я заметил, что использование PixelFormat.RGBA_8888 не помогло.
Вы также можете попробовать добавить флаг сглаживания: window.addFlags(WindowManager.LayoutParams.FLAG_DITHER); ,
Вы можете увидеть мой предыдущий связанный ответ о сглаживании и цветах здесь:
Ужасное фоновое качество изображения в Android

Просто проверено на устройстве ICS 4.0.3: это проблема только с эмулятором .