Я пытался заставить Android сглаживать фоновое изображение действия - пока безуспешно.Понятия не имею, что не так.
Это то, что я сделал:
Корневым элементом моего макета активности является 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, это можно смягчить, используя определение прокси-образа / выше вместе с указанием android: dither = "true".Это, однако, не имеет абсолютно никакого эффекта.
Чего мне не хватает, чтобы заставить работать дизеринг?
EDIT
: здесь загружены источники
EDIT2
: после того, как ни один из предложенных методов не помог избавиться от цветных полос, после прочтения этого сообщения в блоге от Romain Guy у меня была идея проверить, есть ли на моем фоне PNG альфа-канал.Это не так.После добавления одного android фактически использует RGB8888, как сказано в посте, и полоса исчезла (также для 2.2).Все еще задаюсь вопросом, почему другие методы не работали.
EDIT3
: Нужно убедиться, что PNG имеет не только альфа-канал, но и хотя бы один пиксель, который имеет альфа-значение! = FFв противном случае инструменты сборки Android снова обрежут это растровое изображение до индексированной палитры без альфа-канала.