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!
Author: Jonik, 2012-07-20

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
 358
Author: kcoppock,
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.

 22
Author: Ben Marten,
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

 4
Author: geng,
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.

 1
Author: Vishal Kumar Sahu,
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