2018 Как да получите андроид размер на екрана и софтуер веднъж завинаги андроид

Андроидите .help български Android-общност.

Как мога да разбера размера на вашия екран и софтуер, в единици, използвани сетивни събития и гледка към измерване / оформление. С други думи, искам координатите в долния десен ъгъл на екрана. в координатната система, използвана от сетивни събития "getRawX () / getRawY () и View.getLocationOnScreen ().

Това е код библиотека, която трябва да работи независимо от това дали то е в "режим на съвместимост" (т.е. targetSdkVersion и х = 10 vmanifeste) или не, и аз също не искам да се правят предположения за позиция, размер, или наличието на в лентата на състоянието, или всякакви други подобни дисплеи декорации.

Размер на екрана в желаните единици. погледнете в сетивни събития и измерване мнение е 360x640, kogdaprilozhenie е в режим COMPAT екран. 540x960, не kogdaprilozhenie режим COMPAT екран. Това е броят, че трябва да се намери програма, не се отразяват събитията докосване или идеи, да ги намери, но имам изключително трудно намирането на някоя API, които ще се върнат тези цифри.

Display и получени DisplayMetrics обекти по различни начини всички твърдят, че размерът на екрана е 540x960 пиксела "" (независимо дали COMPAT режима на екрана или не). По-конкретно, след като всичко е казано, 540x960 vsevremya. DisplayMetrics. <Ширина, высота> пиксела. Display.getSize (). Display.getRealSize (). Display.get <Ширина, Высота> ()

Конфигурация обекти, получени чрез различни методи казват всичко на екрана <ширина, высота> DP = 360x614 (независимо дали е в режим COMPAT, независимо дали на екрана). Аз не вярвам, че е целия екран. ssootnoshenie партии не е наред. (Мисля, че Etowah екран minusstroka състояние, аз трябва да попълните на екрана). Мисля, че е безопасно да се каже, че B Screen 360x640 DP, въпреки че аз не знам на един API, което се връща, че 640.

DisplayMetrics, получени чрез различни начини да кажете "плътност" е 1.0f, когато COMPAT режим на екрана. 1.5f, когато не е в режим на OSD COMPAT.

На тази вид дейност getWindow (). GetAttributes (). не полезен, тъй като той обикновено съдържа MATCH_PARENT а не застроена площ. Но аз като че ли, за да получите желания отговор otdeyatelnosti на getWindow () getDecorView () getMeasured () (което е много изненадващо, тъй като decorView прозорец дейност не изглежда като тя е на целия екран; .. Изглежда, че той заема минус екран лентата на състоянието). Но аз не искам да се разчита на него, защото никога не esliokno получава променено (появява се на екранната клавиатура. Някой вика window.setAttributes ()? Или може би аз не съм изобщо). то със сигурност няма да бъде така.

Аз разбирам, че се очаква по следната формула, за да се проведе. = Ал * плътност на пикселите Това изглежда да се съглася с всички регистрирани номера ((3), (4) и (5) по-горе) на екрана, когато не е в режим на съвместимост: 540x960 = 360x640 * 1,5 Но режим съвместимост на екрана, не е Той добавя. 540x960. = 360x640 * 1 И така, какво не е наред.

Най-простото обяснение, според мен, е, че методите, изброени в (3) по-горе, просто дават грешен отговор на "пиксели", когато OSD COMPAT mode--, означава, че те са били предназначени да се върне 360x640 "пиксели", но те погрешно връщане 540x960 вместо. Но може да има и други начини да се гледа на него.

Има ли по-добре / по-чист път, за да намерите размера на екрана.

Топ 5 Respuesta

С DisplayMetrics можете да получите височината и ширината на екрана на всяко устройство. zdeskod.

Във вашия OnCreate метод

Вашият # 6, вие ще забележите, chtoDecorView изглежда осигурява това, което искате, но не мисля, че това е един добър вяра. Мисля, че това е най-близо можеш да дойдеш. Според документацията на Window.getDecorView:

Лентата на състоянието и е част от декора на един прозорец, посочена в него. Софтуер клавиатури и други наслоявания ще получат собствен прозорец, така че те не пречат на съответните стойности. Вярно е, че просто не се показва показатели, но ако вашето приложение на цял екран трябва да бъде Alwaysor пълна съвместимост размер на екрана се филтрира през преводач. Други приложения няма да имат достъп до прозореца на приложението. така че няма нужда да се притеснявате за всяко друго приложение, се променят свойствата, докато не се търсят.

Надявам се, че помага.

Сега можете да се измери големината на екрана в пиксели, което е по-добро устройство от един сантиметър, защото всички бутони и др TextViews измерва с помощта на това устройство. Това, което обикновено се използва

Последните въпроси