Ce este un DecorView Android? (Programare, Android, Fereastră, Vizualizare Android)

nmr a intrebat.
a intrebat.

http://developer.android.com/reference/android/view/Window.html#getDecorView():

Obține vizualizarea decorului de nivel superior al ferestrei (care conține cadrul standard al ferestrei/decorații și conținutul clientului în interiorul acestuia), care poate fi adăugat ca fereastră în managerul de ferestre.

Acest lucru este derutant. Nu este clar ce este „cadrul/decorarea ferestrelor” standard. Nu știu ce este exact, iar documentația este teribilă. Există în interiorul ferestrei aplicației? Înconjoară fereastra aplicației?

Nu am văzut niciodată o fereastră Android cu decorațiuni de fereastră notabile. Iar „care poate fi adăugată ca o fereastră” implică faptul că o vizualizare de decor este o fereastră, dar asta contrazice ierarhia claselor (View nu este o subclasă a Window).

Așadar, care este problema? Ce este mai exact vizualizarea de decor?

Comentarii

  • Acest lucru este probabil cel mai ușor de văzut în Dialoguri, în special înainte de Holo. –  > Por Dan Harms.
  • Îmi imaginez că atunci bara de acțiune este un copil al vizualizării decorului? –  > Por nmr.
  • Se pare că bara de acțiune este într-adevăr un copil al vizualizării decorului –  > Por nmr.
  • Mai este valabil pentru Toolbar și System bar? –  > Por IgorGanapolsky.
2 răspunsuri
nKn

Se pare că unul dintre locurile în care este cel mai bine definit este în Blogul lui Romain Guy:

DecorView este vizualizarea care deține de fapt desenul de fundal al ferestrei. Apelarea getWindow().setBackgroundDrawable() din activitatea dvs. schimbă fundalul ferestrei prin modificarea fundalului desenabil al DecorView. După cum s-a menționat anterior, această configurație este foarte specifică implementării actuale a Android și se poate schimba într-o versiune viitoare sau chiar pe un alt dispozitiv.

Comentarii

  • Reducerea mea este următoarea: decor view este adevărata rădăcină a Window‘s view hierarchy. Aceasta conține atât „decorul” (adică titlul ferestrei (bara de acțiune?), sau „cadrul” unui dialog (~= vizualizarea care desenează pixelii reali ai cadrului dialogului, așa cum se vede în pre-Holo), cât și vizualizarea conținutului furnizat de aplicație. AFAIK există în întregime în limitele ferestrei, nu o înconjoară și nu este ea însăși o fereastră în niciun sens. –  > Por nmr.
  • Și cred că este cea responsabilă de programarea layout-ului & measure traversals. –  > Por stdout.
  • @zgulser Există o documentație care să indice DecorView care să programeze layout-urile și măsurile? –  > Por IgorGanapolsky.
  • Puteți încerca mathias-garbe.de/files/introduction-android-graphics.pdf pagina 31. –  > Por stdout.
the_prole

Decor view pare să conțină rezoluția ecranului? Eu primesc 1920.

var verticalScreenRes = act.window.decorView.height.toFloat() // 1920

apoi verificați

adb -s emulator-5554 shell wm size
Physical size: 1080x1920