2018 Cum pentru a obține dimensiunea ecranului Android și software-ul o dată pentru totdeauna Android
Androizii .help comunitatea Android-română.
Cum pot afla dimensiunea ecranului și software-ul, în unități utilizate evenimente senzoriale și vedere la măsurare / aspectul. Cu alte cuvinte, vreau coordonatele în colțul din dreapta jos al ecranului. în sistemul de coordonate utilizat de evenimente senzoriale „getRawX () / getRawY () și View.getLocationOnScreen ().
Este o bibliotecă de cod pe care ar trebui să funcționeze, indiferent dacă cererea este în „modul de compatibilitate“ sau (de exemplu, targetSdkVersion și x = 10 vmanifeste) nu, și eu, de asemenea, nu doresc să facă presupuneri cu privire la poziția, mărimea, sau existența în bara de stare, sau orice alte decoratiuni de afișare similare.
Dimensiunea ecranului în unitățile dorite. uita la evenimente senzoriale și măsurare vedere este 360x640, kogdaprilozhenie este în modul ecran COMPAT. 540x960, nu kogdaprilozhenie modul ecran COMPAT. Acesta este numărul am nevoie pentru a găsi un program, nu afectează evenimentele de atingere sau idei, pentru a le găsi, dar am dificultăți în găsirea extremă orice API care ar reveni aceste cifre.
Arată și DisplayMetrics obținute obiecte în diferite moduri toate pretind la dimensiunea ecranului este de 540x960 pixeli „“ (indiferent dacă modul de ecran Compat sau nu). Pentru a fi specific, la urma urmei se spune, 540x960 vsevremya. DisplayMetrics. <Ширина, высота> pixeli. Display.getSize (). Display.getRealSize (). Display.get <Ширина, Высота> ()
obiecte de configurare obținute prin diferite metode spune tot ecranul <ширина, высота> DP = 360x614 (fie în modul Compat, indiferent dacă este sau nu ecranul). Nu cred că este întregul ecran. partide ssootnoshenie este greșit. (Cred că Etowah stare ecran minusstroka, am nevoie pentru a umple ecranul). Cred că e sigur să spunem că B Screen 360x640 dp, cu toate că eu nu știu de un singur API, care returnează că 640.
DisplayMetrics, obținute prin diferite moduri de a spune „densitate“ este 1.0f, atunci când modul COMPAT pe ecran. 1.5f, atunci când nu este în modul OSD COMPAT.
Pe acest tip de activitate getWindow (). GetAttributes (). nu este util, deoarece conține în mod tipic MATCH_PARENT mai degrabă decât dimensiunea reală. Dar mi se pare pentru a obține răspunsul dorit otdeyatelnosti lui getWindow (). GetDecorView (). GetMeasured () (care este într-adevăr surprinzător, deoarece activitatea fereastra decorView nu arata ca este nevoie de întregul ecran, se pare că el preia minus ecran bara de stare). Dar eu nu vreau să se bazeze pe ea, deoarece, niciodată nu esliokno devine schimbat (pe ecran apare tastatura. Window.setAttributes apel (Cineva)? Sau poate că nu sunt deloc). în mod clar nu va fi așa.
Am înțeles că următoarea formulă este de așteptat să aibă loc. = Al * densitatea pixelilor Acest lucru pare să fie de acord cu toate numerele înregistrate ((3), (4) și (5) de mai sus) a ecranului atunci când nu este în modul de compatibilitate: 540x960 = 360x640 * 1,5 Dar modul de compatibilitate a ecranului, aceasta nu este El adaugă. 540x960. = 360x640 * 1 Deci, ce sa întâmplat.
Cea mai simplă explicație, cred, este că metodele enumerate la (3) de mai sus, da doar răspunsul greșit la „pixeli“ atunci când OSD compat mode--, ceea ce înseamnă că au fost destinate să se întoarcă „360x640 pixeli“, dar din greseala de returnare 540x960 în loc. Dar pot exista și alte moduri de a privi la ea.
Există o / cale mai bună de curățare pentru a găsi dimensiunea ecranului.
Top 5 Respuesta
Cu DisplayMetrics puteți obține înălțimea și lățimea ecranului de pe orice dispozitiv. zdeskod.
În metoda onCreate
# 6 dvs., veți observa chtoDecorView pare să ofere ceea ce vrei, dar nu cred că acest lucru este o bună-credință. Cred că acest lucru este la fel de aproape ca tine poate veni. Conform documentației privind Window.getDecorView:
Bara de stare face parte din decorul unei ferestre, indicată în ea. Tastaturi software și alte suprapuneri vor primi propria sa fereastră, astfel încât acestea să nu interfereze cu valorile corespunzătoare. Este adevărat că pur și simplu nu afișează valori, dar dacă aplicația dvs. pentru a ecran complet ar trebui să fie Întotdeaunasau compatibilitate completă Diagonala filtrată printr-un traducător. Alte aplicații nu vor avea acces la fereastra aplicației. astfel încât nu este nevoie să vă faceți griji cu privire la orice altă aplicație, modificați proprietățile în timp ce nu sunt în căutarea.
Sper că vă ajută.
Acum puteți măsura dimensiunea ecranului în pixeli, care este o unitate mai bună decât un centimetru, deoarece toate butoanele, etc. TextViews măsurată cu ajutorul acestui aparat. Ceea ce folosesc de obicei