Muszę wyjaśnić pewne wątpliwości dotyczące zasobów graficznych dla mojej aplikacji,
jeśli określę w pliku xml, że wysokość czegoś [widok obrazu] wynosi 50 zanurzeń
jaki typ ekranu wybrać z folderu zasobów?
drawable, hdpi, ldpi, mdpi, xhdpi,
mieć obraz o wysokości 50 pikseli,
i jaki jest procent większych i mniejszych obrazów w porównaniu z obrazem podstawowym,
podobnie jak w iOS, @ 2x, jest dosłownie 2 razy większe od rozmiaru obrazu, a programowo mówisz, że rozmiar normalny
dzięki!
android
android-resources
android-image
android-screen-support
manuelBetancurt
źródło
źródło
Odpowiedzi:
mdpi
to gęstość odniesienia - to znaczy, że 1 piksel namdpi
wyświetlaczu to 1 spadek. Współczynnik skalowania aktywów wynosi:ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4
Chociaż tak naprawdę nie musisz się martwić,
tvdpi
chyba że tworzysz specjalnie dla Google TV lub oryginalnego Nexusa 7 - ale nawet Google zaleca po prostu korzystanie zhdpi
zasobów.Oznacza to, że jeśli robisz obraz 48dip i planujesz obsługiwać do
xxhdpi resolution
, powinieneś zacząć od obrazu 144px (192px, jeśli chcesz mieć zasoby natywne dla xxxhdpi) i wykonać następujące obrazy dla gęstości:ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 36 x 36 | 48 x 48 | 64 x 64 | 72 x 72 | 96 x 96 | 144 x 144 | 192 x 192
I powinny one wyświetlane w mniej więcej tej samej wielkości na dowolnym urządzeniu, pod warunkiem, że umieściliśmy je w gęstości specyficznych folderach (np
drawable-xhdpi
,drawable-hdpi
itp)Dla porównania, gęstości pikseli dla nich to:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 120 | 160 | 213 | 240 | 320 | 480 | 640
źródło
W oparciu o odpowiedź kcoppocka stworzyłem następujący skrypt powłoki, aby automatycznie zmienić rozmiar wszystkich obrazów do odpowiedniego rozmiaru i skopiować je do odpowiednich folderów do rysowania - * - Androida!
Utwórz skrypt powłoki i wklej następujący kod:
createAndroidImages.sh
#!/bin/bash read -p "Please enter the subfolder of the original images? " folder read -p "How many DP (width) should the image have? " dp for i in $(find $folder/. -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done mkdir drawable-ldpi mkdir drawable-mdpi mkdir drawable-tvdpi mkdir drawable-hdpi mkdir drawable-xhdpi mkdir drawable-xxhdpi mkdir drawable-xxxhdpi cp $folder/* drawable-ldpi/ cp $folder/* drawable-mdpi/ cp $folder/* drawable-tvdpi/ cp $folder/* drawable-hdpi/ cp $folder/* drawable-xhdpi/ cp $folder/* drawable-xxhdpi/ cp $folder/* drawable-xxxhdpi/ sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/* sips -Z $(echo $dp | bc) drawable-mdpi/* sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/* sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/* sips -Z $(echo $dp*2 | bc) drawable-xhdpi/* sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/* sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/*
Umieść skrypt w folderze, a oryginalne obrazy w podfolderze, np .:
Uruchom skrypt powłoki w terminalu:
sh createAndroidImages.sh
Aby skopiować utworzone obrazy bezpośrednio do projektu Android Studio:
cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/
Jesteś skończony! Mam nadzieję, że to komuś pomoże!
PS Należy pamiętać, że oryginalne obrazy powinny mieć co najmniej czterokrotnie większą szerokość w pikselach niż żądana szerokość w dpi (np. 4 (współczynnik xxxhdpi) * 30dpi => 120px), aby uzyskać optymalne wyniki.
źródło
kcoppock wykonał świetną robotę, wyjaśniając gęstość ekranu w Andorid. Chciałbym tylko dodać jeszcze jedną kwestię dotyczącą pierwotnego pytania.
Ikona uruchamiania tabletu z systemem Android używa jednego segmentu gęstości w górę.
Według posta Google+ programisty Google Nicka Butchera
Znajdź źródło tutaj
źródło
Oto moje obliczenia dotyczące skalowania w górę i w dół obrazów dla Androida:
ldpi (120 dpi, ekran o niskiej gęstości) - 36px x 36px (0,19) (1)
mdpi (160 dpi, ekran o średniej gęstości) - 48 pikseli x 48 pikseli (0,25) (1,33)
hdpi (240 dpi, ekran o wysokiej gęstości) - 72px x 72px (0,38) (2)
xhdpi (320 dpi, bardzo wysoka gęstość ekranu) - 96px x 96px (0,5) (2,67)
xxhdpi (480 dpi, ekran o bardzo dużej gęstości) - 144px x 144px (0,75) (4)
xxxhdpi (640 dpi, ekran o bardzo dużej gęstości) - 192 piksele x 192 piksele (1,0) (5,33)
Mój krótki artykuł jest pomocny przy tworzeniu zasobów graficznych za pomocą imagemagick, gdy jest wiele obrazów.
źródło