Xamarin.Android TextureView
Die TextureView
-Klasse ist eine Ansicht, die hardwarebeschleunigtes 2D-Rendering verwendet, um die Anzeige eines Video- oder OpenGL-Inhaltsstreams zu ermöglichen. Der folgende Screenshot zeigt beispielsweise die TextureView
Anzeige eines Livefeeds von der Kamera des Geräts:
SurfaceView
Im Gegensatz zur -Klasse, die auch zum Anzeigen von OpenGL- oder Videoinhalten verwendet werden kann, wird die TextureView nicht in einem separaten Fenster gerendert.
Ist daher in der Lage, TextureView
Ansichtstransformationen wie jede andere Ansicht zu unterstützen. Das Rotieren eines TextureView
kann beispielsweise erreicht werden, indem einfach seine Rotation
Eigenschaft, seine Transparenz durch Festlegen der Alpha
Eigenschaft usw. festgelegt wird.
Daher können wir mit dem TextureView
jetzt z. B. einen Livestream von der Kamera anzeigen und transformieren, wie im folgenden Code gezeigt:
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;
}
…
}
Der obige Code erstellt eine TextureView
instance in der -Methode der Aktivität OnCreate
und legt die Aktivität als TextureView
"sSurfaceTextureListener
" fest. Um die SurfaceTextureListener
zu sein, implementiert die Aktivität die TextureView.ISurfaceTextureListener
-Schnittstelle. Das System ruft die OnSurfaceTextAvailable
-Methode auf, wenn die SurfaceTexture
einsatzbereit ist. Bei dieser Methode verwenden wir das SurfaceTexture
übergebene und legen sie auf die Vorschautextur der Kamera fest. Anschließend können wir normale ansichtsbasierte Vorgänge ausführen, z. B. das Festlegen von Rotation
und Alpha
, wie im obigen Beispiel gezeigt. Die resultierende Anwendung, die auf einem Gerät ausgeführt wird, ist unten dargestellt:
Um die TextureView
Hardwarebeschleunigung zu verwenden, muss die Hardwarebeschleunigung aktiviert sein. Dies ist standardmäßig ab API-Ebene 14. Da in diesem Beispiel die Kamera verwendet wird, müssen sowohl die android.permission.CAMERA
Berechtigung als auch das android.hardware.camera
Feature im AndroidManifest.xmlfestgelegt werden.