Как использовать классы андроидов "Поверхность"?

Есть ли подробное объяснение Surface, SurfaceHolder, EGLSurface, SurfaceView, GLSurfaceView, SurfaceTexture и TextureView? В частности:

  • В чем разница между SurfaceView и TextureView?
  • Нужно ли использовать GLSurfaceView для использования OpenGL ES?
  • Как взаимодействуют поверхность и EGLSurface?
  • Что делает SurfaceTexture?
  • Почему материал, который я рисую на SurfaceView, должен быть выше или ниже всего остального?
  • Что такое SurfaceFlinger?
  • Как работает состав статусных и навигационных баров?
  • В то время как были на нем, какой правильный способ структурировать игровой цикл на Android?

Ответы

Ответ 1

Ответы на эти и многие другие вопросы теперь можно найти на веб-сайте Project Open Source Project:

Графическая система на уровне Android

Документ начинается с объяснения инфраструктуры низкого уровня, а затем объясняется, как из них строятся функции более высокого уровня. Цель состоит не в том, чтобы дать прямые ответы на общие вопросы, а скорее для описания системы на уровне детализации, который делает ответы очевидными, не подавляя.

Выбор материала и уровня детализации сильно зависел от Q & A от stackoverflow.

(Технически это ответ только для ссылок, но запись 10 000 слов здесь показалась плохой идеей.)