Wreszcie stworzyłem strukturę, która obsługuje układy i ikony dla wielu ekranów.
Android generalizuje wyświetlanie urządzenia na kategorie na podstawie dwóch parametrów:
- Rozmiar ekranu, fizyczny rozmiar wyświetlacza (mierzony po przekątnej)
- Gęstość ekranu, fizyczna gęstość pikseli wyświetlacza (w pikselach na cal lub ppi) "
Aby szybko określić rozmiar i gęstość ekranu, zainstaluj „ Jaki jest mój rozmiar ” na Androida.
Rozmiar ekranu
Android definiuje cztery uogólnione rozmiary ekranu:
Qualifier Size
small ~3 inches (approx)
normal ~4 inches (approx)
large Exceeds 4 inches
xlarge Exceeds 7 inches
- Większość telefonów jest klasyfikowana jako małe lub normalne (około 3 do 4 cali po przekątnej). Ale teraz jest wiele telefonów z dużym ekranem, takich jak Galaxy S4, HTC One, Xperia Z
- Mały tablet, taki jak Samsung Galaxy Tab, jest klasyfikowany jako duży (większy niż 4 cale)
- Bardzo duże dotyczy dużych urządzeń, na przykład dużych tabletów
Android definiuje cztery uogólnione gęstości ekranu:
Qualifier Description Nominal value
ldpi low density 120 ppi
mdpi medium density 160 ppi
hdpi high density 240 ppi
xhdpi extra high density 320 ppi
Zazwyczaj:
- rozmiar ekranu ma największy wpływ na układy aplikacji
- gęstość ekranu ma największy wpływ na obraz i zasoby graficzne
Podana jest tutaj procentowa różnica ekranu urządzenia
- Ldpi - 75%
- Mdpi- 100% (podstawa według witryny programistów Androida)
- Hdpi - 150%
- XHdpi - 200%
Ale jak wiemy teraz, większość urządzeń ma 480X800, więc uważam to za urządzenie bazowe , więc nasze nowe obliczenia będą się podobać
- Ldpi - 50%
- Mdpi - 66,67%
- Hdpi - 100%
- XHdpi - 133,33%
co oznacza, że pierwsza ikona i projekt zostaną utworzone tylko dla rozdzielczości 480X800, a następnie dla pozostałych (tj. Ldpi, Mdpi, Xhdpi).
Istnieją obrazy, które są wspólne dla wszystkich układów i muszą być jednolite pod względem koloru i kształtu (bez złożonego kształtu, bez krzywej), więc dla tego rodzaju obrazu tworzymy, 9patch
który ma być umieszczony w folderze „drawable (no-suffix)”. Aby stworzyć obraz 9Patch, możesz użyć DrawNinePatch lub BetterNinePatch
Teraz po prostu zmień nazwy swoich obrazów na podstawie standardów Androida i uzupełnij aplikację, hdpi
a następnie po prostu weź drawable-hdpi
folder i otwórz Adode Photoshop (zalecane) utwórz akcję o wielu rozmiarach (po prostu zmień rozmiar zgodnie ze współczynnikiem procentowym) po utworzeniu akcji dla wszystkich rozmiarów, a następnie po prostu wykonaj Batch Automatyzuj i podaj źródło (drawable-hdpi) i miejsce docelowe (drawable-ldpi, drawable-mdpi, drawable-xdpi).
Powodem, dla którego nalegam, abyś używał programu Photoshop, ponieważ automatycznie zmieni rozmiar obrazu za pomocą akcji i jeszcze jeden plus, jest to, że nie musisz zmieniać nazwy pliku (nada mu taką samą nazwę jak oryginalna).
po zakończeniu tworzenia wszystkich obrazów odśwież projekt i przetestuj go.
Czasami może istnieć możliwość, że układ obsługujący ekran (xhdpi, hdpi, mdpi) może zostać przycięty na małym ekranie (ldpi), więc do obsługi tego wystarczy utworzyć dla niego oddzielny folder Layout (layout-small) i dodać ScrollView
(głównie). Otóż to.
Tabletki
Tabletki są podzielone na dwie kategorie.
- 7 "(1024X (600-48 (pasek nawigacyjny))) = 1024X552 (do rysowania - duży)
- 10 "(1280X (800-48 (pasek nawigacyjny))) = 1280X752 (wysuwany - duży)
W tym celu musimy stworzyć obraz dla obu ekranów i po prostu odpowiednio je umieścić
Podsumowując, będziemy mieć ten folder w naszej aplikacji do obsługi wielu ekranów.
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-large
drawable-xlarge
będzie bardziej kombinacją kwalifikatorów z Screen size and Screen density
drawable-large-ldpi
drawable-large-mdpi
drawable-large-hdpi
drawable-large-xhdpi
więcej kwalifikatora z Screen density and Version
drawable-ldpi-v11
drawable-mdpi-v11
drawable-hdpi-v11
drawable-xhdpi-v11
i więcej kwalifikatora z Screen size and Version
drawable-large-v11
drawable-xlarge-v11
i więcej kwalifikatora z Smallest width concept(SW)
drawable-sw???dp
Co więcej, w Androidzie V3.0 Honeycomb wprowadzili nową koncepcję, SW(smallest width)
w której urządzenia są kategoryzowane według szerokości ekranu, więc jeśli tworzymy folder o nazwie, drawable-sw360dp
urządzenie z 720 dp (szerokość lub wysokość) będzie używać zasobów z tego folderu.
na przykład, aby znaleźć przyrostek Samsung Galaxy S3
dp do sufiksu do rysowania-sw? dp
W odniesieniu do obliczania DP , jeśli chcesz wspierać swój układ lub rysować do S3, to obliczenia mówią
px = szerokość urządzenia = 720
dpi = gęstość urządzenia = 320
podana formuła
px = dp * (dpi / 160)
zmienna formuła, ponieważ mamy wartość px
dp = px / (dpi / 160)
teraz dodając wartość,
dp= 720 / (320/160)
dp=360.
więc drawable-sw360dp
wykona pracę
Pobierz konfigurację urządzenia z GsmArena W
ten sam sposób możesz również utworzyć folder zgodnie z wersją Android API urządzenia, tj. Drawable-hdpi-v11`, więc urządzenie, które ma API11 i jest Hdpi, będzie używać tych zasobów.
Dodatkowe wskazówki:
Użyj układów względnych, dp, sp i mm
Jednostki dp - niezależne od urządzenia piksele znormalizowane do 1 fizycznego piksela na ekranie o rozdzielczości 160 ppi, czyli średniej gęstości. Skalowany w czasie wykonywania. Służy do wymiarowania elementów ekranu
jednostki sp - przeskalowane piksele, określone jako wartości zmiennoprzecinkowe, na podstawie jednostek dp, ale dodatkowo skalowane zgodnie z ustawieniem preferencji użytkownika dotyczących rozmiaru czcionki. Skalowany w czasie wykonywania. Użyj dla rozmiarów czcionek
dla układów należy zawsze używać RelativeLayout; AbsoluteLayout jest przestarzałe i nie powinno być używane.
Użyj odpowiednich formatów obrazu - PNG lub JPEG
Android "prefers" PNG for bitmap image files, "accepts" JPEG, and "discourages" GIF.
Jednak PNG i JPEG nie są odpowiednikami. Mają różne kompromisy dotyczące jakości, a PNG nie zawsze jest najlepsze:
JPEG może zapewnić do 50% redukcję rozmiaru pliku w porównaniu z PNG, co jest istotne, jeśli Twoja aplikacja intensywnie obsługuje obrazy
„Stratny” plik JPEG o wyższej jakości może wyglądać lepiej niż mocno skompresowany „bezstratny” plik PNG przy tym samym rozmiarze pliku
Dodaj etykiety do obrazów i grafiki w celu debugowania
Użyj elementu podpory-ekrany
Skonfiguruj swoje emulatory z rzeczywistymi wartościami urządzeń
Zwykle komputery stacjonarne wyświetlają się z rozdzielczością 72 ppi (Mac) lub 96 ppi (Windows, Linux). W porównaniu z urządzeniami przenośnymi wyświetlacze stacjonarne mają zawsze niską gęstość.
Zawsze konfiguruj emulatory Androida tak, aby naśladowały rzeczywiste wartości urządzeń, i zawsze ustawiaj je na skalowanie, aby emulować gęstość urządzenia.
W Eclipse łatwo jest utworzyć wiele emulatorów (z paska menu Eclipse wybierz Okno> AVD Manager> Nowy ) skonfigurowanych z wartościami dla rzeczywistych urządzeń:
Nazwij emulator dla rzeczywistego urządzenia, które emuluje Określ rozdzielczość, nie używaj Wbudowane rozmiary ogólne Ustaw gęstość urządzenia, aby pasowała do rzeczywistego urządzenia (w panelu Sprzęt ustaw abstrakcyjną właściwość LCD na gęstość rzeczywistą, zawsze wartość całkowitą)
Po uruchomieniu urządzenia zawsze wybieraj opcję Skaluj wyświetlacz do rzeczywistego rozmiaru i wpisz rzeczywisty wymiar ekranu w calach.
Jeśli nie ustawisz gęstości urządzenia, emulator domyślnie ustawia niską gęstość i zawsze ładuje zasoby specyficzne dla ldpi. Rozdzielczość (wymiary w pikselach) będą poprawne, ale zasoby obrazu zależne od gęstości nie będą wyświetlane zgodnie z oczekiwaniami.
Oczywiście nic, co zrobisz, nie odtworzy jakości obrazu o wyższej gęstości na wyświetlaczu biurkowym o niższej gęstości.
Oto dane zebrane w ciągu 7 dni kończących się 1 października 2012 r. Aby zobaczyć najnowsze statystyki dotyczące wersji platformy Androida, przejdź tutaj
Na podstawie rozmiaru ekranu
Na podstawie gęstości ekranu