Xamarin.Android TextureView
Klasa TextureView
jest widokiem, który używa przyspieszonego sprzętowo renderowania 2D, aby umożliwić wyświetlanie strumienia zawartości wideo lub OpenGL. Na przykład poniższy zrzut ekranu przedstawia wyświetlanie kanału TextureView
informacyjnego na żywo z aparatu urządzenia:
SurfaceView
W przeciwieństwie do klasy, która może być również używana do wyświetlania zawartości OpenGL lub wideo, element TextureView nie jest renderowany w osobnym oknie.
TextureView
W związku z tym jest w stanie obsługiwać przekształcenia widoku, takie jak każdy inny widok. Na przykład obracanie elementu TextureView
można wykonać, ustawiając jego Rotation
właściwość, jej przezroczystość, ustawiając jej Alpha
właściwość itd.
W związku z tym TextureView
możemy teraz wykonywać takie czynności jak wyświetlanie strumienia na żywo z aparatu i przekształcanie go, jak pokazano w poniższym kodzie:
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;
}
…
}
Powyższy kod tworzy TextureView
wystąpienie w metodzie Działania OnCreate
i ustawia działanie jako TextureView
wartość .SurfaceTextureListener
Aby być elementem SurfaceTextureListener
, działanie implementuje TextureView.ISurfaceTextureListener
interfejs. System wywoła metodę OnSurfaceTextAvailable
, gdy SurfaceTexture
element jest gotowy do użycia. W tej metodzie bierzemy przekazany element SurfaceTexture
i ustawiamy go na teksturę podglądu aparatu. Następnie możemy wykonywać normalne operacje oparte na widoku, takie jak ustawienie Rotation
i Alpha
, jak w powyższym przykładzie. Wynikowa aplikacja uruchomiona na urządzeniu jest pokazana poniżej:
Aby można było używać TextureView
, należy włączyć przyspieszanie sprzętowe, które będzie domyślnie włączone jako poziom 14 interfejsu API. Ponadto, ponieważ w tym przykładzie użyto aparatu, zarówno uprawnienie, jak android.permission.CAMERA
i android.hardware.camera
funkcję należy ustawić w AndroidManifest.xml.