Informacje o rozmiarach obrazów i zasobów systemu Android
Muszę wyjaśnić pewne wątpliwości dotyczące zasobów graficznych dla mojej aplikacji,
Jeśli w pliku xml podam, że wysokość czegoś [widok obrazka] wynosi 500 mm
Jaki rodzaj ekranu wybrać z folderu zasoby?
drawable, hdpi, ldpi, mdpi, xhdpi,
Aby mieć obraz o wysokości 50 px,
I jaki jest procent dla większych, mniejszych obrazów w porównaniu do obrazu podstawowego,
Jak w iOS, @2x, jest dosłownie 2 razy większy od obrazu, a ty mówisz programowo rozmiar normalny,
Dzięki!4 answers
mdpi
gęstość odniesienia - czyli 1 px na wyświetlaczu mdpi
jest równa 1 dip. 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 użycie hdpi
aktywó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 wykonaj 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 być wyświetlane w przybliżeniu w tym samym rozmiarze na każdym urządzeniu, pod warunkiem, że umieściłeś je w folderach o gęstości (np. drawable-xhdpi
, drawable-hdpi
, itd.)
Dla odniesienia, gęstości pikseli dla nich są:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
120 | 160 | 213 | 240 | 320 | 480 | 640
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 12:00:14
Na podstawie odpowiedzikcoppock 's utworzyłem następujący skrypt powłoki, aby automatycznie zmienić rozmiar wszystkich obrazów do odpowiedniego rozmiaru i skopiować je w odpowiednich folderach Android drawable -* -!
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.:
/
.. createAndroidImages.sh
.. originalImages/
....a123.png
....b456.png
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!
P. S. należy pamiętać, że oryginalne obrazy powinny mieć co najmniej cztery razy szerokość w pikselach, niż pożądana szerokość w dpi (np. 4 (współczynnik xxxhdpi) * 30dpi => 120px) dla uzyskania optymalnych wyników.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-23 14:19:21
Kcoppock zrobił świetną robotę wyjaśniając Andorid gęstości ekranu. Chciałbym tylko dodać jeszcze jeden punkt dotyczący pierwotnego pytania.
Ikona uruchamiania tabletu z Androidem wykorzystuje jedno wiadro gęstości w górę.
Według programisty Google Nick Butcher ' S Google+ post
[[0]}wspaniały ekran Nexusa 10 wpada do kubła gęstości XHDPI. Na tabletach Launcher używa ikon z jednego kubła gęstości w górę [0], aby uczynić je nieco większymi. Aby zapewnić, że ikona launchera (prawdopodobnie najważniejszy zasób aplikacji) jest wyraźna musisz dodać ikonę 144*144px w folderze drawable-xxhdpi lub drawable-480dpi.
Znajdź źródło tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-14 05:44:16
Oto moje obliczenia do skalowania i skalowania 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 średniej gęstości) - 48px x 48px (0.25) (1.33)
Hdpi (240 DPI, ekran o wysokiej gęstości) - 72px x 72px (0.38) (2)
Xhdpi (320 DPI, ekran o bardzo wysokiej gęstości) - 96px x 96px (0.5) (2.67)
Xxhdpi (480 dpi, ekran Extra-extra-high density) - 144px x 144px (0.75) (4)
Xxxhdpi (640 DPI, ekran Extra-extra-Extra-high density) - 192px x 192px (1.0) (5.33)
Mój krótki artykuł jest pomocny w tworzeniu zasobów obrazu przy użyciu imagemagick, gdy istnieje wiele obrazów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 07:45:38