Я пытаюсь заставить андроида сгладить фоновый образ активности - пока что безуспешно. Я не знаю, что случилось.
Это то, что я сделал:
Корневым элементом моего макета активности является LinearLayout:
<LinearLayout android:id="@+id/AbsoluteLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:gravity="center_horizontal"
android:background="@drawable/background_dither">
где я добавил @drawable/background_dither в качестве фонового изображения. Я поместил XML файл "background_dither.xml" в drawable-hdpi со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/backimg"
android:src="@drawable/background"
android:dither="true"
android:antialias="true" />
который ссылается на фактическое изображение background.png в drawable-hdpi. Изображение, которое включает в себя большой цветной градиент, действительно появляется, но с интенсивной цветовой гаммой. Из того, что я узнал из SDK, это можно смягчить, используя определение представления прокси файла /above вместе с указанием android: dither = "true". Это, однако, не имеет никакого эффекта.
Что мне не хватает, чтобы работать сглаживание?
EDIT
: Загрузил источники
EDIT2
: После того, как ни один из предложенных методов не помог избавиться от цветовой гаммы, прочитав это сообщение в блоге от Ромена Гая, я идея проверить, имеет ли мой фон PNG альфа-канал. Это не так. После добавления одного, андроид, по-видимому, использует RGB8888, как сказано в сообщении, и полоса пропускания (также для 2.2). Все еще интересно, почему другие методы не работали.
EDIT3
: нужно убедиться, что PNG имеет не только альфа-канал, но и, по крайней мере, один пиксель с альфа-значением!= FF, в противном случае инструменты сборки андроида снова разделит это растровое изображение на индексированная палитра без альфа-канала.