Rozmiary ekranu powitalnego Androida pasują do wszystkich urządzeń
Mam pełnoekranowy PNG, który chcę wyświetlić na splash. Jest tylko jeden błąd i nie mam pojęcia
jaki rozmiar umieścić w każdym folderze (ldpi
, mdpi
, hdpi
, i xhdpi
). Moja aplikacja ma działać dobrze i pięknie na wszystkich telefonach i tabletach. Jakie rozmiary (w pikselach) należy utworzyć, aby splash wyświetlał się ładnie na wszystkich ekranach?
9 answers
Disclaimer
Ta odpowiedź pochodzi z 2013 roku i jest poważnie przestarzała. Począwszy od Androida 3.2 istnieje teraz 6 grup gęstości ekranu. Ta odpowiedź zostanie zaktualizowana tak szybko, jak będę mógł, ale bez ETA. Zobacz oficjalną dokumentację dla wszystkich gęstości w tej chwili (chociaż informacje na temat konkretnych rozmiarów pikseli są jak zawsze trudne do znalezienia).
Oto wersja tl / dr
-
Utwórz 4 obrazy, po jednym dla każdej gęstości ekranu:
- xlarge ( xhdpi): 640x960
- Duży (hdpi): 480x800
- medium (mdpi): 320x480
- mały( ldpi): 240x320
-
Przeczytaj 9-patch image introduction W Android Developer Guide
- projektuj obrazy, które mają obszary, które można bezpiecznie rozciągnąć bez uszczerbku dla efektu końcowego
Dzięki temu Android wybierze odpowiedni plik dla gęstości obrazu urządzenia, a następnie rozciągnie obraz zgodnie z 9-łatką standard.
Koniec tl; Dr. pełny post przed
[2]}odpowiadam w odniesieniu do aspektu związanego z projektem pytania. Nie jestem programistą, więc nie będę w stanie dostarczyć kodu do implementacji wielu z dostarczonych rozwiązań. Niestety, moją intencją jest pomoc projektantom, którzy są tak samo zagubieni, jak ja, gdy pomagałem w tworzeniu mojej pierwszej aplikacji na Androida. Dopasowanie do wszystkich rozmiarów]} Z Androidem, firmy mogą rozwijać swoje telefony komórkowe i stoły niemal każdej wielkości, z prawie każdym chcą rozdzielczości. Z tego powodu nie ma "odpowiedniego rozmiaru obrazu" dla ekranu powitalnego, ponieważ nie ma stałych rozdzielczości ekranu. Stanowi to problem dla osób, które chcą zaimplementować ekran powitalny.Czy Twoi użytkownicy naprawdę chcą zobaczyć ekran powitalny?
(na marginesie, ekrany powitalne są nieco zniechęcane wśród facetów od użyteczności. Twierdzi się, że użytkownik już wie, na jakiej aplikacji nacisnął, a znakowanie obrazu za pomocą ekranu powitalnego nie jest konieczne, ponieważ tylko przerywa doświadczenie użytkownika z "reklamą". Należy go jednak używać w aplikacjach, które wymagają znacznego obciążenia po zainicjowaniu (5s+), w tym gier i tym podobnych, aby użytkownik nie zastanawiał się, czy aplikacja się zawiesiła, czy nie)
Gęstość ekranu; 4 klasy
Biorąc pod uwagę tak wiele różnych rozdzielczości ekranu w telefonach dostępnych na rynku, Google wdrożyło kilka alternatyw i sprytnych rozwiązań, które mogą pomóc. Pierwszą rzeczą, którą musisz wiedzieć, jest to, że Android oddziela wszystkie ekrany na 4 różne gęstości ekranu:
- niska gęstość (ldpi ~ 120dpi)
- średnia gęstość (mdpi ~ 160dpi)
- Wysoka gęstość (hdpi ~ 240dpi)
- bardzo wysoka gęstość (xhdpi ~ 320dpi) (Te wartości dpi są przybliżeniami, ponieważ niestandardowe urządzenia będą miały różne wartości dpi)
To, co (jeśli jesteś projektantem) musisz wiedzieć, to to, że Android w zasadzie wybiera spośród 4 obrazów do wyświetlenia, w zależności od urządzenia. Więc zasadniczo musisz zaprojektować 4 różne obrazy (chociaż więcej można opracować dla różnych formatów, takich jak panoramiczny, tryb pionowy/krajobrazowy itp.).
Mając to na uwadze, wiedz jedno: jeśli nie zaprojektujesz ekranu dla każdej pojedynczej rozdzielczości używanej w systemie Android, twój obraz będzie rozciągał się do rozmiaru ekranu. I jeśli twój obraz nie jest w zasadzie gradientem lub rozmyciem, otrzymasz niepożądane zniekształcenia z rozciąganiem. Masz więc zasadniczo dwie opcje: Utwórz obraz dla każdego ekranu połączenie rozmiaru/gęstości lub utworzenie czterech 9-łat obrazów.
Najtrudniejszym rozwiązaniem jest zaprojektowanie innego ekranu powitalnego dla każdej pojedynczej rozdzielczości. Możesz zacząć od uchwał w tabeli na końcu tej strony (jest ich więcej. Przykład: 960 x 720 nie jest tam wymieniony). Zakładając, że na obrazie są małe szczegóły, takie jak mały tekst, musisz zaprojektować więcej niż jeden ekran dla każdej rozdzielczości. Na przykład obraz 480x800 wyświetlany na nośniku ekran może wyglądać dobrze, ale na mniejszym ekranie (o większej gęstości/dpi) logo może stać się zbyt małe lub niektóre teksty mogą stać się nieczytelne.
9-patch image
Innym rozwiązaniem jest stworzenie 9-patchowego obrazu . Jest to zasadniczo przezroczysta ramka o rozmiarze 1 piksela wokół obrazu, a rysując czarne piksele w górnym I lewym obszarze tej ramki, możesz określić, które części obrazu będą mogły się rozciągać. Nie będę wdawał się w szczegóły jak 9-patch images praca, ale krótko mówiąc, piksele, które wyrównują się do oznaczeń w górnym I lewym obszarze, są pikselami, które zostaną powtórzone w celu rozciągnięcia obrazu.
Kilka podstawowych zasad
- możesz tworzyć te obrazy w Photoshopie (lub dowolnym oprogramowaniu do edycji obrazów, które może dokładnie tworzyć przezroczyste pngs).
- 1-pikselowa ramka musi być w pełni przezroczysta.
- 1-pikselowa przezroczysta ramka musi być wokół Twojego obrazu, a nie tylko u góry i po lewej stronie.
- you can only draw czarny (#000000) pikseli w tym obszarze.
- górna i lewa krawędź (definiująca rozciąganie obrazu) może mieć tylko jedną kropkę (1 x 1 x 1 x), dwie kropki (1 x 1 x) lub jedną ciągłą linię (szerokość x 1 x lub 1 x wysokość).
- jeśli zdecydujesz się użyć 2 kropek, obraz zostanie proporcjonalnie powiększony (więc każda kropka będzie rozszerzać się na zmianę, aż do osiągnięcia ostatecznej szerokości/wysokości)
- ramka 1px musi być oprócz zamierzonych wymiarów pliku bazowego. So a 100x100 9-patch obraz musi mieć 102x102 (100x100 +1px na górze, dole, lewej i prawej)
- obrazy z 9 łatek muszą kończyć się znakiem *.9.png
Możesz więc umieścić 1 kropkę po obu stronach logo (w górnej ramce) oraz 1 kropkę nad i pod nim (na lewej ramce), a te zaznaczone wiersze i kolumny będą jedynymi pikselami do rozciągnięcia.
Przykład
Oto 9-patchowy obraz, 102x102px (ostateczny rozmiar 100x100, do celów aplikacji):Oto 200% zoom o tym samym obrazku:
Zwróć uwagę na znaki 1px na górze i po lewej stronie mówiące, które wiersze / kolumny będą się rozszerzać.
Oto jak wyglądałby Ten obraz w 100x100 wewnątrz aplikacji:
A oto co by było gdyby rozbudowano go do 460x140:
Ostatnia rzecz do rozważenia. Obrazy te mogą wyglądać dobrze na ekranie monitora i większości telefonów komórkowych, ale jeśli urządzenie ma bardzo wysoką gęstość obrazu (dpi), obraz również wyglądałby małe. Prawdopodobnie nadal czytelny, ale na tablecie O Rozdzielczości 1920x1200 obraz pojawiałby się jako bardzo mały kwadrat pośrodku. Więc jakie jest rozwiązanie? Zaprojektuj 4 różne 9-łatkowe obrazy wyrzutni, każdy dla innego zestawu gęstości. Aby upewnić się, że nie nastąpi kurczenie, należy zaprojektować najniższą wspólną rozdzielczość dla każdej kategorii gęstości. Kurczenie się jest tutaj niepożądane, ponieważ 9-patch zapewnia tylko rozciąganie, więc w procesie kurczenia mały tekst i inne elementy mogą stracić czytelność.Oto lista najmniejszych, najczęściej spotykanych rozdzielczości dla każdej kategorii gęstości:
- xlarge( xhdpi): 640x960
- Duży (hdpi): 480x800
- medium (mdpi): 320x480
- mały( ldpi): 240x320
Zaprojektuj więc cztery ekrany powitalne w powyższych rozdzielczościach, rozwiń obrazy, umieszczając przezroczystą ramkę 1px wokół płótna i zaznacz, które wiersze/kolumny będą rozciągliwe. Należy pamiętać, że te obrazy będą używane dla dowolnych urządzenie w kategorii gęstości, więc twój obraz ldpi (240 x 320) może być rozciągnięty do 1024x600 na bardzo dużym tablecie o małej gęstości obrazu (~120 dpi). Tak więc 9-patch jest najlepszym rozwiązaniem do rozciągania, o ile nie chcesz mieć zdjęcia lub skomplikowanej grafiki na ekranie powitalnym (pamiętaj o tych ograniczeniach podczas tworzenia projektu).
Ponownie, jedynym sposobem, aby to rozciąganie nie miało miejsca, jest zaprojektowanie jednego ekranu każdej rozdzielczości (lub jednego dla każdej kombinacji rozdzielczość-gęstość, jeśli chcesz uniknąć zbyt małych/dużych obrazów na urządzeniach o wysokiej/niskiej gęstości) lub powiedzieć obrazowi, aby nie rozciągał się i aby kolor tła pojawiał się wszędzie tam, gdzie wystąpi rozciąganie (Pamiętaj również, że określony kolor renderowany przez silnik Androida prawdopodobnie będzie wyglądał inaczej niż ten sam konkretny kolor renderowany przez photoshop, ze względu na profile kolorów).
Mam nadzieję, że to ma jakiś sens. Powodzenia!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-28 21:46:18
TRYB PORTRETOWY
MDPI to 320x480 dp = 320x480px (1x)
LDPI wynosi 0,75 x MDPI = 240x360px
HDPI to 1,5 x MDPI = 480X720PX
XHDPI to 2 x MDPI = 640X960PX
XXHDPI to 3 x MDPI = 960x1440px
XXXHDPI wynosi 4 x MDPI = 1280x1920px
TRYB KRAJOBRAZOWY
MDPI wynosi 480x320 dp = 480x320px (1x)
LDPI wynosi 0,75 x MDPI = 360x240px
HDPI to 1.5 x MDPI = 720x480px
XHDPI to 2 x MDPI = 960x640px
XXHDPI jest 3 x MDPI = 1440x960px
XXXHDPI wynosi 4 x MDPI = 1920x1280px
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
2018-10-11 14:46:57
Portret
LDPI: 200x320px
MDPI: 320x480px
HDPI: 480X800PX
XHDPI: 720px1280px
Krajobraz
LDPI: 320x200px
MDPI: 480x320px
HDPI: 800x480px
XHDPI: 1280x720px
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 02:51:22
Szukałem najlepszej i najprostszej odpowiedzi, aby zrobić obraz 9-patch. Teraz, aby 9 patch obraz jest najprostszym zadaniem.
Od https://romannurik.github.io/AndroidAssetStudio/index.html możesz zrobić 9-patchowy obraz dla wszystkich rozdzielczości-XHDPI, HDPI, MDPI,LDPI jednym kliknięciem.
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-01-18 02:12:51
Używanie PNG nie jest dobrym pomysłem. W rzeczywistości jest to kosztowne, jeśli chodzi o wydajność. Możesz użyć rysowalnych plików XML, na przykład, Tło Facebook .
To pomoże Ci płynnie i przyspieszyć wydajność, a do wykorzystania logo .9 patch images.
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-11-28 18:48:52
Density buckets
LDPI 120dpi .75x
MDPI 160dpi 1x
HDPI 240dpi 1.5x
XHDPI 320dpi 2x
XXHDPI 480dpi 3x
XXXHDPI 640dpi 4x
px / dp = dpi / 160 dpi
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-11-11 14:36:41
W moim przypadku użyłem listy drawable w stylu.xml. Z listą warstw można rysować, wystarczy jeden png dla wszystkich rozmiarów ekranu.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/flash_screen</item>
<item name="android:windowTranslucentStatus" tools:ignore="NewApi">true</item>
</style>
I flash_screen.xml w folderze drawable.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white"></item>
<item>
<bitmap android:src="@drawable/background_noizi" android:gravity="center"></bitmap>
</item>
"background_noizi" to png w folderze drawable. Mam nadzieję, że to pomoże
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-10-27 10:51:54
Jakiś czas temu utworzyłem plik Excela o obsługiwanych wymiarach
Mam nadzieję, że to będzie pomocne dla kogoś
Szczerze mówiąc straciłem pomysł, ale odnosi się do innej funkcji ekranu jako rozmiar (nie tylko gęstość)
https://developer.android.com/guide/practices/screens_support.html
Proszę mnie poinformować, jeśli są jakieś błędy
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
2016-10-04 03:47:46
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-06-29 06:57:21