2010-05-30 12 views
7

Nie mogę sprawić, że mój ImageView wyświetli obraz źródłowy w oryginalnym rozmiarze. ImageView wygląda następująco:Android: ImageView skaluje obraz źródłowy

<ImageView 
android:id="@+id/Logo" 
android:src="@drawable/logo" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
> 
</ImageView> 

Źródłem obrazu wynosi 140 pikseli szerokości, ale na ekranie Nexus One, który jest 480 pikseli szerokości wykorzystuje połowę szerokości. Użycie wartości bezwzględnych w px lub dp dla szerokości i wysokości nic nie zmienia. Obraz wygląda również bardzo antyaliasingu ze skalowania. Dlaczego tak się dzieje i jak mogę temu zapobiec?

Odpowiedz

7

Najprawdopodobniej system Android skaluje obraz, ponieważ nie powiedziałeś mu, że obsługujesz duże ekrany. Dodaj suitable <supports-screens> element do manifestu i zobacz, czy to pomaga.

+0

Po prostu wypróbowałem twoją sugestię i na pewno ma to coś wspólnego. Dziękuję Ci bardzo! Obraz ma teraz "prawidłowy" rozmiar, jeśli użyjemy wymiarów obrazu jako bezwzględnych wartości pikseli dla width_width i height_hearts. Jeśli używam wrap_content, obraz jest wciąż tak duży, jak wcześniej, który, jak się wydaje, ma taki sam rozmiar, jak w przypadku użycia wymiarów obrazu z "dp" jako wymiaru. Zgaduję, że właśnie tak działa wrap_content. W takim przypadku wydaje się, że obraz jest wyświetlany zbyt duży na urządzeniu z ekranem o wysokiej gęstości, takim jak Nexus. –

+0

Co jest nadal dziwne, jeśli używam wrap_content dla layout_width i layout_height, ale użyj bezwzględnych wartości pikseli dla maxWidth i maxHeight, która nie ma wpływu. Ponieważ korzystanie z wymiarów w pikselach jest odradzane w każdym razie, zastanawiam się, czy są jakieś inne sposoby, aby zapobiec powiększeniu obrazu? –

+1

Prawdopodobnie potrzebujesz dwie wersje twojego obrazu, jeden dla ekranów o średniej gęstości i jeden dla ekranów o wysokiej gęstości. Spróbuj umieścić obraz w 'res/drawable-hdpi /' i sprawdź, czy to pomaga. – CommonsWare

Powiązane problemy