Xamarin.Android TextureView
La TextureView
classe est une vue qui utilise le rendu 2D à accélération matérielle pour permettre l’affichage d’un flux de contenu vidéo ou OpenGL. Par exemple, la capture d’écran suivante montre l’affichage TextureView
d’un flux en direct à partir de l’appareil photo de l’appareil :
Contrairement à la classe, qui peut également être utilisée pour afficher du SurfaceView
contenu OpenGL ou vidéo, TextureView n’est pas rendu dans une fenêtre distincte.
Par conséquent, TextureView
il est en mesure de prendre en charge les transformations d’affichage comme n’importe quelle autre vue. Par exemple, la rotation d’un peut TextureView
être effectuée en définissant simplement sa Rotation
propriété, sa transparence en définissant sa Alpha
propriété, et ainsi de suite.
Par conséquent, avec le TextureView
code suivant, nous pouvons désormais effectuer des opérations telles que l’affichage d’un flux en direct à partir de l’appareil photo et la transformer :
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;
}
…
}
Le code ci-dessus crée une TextureView
instance dans la méthode de l’activité OnCreate
et définit l’activité comme étant le TextureView
« .SurfaceTextureListener
Pour être le SurfaceTextureListener
, l’activité implémente l’interface TextureView.ISurfaceTextureListener
. Le système appelle la OnSurfaceTextAvailable
méthode lorsque le SurfaceTexture
système est prêt à être utilisé. Dans cette méthode, nous prenons l’élément SurfaceTexture
passé et nous le définissons sur la texture d’aperçu de l’appareil photo. Ensuite, nous sommes libres d’effectuer des opérations normales basées sur la vue, telles que la définition du Rotation
et Alpha
, comme dans l’exemple ci-dessus. L’application résultante, en cours d’exécution sur un appareil, est illustrée ci-dessous :
Pour utiliser le , l’accélération TextureView
matérielle doit être activée, ce qui sera par défaut au niveau de l’API 14. En outre, étant donné que cet exemple utilise l’appareil photo, l’autorisation android.permission.CAMERA
et la android.hardware.camera
fonctionnalité doivent être définies dans la AndroidManifest.xml.