Skocz do zawartości
Luki_2

Pixel Ratio w Androidzie - większy ekran, mniejsze elementy?

    Rekomendowane odpowiedzi

    Luki_2

    Pisząc hybrydową aplikacje na Androida, konkretnie na Cordovie, dobrze jest uwzględnić taki twór jak Pixel Ratio. Tym samym, jeżeli mamy grafikę 100px i przygotowywaliśmy ją na podstawie Pixel Ratio wynoszącego 1.0, to kolejno dla Pixel Ratio: 0.75, 1.0, 1.5, 2.0 powinna to być grafika 75px, 100px, 150px i 200 px.

    Większa rozdzielczość na tym samym ekranie da większe zagęszczenie pikseli i jeżeli będzie to odpowiednio większa rozdzielczość, to załapiemy się na wyższe Pixel Ratio co pozwoli wyświetlić także większe grafiki na takowym ekranie.

    Co jednak się stanie, jeżeli mamy tą samą rozdzielczość ekranu, jednak jeden ekran jest 2x większy od drugiego? Wtedy ten większy ekran będzie mieć zdecydowanie mniejsze DPI/PPI, co przełoży się na dużo mniejsze Pixel Ratio i w efekcie na 2x większym ekranie dostaniemy mniejsze elementy, niż dostalibyśmy je na tym 2x mniejszym ekranie o takiej samej rozdzielczości.

    Mamy dwa urządzenia:

    208 DPI - Microsoft Surface Pro 2, 10.6 cali, 1920x1080 (można dać tu dowolny tablet o takiej rozdzielczości i wielkości)
    445 DPI - Google Nexus 5, 5 cali, 1920x1080

    Pierwszy ma 2x większy ekran, a przez to, że taką samą rozdzielczość, ma także 2x mniejsze DPI. Google w "poradniku" programowania pod WebView, a więc Cordovie, pisze o tym, aby uzależniać wyświetlaną grafikę właśnie od DPI, a konkretnie od wynikającego z niego Pixel Ratio. W uproszczeniu: im większe DPI, tym większe Pixel Ratio i co za tym idzie, grafika wyświetlana na ekranie także ma być większa. Tylko co w sytuacji jak wyżej? Na 2x większym ekranie o takiej samej rozdzielczości zostanie wyświetlona mniejsza grafika z powodu mniejszego DPI?

     

    Dobrze myślę? Mam nadzieję, że źle.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Nie wiem jak w cordovie, ale natywnie w androidzie to odpowiedź brzmi tak - grafikę uzależniamy od gęstości pikseli. Pierwsze podpada pod hdpi, a drugie pod xxhdpi. Dzięki temu ikonki na małych ekranach o dużych rozdzielczościach nie są za małe. W hdpi wykorzysta ikonkę np. 150x150, a w xxhdpi 300x300, co sprawi, że wielkościowo fizycznie na tych dwóch urządzeniach będzie wyglądać mniej więcej tak samo.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Luki_2

    Tak, wszystko się zgadza. Dopóki mówimy o małych ekranach i ich dużych rozdzielczościach np. Full HD. Co jednak, jeżeli weźmiemy ekran 2x większy i damy mu tą samą rozdzielczość? Wtedy jego gęstość pikseli będzie dwukrotnie mniejsza. Co za tym idzie? A no to, że na mniejszym ekranie mamy gęstość pikseli o oznaczeniu xxhdpi, a na tym większym mamy np. hdpi. Efekt jest taki, że na 2x większym ekranie wyświetlają nam się 2x mniejsze grafiki niż na tym 2x mniejszym ekranie... zgadza się? Wielkie dzięki za odpowiedź. To dla mnie istotne.

    Edytowane przez Luki_2

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Tak jest, grafiki będą mniejsze (tj. będą mieć mniej pikseli). Zresztą spróbuj to sprawdzić doświadczalnie.

    Edytowane przez derjack

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Luki_2

    Zaś dzięki za odpowiedź. No tak, będą mieć mniej pikseli na większym ekranie, jeżeli rozdzielczość będzie taka sama jak na np. tym 2x mniejszym ekranie. Ja jakby wiem mniej więcej, że będą te grafiki mniejsze, ale tak bardzo nie chce mi się w to wierzyć, że dopytywałem i właśnie od Ciebie uzyskałem odpowiedź. No ale dlaczego? Przecież to nielogiczne. Im większy ekran z tą samą rozdzielczością, tym mniejsze elementy graficzne w aplikacji (mniej pikseli) co jest dla mnie co najmniej dziwne.

     

    Zrobię sobie aplikację, obsłużę nawet XXXHDPI, a jakiś tam 2x większy tablet niż Nexus 4, ale z taką samą rozdzielczością wyświetli mi grafiki o mniejszej ilości pikseli niż na Nexusie 4? Wydaje się to dziwne. Przecież powinien wyświetlić takie same jak na Nexusie 4.

    Edytowane przez Luki_2

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    asmok

    Może ja czegoś nie rozmiem, ale skoro ekran jest przykładowo 2 x większy, a ma identyczną rozdzielczość, to trzeba wyświetlić grafiki o dwkrotnie mniejszej rozdzielczości żeby element na obydwu ekranach miał ten sam rozmiar.

    No chyba że ktoś na większym ekranie chce mieć wszystko proporcjonalnie większe, ale to dopiero byłoby bez sensu. Mieć większe urządzenie a mieścić na nim tyle samo co na mniejszym. Duże ekrany wtedy nie miały by sensu.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Luki_2

    Hmm, chyba nie do końca. Przecież z aplikacjami jest często zupełnie odwrotnie. Chcemy wyświetlać aplikacje o większym proporcjonalnie rozmiarze na większym ekranie o tej samej rozdzielczości. Zaś sama rozdzielczość jest postrzegana nie tylko poprzez pryzmat "większa rozdzielczość - więcej wolnego miejsca na ekranie", a też przede wszystkim przez to, że większą gęstość pikseli uważa się za lepszą, bo im drobniejszy piksel, tym mniej dostrzegalny przez oko i to jest na plus. Wpływa niby na ogólny odbiór ekranu i jego ostrości. Podobnie jest z filmami - dzięki większej rozdzielczości nie widzisz więcej, a ostrzej, wyraźniej itp.

     

    Piszę "chyba nie do końca", bo możesz mieć rację, a ja się mogłem zagalopować nieco, patrząc w stronę proporcjonalnych aplikacji. Chyba nawet masz, bo nie widzę rozsądniejszego wytłumaczenia tego zjawiska. Jednak po co komu dużo mniejsze ikonki do obsługi aplikacji na dużym ekranie, jeżeli aplikacja jest nieskomplikowana i nie wyświetla tylu funkcji czy opcji, aby np. pokazała się lista przewijania nawet na mniejszym ekranie? Żeby było trudniej kliknąć palcem w mniejszy element?

     

    Mimo wszystko dzięki, bo dałeś mi do zrozumienia tzn. uświadomiłeś mi, że to, do czego chce dążyć - jest alternatywną ścieżką, a nie główną. Nie pojmowałem sobie tworzenia designu z uwzględnieniem DPI jako ścieżki do jednakowego rozmiaru na każdym ekranie. Znów sobie coś upierdzioliłem w głowie, tym razem "DPI na innym ekranie lub o innej rozdzielczości musi zwiększać lub zmniejszać grafiki" i to mnie zgubiło, bo jest to sprzeczne z zachowaniem przecież tego samego rozmiaru elementów na 2x większym ekranie, choć jest to zachowane właśnie poprzez zmniejszenie elementów. Znów zbyt łatwo popadłem w schemat myślowy, co niestety zdarza mi się. Niepotrzebnie sobie wkręciłem to i przeniosło się to na niezrozumienie faktu, że przecież chodzi o zachowanie tego samego rozmiaru na 2x większym ekranie. W każdym razie, mogę Twój post uznać za rozwiązanie problemu. Dzięki jeszcze raz :)

     

    To co pokreślone wyżej jest nieaktualne, nie ma co czytać. To są dość luźne przemyślenia. @@asmok, Twój post jest rozwiązaniem mojego problemu. Uświadomiłeś mi, że popadłem już nie pierwszy czy drugi raz w schemat myślowy. W moim rozumowaniu DPI musiało coś zwiększać lub zmniejszać w pikselach i błędnie, automatycznie (wg schematu) przeniosłem sobie to bezpośrednio na rzeczywistość. A przecież jest tak jak piszesz - poprzez zmniejszenie dwukrotne elementów na 2x większym ekranie osiągamy taki sam ich rozmiar rzeczywisty, więc to że elementy będą mniejsze jest pozorne. ;) Jak chcesz dodaj drugi post w ramach odpowiedzi na ten, to postawię Ci dwa forumowe piwa :P

    Edytowane przez Luki_2

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.