2013-04-22 12 views
5

Mam ekran o wielkości 600 (szerokość) x 1024 (wysokość). Otrzymuję bieżącą szerokość 600, ale niepoprawnie osiągam wysokość 976 (bez obracanego ekranu). Otrzymuję aktualną szerokość 1024, ale źle otrzymuję wysokość 552 (z obróconym ekranem).Niewłaściwa szerokość i wysokość wyświetlania w systemie Android

int rowPixelWidth = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth(); 
       int rowWidth = (int)Math.floor(rowPixelWidth/this.getResources().getDisplayMetrics().density); 
       int rowPixelheight = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight(); 
       int rowheight = (int)Math.floor(rowPixelheight/this.getResources().getDisplayMetrics().density); 
       Log.d("rowWidth","rowWidth"+rowWidth); 
       Log.d("rowheight","rowheight"+rowheight); 
------------------------------------------------------------- 
<uses-sdk 
     android:minSdkVersion="3" 
     android:targetSdkVersion="8" /> 
    <supports-screens android:anyDensity="true"/> 
------------------------------------------------------------- 

Co jest nie tak z tym kodem?

Oto niektóre numery dla typowych szerokości ekranu:

  1. 320dp: typowy ekran telefonu (240x320 ldpi, 320x480 MDPI, 480x800 hdpi, etc).
  2. 480dp: nowy tablet, taki jak pasmo (480x800 mdpi).
  3. 600dp: tablet 7 "(600 x 1024 mdpi).
  4. 720dp: tablet 10 "(720 x 1280 mdpi, 800 x 1280 mdpi itd.).

uzyskać bieżącą szerokość, ale nie dostać bieżącą wysokość dla każdego urządzenia (bez (320x480 ekranu).

Staram kod z Get screen dimensions in pixels ale sama wystąpić problem.

+3

Twój kod jest poprawny. Niektóre urządzenia odejmują obszar ekranu od poprzednich przycisków sprzętowych, którymi są teraz przyciski dotykowe na wyświetlaczu, od dostępnej rozdzielczości ekranu. –

+0

Otrzymuję aktualną szerokość i wysokość tylko 320 (szerokość) x 480 (wysokość) ekran, ale nie otrzymuję aktualnej szerokości i wysokości innego ekranu. – AnilPatel

+0

I dlaczego jest to problem? –

Odpowiedz

9

wierzę getDefaultDisplay daje tylko okno, w którym ma być wyświetlana aplikacja, nie uwzględnia innych rzeczy, takich jak pasek powiadomień na górze lub przyciski android (strona główna, tył ...) na dole itp.

To pewnie dlatego zobacz różnicę 48 pikseli w ve wielkość rtęci w obu przypadkach.

WIĘCEJ INFO

Kod wydaje się być w porządku i podobna do tego, co there. Możesz również użyć czegoś podobnego do wersji this answer, aby użyć właściwego interfejsu API dla odpowiedniej wersji Androida.

W każdym razie rozmiar, który otrzymasz, nie będzie zawierał paska nawigacji z miękkimi przyciskami Androida, gdy są obecne.

Po uruchomieniu Androida 4.1 na ekranie HVGA nie ma paska nawigacyjnego ani łączonego paska (ekran jest za mały), więc otrzymujesz rozdzielczość dla całego ekranu.

Jeśli uruchomisz tę samą wersję na większym ekranie, zobaczysz pasek nawigacji, rozmiar ekranu dostępny dla Twojej aplikacji będzie mniejszy, a dostaniesz tylko rozdzielczość dla tego miejsca.

Proszę sprawdzić definicje paska nawigacyjnego i innych here, jeśli nie są jasne.

+0

48 pikseli różniących się ekranem o wymiarach 600x1024, ale nie 48 pikseli różniących się ekranem 480x800. Proszę mi pomóc. – AnilPatel

+1

Co daje ci w przypadku 480x800? Jakie wersje Androida to te urządzenia? – Matthieu

+0

Przepraszam Matthieu, ja niewłaściwy rozmiar typu 480X800, ale mój cuurent rozmiar 320X480 (ekran HVGA) nie dostaję różnych 48 pikseli, ale dostaję aktualną szerokość (320) i wysokość (480). proszę pomóż mi. – AnilPatel

0

Wysokość ekranu z powyższym kodem nie zawiera przycisków android (strona główna, tył, ostatnie aplikacje) na dole o szerokości 48 pikseli. W rezultacie uzyskuje się wysokość ekranu wynoszącą 1024-48 = 976.

Powyższa funkcja określa obszar, w którym aplikacja może być widoczna. Możliwe jest utworzenie aplikacji jako aplikacji pełnoekranowej, która ukryje pasek powiadomień u góry, ale nadal nie będzie ukrywać paska przycisków Androida (strona główna, wstecz, ostatnie aplikacje) na dole. Maksymalna przestrzeń ekranu, jaką można wykorzystać to 1024-48 = 976 px.

Jednak w niektórych telefonach przyciski android nie są częścią ekranu, w takich przypadkach można użyć całego 1024 px ekranu.

Powiązane problemy