Surface Flinger, SurfaceView, Surface, SurfaceHolder и Bitmap – это Android

Я учусь из Документации Суфайса, Суфийса Флинджера, SurfaceView, SurfaceHolder и Bitmap. Я нашел следующие определения:

Surface Surface – это совокупность пикселей. A Поверхность – это объект, содержащий пиксели, которые компонуются на экране. Каждое окно, которое вы видите на экране (диалог, полноэкранная активность, строка состояния), имеет свою собственную поверхность, к которой он обращается, и Surface Flinger отображает их на конечном дисплее в их правильном Z-порядке. Поверхность обычно имеет более одного буфера (обычно два) для выполнения двойной буферизации рендеринга: приложение может рисовать свое следующее состояние пользовательского интерфейса, в то время как поверхностный flinger компонует экран с использованием последнего буфера, не дожидаясь завершения приложения Рисунок.

SurfaceView Этот класс используется для предварительного просмотра камеры в реальном времени для пользователя. SurfaceView представляет собой специальную реализацию View, которая также создает свою собственную выделенную Surface для приложения, которое непосредственно использует (за пределами обычной иерархии представлений, которая в противном случае должна совместно использовать одну Surface для окна)

Bitmap A Bitmap – это оболочка для сбора пикселей, это просто массив пикселей с некоторыми другими удобными функциями.

Canvas Canvas – это класс, содержащий все методы рисования. Он похож на класс Graphics в AWT / Swing на Java. В нем есть вся логика о том, как рисовать, ящик и т. Д. Canvas работает с растровым изображением.

Но я не понимаю, что такое SurfaceHolder и SurfaceFlinger, и в соответствии с приведенным выше определением битмап также является контейнером пикселя и поверхности.

Можете ли вы помочь мне дать четкое представление об определении всех этих объектов?

Canvas – это основной контекст для рисования с помощью графического API. Вы можете создать свой собственный холст, обертывающий растровое изображение для рисования вне экрана, и, конечно же, структура пользовательского интерфейса будет передавать Canvas для виджетов, чтобы они могли себя вовлечь. Все эти виджеты являются подклассами View. Или, если они могут содержать другие виджеты, тогда они представляют собой подкласс из ViewGroup (который является подклассом View).

Если вы хотите выполнять анимацию с высокой частотой кадров, вам нужно подкласс SurfaceView (или его подкласс GLSurfaceView, если вы хотите сделать рендеринг OpenGL-ES на экране). Каждый SurfaceView имеет SurfaceHolder, у которого есть методы lockCanvas, которые вы можете вызвать в любое время, чтобы получить Canvas, в который можно было бы нарисовать обновленный дисплей и отправить обратно пользователю, чтобы сразу увидеть его через unlockCanvasAndPost.

Для получения дополнительной информации см. Концепции 2D-графики и пользовательские подсказки виджета

Intereting Posts