SurfaceView
и TextureView
да Android Два наиболее часто используемых представления при разработке приложений используются для отображения контента, особенно когда необходимо представить видео или другой графический контент. Понимание их функций и различий очень важно для выбора подходящего представления в различных сценариях.
эффект:
SurfaceView
Предоставляет возможность рисовать контент прямо на экране.,В основном используется для эффективного отображения часто обновляемого контента.,Например, видео, игровая графика и т. д.Функции:
SurfaceView
Создайте отдельное окно через отдельный Surface
Рисовать,Процесс рисования и разделение основной нити,Уменьшить отставание.SurfaceView
Использование независимой поверхности делает операцию рисования более плавной и эффективной, что подходит для сцен, требующих высокой частоты кадров.SurfaceView
Операции преобразования, такие как перемещение, масштабирование и вращение, не поддерживаются в отличие от обычных представлений, поскольку эти операции требуют фундаментальной перестановки независимых элементов. Surface
。Сценарии использования:
val surfaceView = findViewById<SurfaceView>(R.id.surfaceView)
val holder = surfaceView.holder
holder.addCallback(object : SurfaceHolder.Callback {
override fun surfaceCreated(holder: SurfaceHolder) {
// Начать рисовать
}
override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {
// Обрабатывать изменения
}
override fun surfaceDestroyed(holder: SurfaceHolder) {
// хватит рисовать
}
})
эффект:
TextureView
да Элемент управления, отображающий содержимое,Может выполнять сложные преобразования представления своего содержимого.,например масштабирование、Вращение и т. д.。TextureView
Отрисованный контент обрабатывается как текстура в иерархии представлений.Функции:
SurfaceView
,TextureView
Содержимое отображается в обычной иерархии представлений, что позволяет накладывать многослойные представления и эффекты преобразования.TextureView
Поддерживает общие операции преобразования представлений (перемещение, вращение, масштабирование). и т. д.), подходит для использования в сценах, требующих эффектов анимации и трансформации.SurfaceView
Уменьшение, но все же подходящее для большинства потребностей в динамическом контенте.Сценарии использования:
val textureView = findViewById<TextureView>(R.id.textureView)
textureView.surfaceTextureListener = object : TextureView.SurfaceTextureListener {
override fun onSurfaceTextureAvailable(surface: SurfaceTexture, width: Int, height: Int) {
// Начать рисовать
}
override fun onSurfaceTextureSizeChanged(surface: SurfaceTexture, width: Int, height: Int) {
// Изменение размера ручки
}
override fun onSurfaceTextureDestroyed(surface: SurfaceTexture): Boolean {
return true // Возврат true указывает, что SurfaceTexture будет выпущен.
}
override fun onSurfaceTextureUpdated(surface: SurfaceTexture) {
// Обновить содержимое чертежа
}
}
1. Различия в производительности:
SurfaceView
воспользоваться независимым Surface
Для рендеринга производительность выше, подходит для сцен с высокими требованиями к задержке и частоте кадров.TextureView
При обработке в виде текстуры в иерархии представлений производительность менее мощная, но обеспечивает большую гибкость в манипулировании представлениями.2. Просмотр трансформации:
SurfaceView
Общие операции преобразования вида (такие как вращение, масштабирование) не поддерживаются и могут трансформироваться только вместе со всей формой.TextureView
Поддерживает все операции преобразования представления, подходит для контента, требующего преобразования и анимации.3. Как использовать:
SurfaceView
нужно пройти SurfaceHolder
Выполните управление чертежом.TextureView
проходить SurfaceTexture
Выполнение управления является относительно простым и гибким.4. Уровень просмотра:
SurfaceView
Содержимое проникнет во всю иерархию представлений и может привести к тому, что другие элементы управления над ним станут невидимыми.TextureView
Содержимое можно накладывать и трансформировать в обычной иерархии представлений.В конкретных приложениях разработчикам необходимо выбирать соответствующие элементы управления представлениями на основе требований производительности, требований к преобразованию представлений и управления иерархией представлений.
END
Зажгите [Нравится и смотрите] и пусть деньги и любовь текут к вам.
Если вы посадите цветы в своем сердце, ваша жизнь не будет бесплодной. Если вы тоже хотите расти вместе, нажмите и следуйте.