RelativeLayout中的背景图像具有工件

时间:2010-07-14 20:23:44

标签: android

我为GIMP中的应用程序创建了一个背景.png。它的分辨率是640x480,来自谷歌搜索,似乎是默认模拟器的分辨率。我的问题是当我将背景应用于RelativeLayout android:background=@drawable/bg并运行它时,图像中有很多工件。好像模拟器无法提供足够的颜色来正确显示.png。这是怎么回事?

P.S。这个图像没什么好看的,只是简单的线条和径向渐变。

2 个答案:

答案 0 :(得分:0)

  

它的分辨率是640x480,来自   谷歌搜索,似乎是决议   对于默认模拟器

640x480甚至不是Android中官方支持的分辨率,更不用说是“默认”分辨率了。以下是supported resolutions

的列表

另外,您想要观察颜色深度。我忘记了细节,但由于LCD的限制,并非一切都必须处理24位色。

答案 1 :(得分:0)

我收集了3个可能的解决方案:

  1. 对于您拥有的每个有问题的图像,在xml中创建并使用可绘制的位图。

    缺点是您创建了多个文件。我已经测试了其他特殊标志(包括代码更改),并没有发现任何差异。

    res / drawable / image_file.xml

    <?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
      android:src="@drawable/problematic_image" />
    
  2. 将有问题的图像放在drawable-nodpi文件夹中。缺点是它会以这种方式使用更多RAM,因为它不会根据密度缩小。类似的方法可以在代码中完成:

    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inDensity = 1;
    options.inSampleSize = 1;
    options.inTargetDensity = 1;
    options.inJustDecodeBounds = false;
    final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.problematic_image, options);
    imageView.setImageBitmap(bitmap);
    
  3. 如果文件是png文件,请取一个最不显眼的像素(例如左下角),并将其不透明度更改为254而不是255.

    这种方法的缺点是它使图像占用更多空间,并改变图像本身。

  4. 所有方法都适用于galaxy s和galaxy s2,使用android 2.3.x。