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 z. B. 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.
Daher ist es in der Lage, TextureView
Ansichtstransformationen wie jede andere Ansicht zu unterstützen. Beispielsweise kann das Drehen eines Objekts TextureView
durch einfaches Festlegen seiner Rotation
Eigenschaft, seiner Transparenz durch Festlegen seiner Alpha
Eigenschaft usw. erreicht werden.
Daher können wir mit der TextureView
jetzt dinge wie das Anzeigen eines Livestreams von der Kamera ausführen 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
Instanz in der Aktivitätsmethode OnCreate
und legt die Aktivität als " TextureView
s SurfaceTextureListener
" fest. Um dies SurfaceTextureListener
zu sein, implementiert die Aktivität die TextureView.ISurfaceTextureListener
Schnittstelle. Das System ruft die OnSurfaceTextAvailable
Methode auf, wenn die SurfaceTexture
Anwendung bereit ist. In dieser Methode nehmen 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. festlegen, wie Rotation
Alpha
im obigen Beispiel. Die resultierende Anwendung, die auf einem Gerät ausgeführt wird, wird unten angezeigt:
Um die TextureView
Hardwarebeschleunigung zu verwenden, muss diese standardmäßig als API-Ebene 14 aktiviert sein. 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.xml festgelegt werden.