2010-07-14 104 views
0

我在GIMP中爲我的應用程序創建了背景.png。它的分辨率是640x480,它來自Google搜索,似乎是默認模擬器的分辨率。我的問題是,當我將RelativeLayout的背景應用於android:[email protected]/bg並運行它時,圖像中出現很多僞像。彷彿模擬器無法提供足夠的顏色來正確顯示.png。這裏發生了什麼?RelativeLayout中的背景圖像有文物

P.S.這個圖像沒什麼特別,只是簡單的線條和徑向漸變。

回答

0

它的分辨率是640×480,它從 google搜索,似乎是默認的模擬器

640×480分辨率 甚至沒有在Android的官方支持的分辨率,更何況是一個「默認」一。以下是supported resolutions的列表。

此外,你想看你的顏色深度。我忘記了細節,但由於LCD的侷限性,並非所有東西都可以處理24位顏色。

+0

Android似乎只支持16位顏色。 – dfetter88 2010-07-14 22:40:37

+0

另外,如果圖像放置在/ res/raw /中而不是res/drawable /,它將不會在構建時進行優化。這爲圖像質量提供了一些改進。 – dfetter88 2010-07-15 02:36:20

+1

@ dfetter88:這聽起來像是你正在經歷不同屏幕密度的圖像自動調整大小。理想情況下,你提供每個密度的原始圖像。如果沒有,使用'raw/drawable-nodpi /'來繪製一個不會被重新縮放的drawable資源。 – CommonsWare 2010-07-15 12:12:17

0

我收集了3級可能的解決方案:

  1. 對你有,創建並在XML使用位圖繪製每個有問題的圖像。

    缺點是你創建了多個文件。我測試了其他特殊標誌(包括代碼更改),並沒有注意到任何區別。

    RES /抽拉/ 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. 把有問題的圖像中的可繪製-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文件,採取的像素即至少noticable(例如左下),並改變其不透明度爲254代替255.

    這種方法的缺點是它使圖像佔用更多空間,並改變圖像本身。

所有的方法都可以在galaxy s和galaxy s2上使用android 2.3.x。