2012-02-26 6 views
53

¿Qué es un Window en Android?¿Qué es una ventana de Android?

Pensé que el nivel más alto en Android se llama Activity, que es la pantalla que ves.

¿Puede alguien decirme qué es una ventana en Android? acabamos de tener uno o varios de ellos.

Respuesta

8

La actividad es lo que usted llamaría una ventana.

Técnicamente hablando, la actividad crea la ventana para usted.

Puede tener muchos de ellos, pero normalmente no de forma síncrona. Para solicitar información adicional, puede llamar a un cuadro de diálogo o activar una intención a otra actividad.

Para obtener más información visit this link.

+0

Hay activity.getWindow(), por lo que la ventana es una parte de la actividad. – Zon

134

[ACTUALIZACIÓN] (Permítanme compartir lo que he aprendido sobre Window después de respuesta original)

En una frase, UnWindowes un área rectangular que tiene un punto de vista jerarquía. Los rectángulos coloreados en la imagen inferior son ventanas.

enter image description here

Como se puede ver, no puede haber varias ventanas en una pantalla, y WindowManager los gestiona. La lista de ventanas en la pantalla actual se puede obtener a través del Hierarchy Viewer o adb shell dumpsys window.

lista de ventanas en el ejemplo Jerarquía Visor: enter image description here

(continuación se muestra respuesta original)


que tenía la misma pregunta, y espero que esto podría ayudar a los chicos.

Según Android Developer Documentation,

"Cada actividad se da una ventana en la que extraer su interfaz de usuario."

y, Dianne Hackborn, que es un ingeniero marco Android, dio algunas definiciones here. Ella dijo,

Una ventana es, básicamente, como se piensa en una ventana en el escritorio. Es tiene una sola superficie en la que se representa el contenido de la ventana.Una aplicación interactúa con el Administrador de ventanas para crear ventanas; el Administrador de ventanas crea una Superficie para cada ventana y se la da a la aplicación para dibujar. La aplicación puede dibujar lo que quiera en la superficie; para Window Manager es solo un rectángulo opaco.

Una Superficie es un objeto celebración de píxeles que están siendo un material compuesto a la pantalla. Cada ventana que ve en la pantalla (un cuadro de diálogo, su actividad de pantalla completa, la barra de estado) tiene su propia superficie en la que se dibuja, y Surface Flinger las muestra en la pantalla final en su orden Z correcto. Normalmente, una superficie tiene más de un búfer (normalmente dos) para realizar una representación con búfer doble: la aplicación puede dibujar su siguiente estado de UI mientras el mezclador de superficie está componiendo la pantalla utilizando el último búfer, sin necesidad de esperar a que la aplicación termine dibujo.

Una vista es un elemento de interfaz de usuario interactivo dentro de una ventana. Una ventana tiene una jerarquía de vista única asociada, que proporciona todo el comportamiento de la ventana. Cuando sea necesario volver a dibujar la ventana (por ejemplo, porque una vista se ha invalidado), esto se hace en la superficie de la ventana. La superficie está bloqueada, lo que devuelve un lienzo que se puede utilizar para dibujar en él. Se realiza un recorrido de dibujo por la jerarquía y se baja el lienzo para que cada vista dibuje su parte de la IU. Una vez hecho esto, la Superficie se desbloquea y se publica para que el búfer recién dibujado se intercambie al primer plano para luego ser compuesto a la pantalla por Surface Flinger.

Además, he encontrado alguna otra información de la presentación Romain Guy 's (Usted puede ver su charla en grupo de usuarios de San Francisco Android de here y descarga diapositivas llenas de here)

enter image description here

Así, en pocas palabras:

  • Un Activity tiene una ventana (en la que se extrae su interfaz de usuario),
  • un Window tiene un único Surface y una sola jerarquía de vistas unido a él,
  • un Surface incluyen ViewGroup que tiene puntos de vista.
+0

Gracias por la brillante respuesta y enlaces. ¿Puede alguien decirme dónde encaja decorView en esta explicación? – abhiank

+0

¿Puede decirme por qué view.getLocationInWindow() devuelve la coordenada y de manera que también contenga la altura de la barra de estado. La barra de estado se supone que está en otra ventana. Además, he comprobado que la ventana de la que estoy hablando es una ventana de actividad. –

9

Android: Window, Surface, Canvas, and Bitmap Aquí es una visión general conceptual muy básico y simple de cómo la interacción que ocurre entre la ventana, de superficie, Canvas y mapa de bits.

+0

¿Corresponden las superficies superior e inferior en el diagrama con el estado y la barra de navegación? –

+0

Cada ventana en la pantalla tiene una superficie. Puede haber múltiples ventanas en la pantalla. Sí, las barras de navegación y estado tienen sus ventanas asociadas y superficies adjuntas. La imagen de arriba es solo una ilustración de muestra del concepto. – Sabeeh

1

me gustaría decir en pocas palabras:

Application ---> 
    Activity ---> 
    Window Manager ---> 
     Window ---> 
     Surface ---> 
      Canvas ---> 
      View Root ---> 
       View Group ---> 
       View ---> 
        Bitmap/Open GL panel ---> 
        Current Surface Buffer ---> 
         Surface Flinger ---> 
         Screen 
+0

Gracias querido Finwe por este mejor formateo. Francamente, soy totalmente nuevo en stackoverflow. –