Android GUI-архитектура – отношение между поверхностью / представлением / окном / холстом

=========================

ОБНОВЛЕНИЕ: после нескольких дней поиска в Интернете и экспериментов я нашел ответы на большинство этих немых вопросов. См. Ответы, представленные мной.

=========

В чем ответственность Android Window?

Вот несколько вопросов:

  • Отвечает ли он за сбор и отправку материалов?
  • Какова связь между видом и окном? То же, что связь между поверхностью и окном в DFB?
  • Какова связь между деятельностью и окном? Будет ли у каждой операции окно?
  • Можно ли создать окно из приложения? А когда это необходимо?
  • Поддерживает ли Android многоэкранное окно?

EDIT: добавьте еще вопросы:

  1. Каковы обязанности различных классов, таких как Window, View, Canvas, Surface и как они взаимодействуют друг с другом?

  2. Сколько окон обычно имеет активность?

3.Вы увидите, что все окна в одном мероприятии будут прикреплены к окну? Что означает соединение?

  1. У каждого окна есть поверхность? У каждого холста есть поверхность?

  2. View отвечает за focus / keyEvent / manager, а Cavus несет ответственность только за операцию «рисования».

  3. WindowManager отвечает за стекирование окон? Как это связано с SurfaceFlinger?

  4. В представлении отсутствует собственная поверхность, окно, в котором содержится вид?

  5. Вид рисует сам, используя холст, полученный вызовом surface.lockCanvas ().

  6. Когда будет вызываться onDraw (Canvas)? Как и кто передает параметры холста?

  7. Имеет ли холст размер? Будет ли поверхность окна всегда в полноэкранном режиме?

EDIT еще раз:

После просмотра этого прекрасного подарка, предоставленного Роменом Гаем http://www.youtube.com/watch?v=duefsFTJXzc&feature=feedwll&list=WL , несколько вопросов разрешены и добавлены еще несколько 🙂

  1. Будет ли каждая активность иметь один ViewRoot и, следовательно, одно окно?
  2. Есть ли необходимость в создании окна? И Будет ли поверхность окна всегда в полноэкранном режиме?
  3. Будет ли строка состояния находиться в другом окне?
  4. Каков размер поверхности? Будет ли это всегда полноэкранным?

Solutions Collecting From Web of "Android GUI-архитектура – отношение между поверхностью / представлением / окном / холстом"

Является ли окно ответственным за сбор и отправку ввода?

No ViewRoot отвечает за это.

Какова связь между видом и окном? То же, что связь между поверхностью и окном в DFB?

?

Какова связь между деятельностью и окном? Будет ли у каждой операции окно?

Да, большую часть времени. Однако SurfaceView имеет собственное окно. Итак, если у Activity есть SurfaceView, он будет иметь более одного окна.

Можно ли создать окно из приложения? А когда это необходимо?

Не обязательно.

Поддерживает ли Android многоэкранное окно?

Конечно. Используя HierachyView, вы можете ясно видеть, что в системе существует более одного окна.

1. Каковы обязанности различных классов, таких как Window , View , Canvas , Surface и как они взаимодействуют друг с другом? 2.Как много окон обычно имеет активность?

Обычно один.

3.Вы увидите, что все виды в одном мероприятии будут прикреплены к окну? Что означает соединение? 4. У каждого окна есть поверхность? У каждого холста есть поверхность?

Каждое окно имеет поверхность, а Surface использует Canvas для рисования на поверхности.

5.View отвечает за управление фокусом / ключевыми событиями, в то время как Canvas несет ответственность только за операцию «рисования»?

ДА.

6. WindowManager отвечает за стекирование окон? Как это относится к SurfaceFlinger ?

Не уверен в ответственности WindowManager. (ДЕЛАТЬ)

SurfaceFlinger используется для создания поверхности, связанной с другим окном / активностью.

7.View не владеет Поверхностью, Окно, которое содержит вид?

Вид будет рисовать на поверхности с помощью Canvas. Окно, к которому прикреплен вид, принадлежит поверхности.

Это можно понять, onDraw(Canvas) настройку представления, когда вы должны переопределить метод onDraw(Canvas) в производном классе.

8.The View рисует себя, используя холст, полученный вызовом surface.lockCanvas ()?

ДА.

9.Когда и как называется onDraw(Canvas) , и кто передает параметры холста?

onDraw() RootView и RootView invalidate. Параметр canvas передается из RootView.

10. У холста есть размер? Будет ли поверхность окна всегда в полноэкранном режиме?

Я не могу с уверенностью сказать. Но когда я создаю настраиваемое представление, размер холста, полученного из onDraw (Canvas), является полноэкранным.

Однако, по моему мнению, для производительности, поверхность для окна не всегда должна быть полноэкранной. Но это предположение не было проверено. Например, окно statusBar не должно быть полноэкранным.

1. Будет ли у каждой операции один вид ViewRoot и, следовательно, одно Window ?

ДА.

2.Есть ли необходимость в создании окна явно? Будет ли поверхность окна всегда в полноэкранном режиме?

Не нужно явно создавать окно.

3. Будет ли строка состояния находиться в другом окне?

ДА.

4.Какой размер поверхности? Будет ли это всегда полноэкранным?

Признавая, что вы задали все эти вопросы. 1) AFAIK у каждой активности есть alteast один ViewRoot, и у каждого ViewRoot есть по крайней мере одно окно. 2) Нет необходимости явно создавать окно, и я думаю, что он всегда должен быть полным окном. Хотя и не уверен в этом. 3) Да, это может быть, мы Может разместить строку состояния в других окнах 4) Не может быть частью окна, не всегда охватывает весь экран.

Пожалуйста, исправьте мое понимание, если я заявляю что-то не так.

Android: концепция Window, Surface, Canvas и Bitmap

Вот очень простой и простой концептуальный обзор того, как взаимодействие происходит между окном, поверхностью, холстом и растровым изображением.
Посмотрите на этот ответ hackbod , отличное объяснение.