Xamarin.Android TextureView
Kelas TextureView
adalah tampilan yang menggunakan penyajian 2D yang dipercepat perangkat keras untuk memungkinkan video atau aliran konten OpenGL ditampilkan. Misalnya, cuplikan layar berikut menunjukkan TextureView
tampilan umpan langsung dari kamera perangkat:
SurfaceView
Tidak seperti kelas , yang juga dapat digunakan untuk menampilkan konten OpenGL atau video, TextureView tidak dirender ke jendela terpisah.
Oleh karena itu, TextureView
mampu mendukung transformasi tampilan seperti tampilan lainnya. Misalnya, memutar TextureView
dapat dicapai hanya dengan mengatur propertinya Rotation
, transparansinya dengan mengatur propertinya, dan sebagainya Alpha
.
Oleh karena itu, dengan kita sekarang dapat melakukan hal-hal seperti menampilkan streaming langsung dari kamera dan mengubahnya, seperti yang TextureView
ditunjukkan dalam kode berikut:
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;
}
…
}
Kode di atas membuat instans TextureView
dalam metode Aktivitas OnCreate
dan menetapkan Aktivitas sebagai TextureView
.SurfaceTextureListener
Untuk menjadi SurfaceTextureListener
, Aktivitas mengimplementasikan TextureView.ISurfaceTextureListener
antarmuka. Sistem akan memanggil OnSurfaceTextAvailable
metode ketika SurfaceTexture
siap digunakan. Dalam metode ini, kita mengambil SurfaceTexture
yang diteruskan dan mengaturnya ke tekstur pratinjau kamera. Kemudian kita bebas melakukan operasi berbasis tampilan normal, seperti mengatur Rotation
dan Alpha
, seperti pada contoh di atas. Aplikasi yang dihasilkan, berjalan pada perangkat, ditunjukkan di bawah ini:
Untuk menggunakan TextureView
, akselerasi perangkat keras harus diaktifkan, yang akan secara default pada API Level 14. Selain itu, karena contoh ini menggunakan kamera, izin android.permission.CAMERA
dan android.hardware.camera
fitur harus diatur dalam AndroidManifest.xml.