Как использовать классы Surface в Android?

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

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

person fadden    schedule 01.05.2014    source источник


Ответы (1)


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

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

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

На выбор материала и уровень детализации сильно повлияли вопросы и ответы на stackoverflow.

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

person fadden    schedule 01.05.2014
comment
Мне нравится, как вопрос и ответ пишутся в одну и ту же минуту. - person Léon Pelletier; 11.06.2015
comment
Спасибо, я не знал, что это было установлено. Но меня больше удивила задержка в 0 минут. - person Léon Pelletier; 11.06.2015
comment
Привет Фаден! Спасибо за отличное письмо. Могу я задать короткий вопрос, кстати? Можно ли сделать скриншот SurfaceView? Я искал это, но пока кажется, что не могу. Я не ожидаю, что вы объясните, как это сделать здесь, но я просто хочу знать, действительно ли есть какой-либо способ, похожий на вызов draw() в обычных представлениях. - person Jenix; 26.09.2018