Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Класс TextureView — это представление, использующее отрисовку с аппаратным ускорением 2D для отображения видео или потока содержимого OpenGL. Например, на следующем снимке экрана показан TextureView динамический веб-канал с камеры устройства:
В отличие от класса, который также можно использовать для отображения содержимого SurfaceView OpenGL или видео, ТекстураView не отображается в отдельном окне.
Таким образом, TextureView можно поддерживать преобразования представлений, как и любое другое представление. Например, поворот можно выполнить, просто задав TextureView его Rotation свойство, прозрачность, задав его Alpha свойство и т. д.
Таким образом, теперь TextureView мы можем выполнять такие действия, как отображение потоковой трансляции с камеры и его преобразование, как показано в следующем коде:
public class TextureViewActivity : Activity,
TextureView.ISurfaceTextureListener
{
Camera _camera;
TextureView _textureView;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
_textureView = new TextureView (this);
_textureView.SurfaceTextureListener = this;
SetContentView (_textureView);
}
public void OnSurfaceTextureAvailable (
Android.Graphics.SurfaceTexture surface,
int width, int height)
{
_camera = Camera.Open ();
var previewSize = _camera.GetParameters ().PreviewSize;
_textureView.LayoutParameters =
new FrameLayout.LayoutParams (previewSize.Width,
previewSize.Height, (int)GravityFlags.Center);
try {
_camera.SetPreviewTexture (surface);
_camera.StartPreview ();
} catch (Java.IO.IOException ex) {
Console.WriteLine (ex.Message);
}
// this is the sort of thing TextureView enables
_textureView.Rotation = 45.0f;
_textureView.Alpha = 0.5f;
}
…
}
Приведенный TextureView выше код создает экземпляр в методе действия OnCreate и задает действие как TextureView"s SurfaceTextureListener". Для этого SurfaceTextureListenerдействие реализует TextureView.ISurfaceTextureListener интерфейс. Система вызовет OnSurfaceTextAvailable метод, когда SurfaceTexture он готов к использованию. В этом методе мы принимаем переданные SurfaceTexture и устанавливаем его на текстуру предварительного просмотра камеры. Затем мы можем выполнять обычные операции на основе представления, такие как установка Rotation и Alpha, как в приведенном выше примере. Результирующее приложение, работающее на устройстве, показано ниже:
Чтобы использовать аппаратное TextureViewускорение, необходимо включить аппаратное ускорение, которое по умолчанию будет использоваться на уровне API 14. Кроме того, так как в этом примере используется камера, android.permission.CAMERA необходимо задать разрешение и android.hardware.camera функцию в AndroidManifest.xml.

