我正在尝试在我的活动中添加背景,但图像质量不是预期的。
图像在蓝色条纹上方有一个简单的渐变,目前看起来像这样:
我的活动布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/background_register"
android:drawingCacheQuality="high" >
</LinearLayout>
背景描述符(drawable/background_register
):
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:antialias="true"
android:dither="true"
android:filter="true"
android:tileMode="repeat"
android:gravity="center"
android:src="@drawable/background_blue_565" />
目前我有一个描述BitmapDrawable的XML文件,这是actitivy的LinearLayout背景。但我已经尝试了迄今为止我发现的一切。启用抖动,抗锯齿,平铺,RGBA_8888模式...您可以命名。有没有人有我可以尝试的不同解决方案或想法?我会非常感激。
顺便说一句,我目前正在用Galaxy S II开发应用程序。
答案 0 :(得分:42)
首先,请确保您的原始图像看起来不错,这样您就不会从那里得到问题 然后,在onCreate()方法中,执行:
<强>代码1:强>
getWindow().getDecorView().getBackground().setDither(true);
getWindow().setFormat(PixelFormat.RGBA_8888);
<强>推荐使用:强>
。<击> getWindow()addFlags(WindowManager.LayoutParams.FLAG_DITHER); 击>
要将图像显式加载为32位图像(RGBA-8888配置),请在加载视图的位置添加以下内容:
<强>码2:强>
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap gradient = BitmapFactory.decodeResource(getResources(), R.drawable.gradient, options);
findViewById(R.id.main).setBackgroundDrawable(new BitmapDrawable(gradient));
不同方法之间的比较:
(这些都是生成的应用程序的截图)
我的源图像(左侧64种颜色,右侧24位):
image1和image2:
1:原始 64色图像(image1)设置为布局XML的背景:
2:相同的图像(image1),使用 code1 :
3:使用 code1 和 code2 的相同图像(image1):
4:image2,加载 code1 和 code2 (在这种情况下,抖动并不重要,因为源和目标都使用每种颜色8位):
注意原始图像中图像3中产生的瑕疵是如何存在的。
注意:如果有人知道如何缩小图像,请随时编辑此帖...
答案 1 :(得分:5)
问题是您的PNG已转换为256色,在您选择的ZIP工具中打开您的APK并手动检查。如果是这种情况,请确保您的PNG有:
这可以防止它被转换为索引调色板。
答案 2 :(得分:0)
它看起来像是一个图像问题。保存图像和格式的设置是什么?它看起来像我正在寻找的压缩文物。