我一直在尝试让 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 作为背景图像。
我在drawable-hdpi中放置了一个XML文件“background_dither.xml”,其内容如下:
<?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" />
它引用了drawable-hdpi中的实际图像background.png。包含较大颜色渐变的图像确实显示出来了,但色带很重。根据我从 SDK 中了解到的情况,可以通过使用 /above 代理图像定义并指定 android:dither="true" 来缓解这种情况。然而,这完全没有效果。
我缺少什么来让抖动工作?
EDIT
: 已上传来源在这里 http://rapidshare.com/files/444144083/lottofee.zip
EDIT2
:在阅读完所有建议的方法后,都无法帮助消除色带罗曼·盖伊 (Romain Guy) 的这篇博文 http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/我想检查我的 PNG 背景是否有 Alpha 通道。事实并非如此。添加一个后,android实际上似乎使用RGB8888,正如帖子中所说,并且条带消失了(也适用于2.2)。仍然想知道为什么其他方法不起作用。
EDIT3
:必须确保 PNG 不仅具有 Alpha 通道,而且至少有一个具有 Alpha 值 != FF 的像素,否则 Android 构建工具将再次将该位图剥离为没有 Alpha 通道的索引调色板。