2012-10-30 13 views
6

Chcę wyświetlić obraz png na Androida. Jest to plik obrazu:Dlaczego Android traci jakość obrazu podczas wyświetlania pliku PNG?

enter image description here

Prawy koniec jest nieco ciemniejszy niż lewa.

Ale jakość obrazu stracił na Android (przy użyciu ImageView):

enter image description here

Uwaga udział w czerwonej ramce. Kolor nie zmienia się płynnie.

Ale jeśli mogę użyć przeglądarki mojego telefonu z systemem Android, odgrywa dobre (tak, to nie jest powód ekranie telefonu):

enter image description here

To moja android kod, który jest dość prosta:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
    <ImageView android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/hhh"/> 
</LinearLayout> 

gdzie hhh to moje pierwsze opublikowane zdjęcie, które jest pod res/drawable.

Testuję to na moim telefonie z Androidem (Android 2.3.6) i symulatorze Androida (z Androidem 2.2/2.3/4.0), wszystkie nie wyświetlają się dobrze. Ale gra dobrze na moim android pad (Android 4.0.3).

Na czym polega problem i jak go naprawić?

+1

Spróbuj zapisać PNG z kanałem alfa (piksele nie całkowicie nieprzezroczysta) z edytora obrazów. –

+0

Czy próbowałeś użyć kodu do ustawienia ImageView? Za pomocą kodu można włączyć więcej opcji. Istnieje podobne pytanie, na które odpowiedź może pomóc. http://stackoverflow.com/questions/7312996/how-to-improve-the-image-quality-when-images-are-in-drawable-folder – dumbfingers

+1

http://www.curious-creature.org/ 2010/12/08/bitmap-quality-banding-and-dithering/ – Selvin

Odpowiedz

7

Obrazy w res/drawable są skompresowane. This is supposed to be lossless, ale słyszałem o podobnych problemach w przeszłości.

Przenieś to do res/raw i daj mu szansę.

+0

Po prostu próbowałem 'res/raw', ale bez szczęścia. Przenieśliłem obraz do 'res/raw', i zmieniłem kod na' ', nie wyświetlał się dobrze. – Freewind

+1

Masz problem z łączeniem, czy próbowałeś roztrząsać? To ma kilka opcji/obejść http://stackoverflow.com/questions/4769885/androiddither-true-does-not-dither-whats-wrong –

+0

Odpowiedź z tego pytania działa: Freewind

0

Spróbuj dodać poniższe do swojego Activity i sprawdź, czy to pomaga.

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    Window window = getWindow(); 
    //eliminates color banding 
    window.setFormat(PixelFormat.RGBA_8888); 
} 
+0

dzięki, ale wciąż nie ma szczęścia – Freewind

Powiązane problemy