Xamarin.Android TextureView
Класс 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.