如何在Android中添加PNG图像作为背景而不进行任何更改(绑定)?

时间:2011-10-12 14:20:16

标签: android image png

我正在尝试添加一个包含渐变的背景(我想使用图像,而不是android xml声明的渐变效果)。

这个图像被Android严重破坏了,它添加了一些蹩脚的条带,无论我尝试的结果是相同的(两个捕获大约相同区域的扭曲/正常图像):

distorted normal

我的图片用作布局XML中的布局背景:

android:background="@drawable/background_gradient_dithered"

我尝试使用中间drawable来强制xml为:

的抖动
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/background_gradient" android:dither="true" android:antialias="true" android:filter="true"/>

我尝试在onCreate()中使用以下代码:

getWindow().setFormat(PixelFormat.RGBA_8888);

两次尝试都没有改变。

由于

3 个答案:

答案 0 :(得分:2)

正确的解决方案是....我敢打赌你猜错了:重启Eclipse。我已经学会了,Android上的每个问题都可能是“重启Eclipse问题”。

经过一些测试后,我可以补充一点,当Format设置为PixelFormat.RGBA_8888时,启用dethering无效

读者应该看一下@ TenFour04给出的答案,这种方法可以避免使drawable只是为了启用抖动。

window.addFlags(WindowManager.LayoutParams.FLAG_DITHER);

编辑:

我发现即使有了这些技巧,问题也会持续存在。您可以尝试修改PNG以在其中包含alpha图层(例如,将像素更改为99%的透明度),这会迫使Android编译器不使用它。

答案 1 :(得分:1)

尝试在onCreate()中添加它。较旧版本的Android默认不抖动。

Window window = getWindow();
window.setFormat(PixelFormat.RGBA_8888);
window.addFlags(WindowManager.LayoutParams.FLAG_DITHER);

答案 2 :(得分:0)

我解决了,只需更改.png文件的大小。我将它们放在mdpi中并使用Irfanview&lt; -open源图像编辑器将其调整为1024x7xx&lt; - 不记得,this comes too handy 我为300 dpi设置了它。所以他们在平板电脑和东西上下载它,希望这有助于:)