Xamarin.Android TextureView
TextureView
sınıfı, bir videonun veya OpenGL içerik akışının görüntülenmesini sağlamak için donanım hızlandırmalı 2B işleme kullanan bir görünümdür. Örneğin, aşağıdaki ekran görüntüsü cihazın kamerasından canlı akış görüntülemeyi gösterir TextureView
:
SurfaceView
OpenGL veya video içeriğini görüntülemek için de kullanılabilen sınıfından farklı olarak, TextureView ayrı bir pencerede işlenmez.
Bu nedenle, TextureView
diğer görünümler gibi görünüm dönüştürmelerini destekleyebiliyor. Örneğin, yalnızca özelliğini, özelliğini ayarlayarak Rotation
saydamlığını vb. ayarlayarak Alpha
bir TextureView
döndürme gerçekleştirilebilir.
Bu nedenle, artık aşağıdaki kodda TextureView
gösterildiği gibi kameradan canlı akış görüntüleme ve dönüştürme gibi işlemler yapabiliriz:
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;
}
…
}
Yukarıdaki kod Activity'in yönteminde bir TextureView
örnek oluşturur ve Activity öğesini 's SurfaceTextureListener
olarak TextureView
ayarlar.OnCreate
olmak SurfaceTextureListener
için, Activity arabirimini TextureView.ISurfaceTextureListener
uygular. sistem, kullanıma hazır olduğunda SurfaceTexture
yöntemini çağırırOnSurfaceTextAvailable
. Bu yöntemde geçirileni SurfaceTexture
alıp kameranın önizleme dokusuna ayarlayacağız. Ardından, yukarıdaki örnekte olduğu gibi ve Alpha
ayarını yapmak Rotation
gibi normal görünüm tabanlı işlemleri gerçekleştirmekte serbestiz. Bir cihazda çalışan sonuçta elde edilen uygulama aşağıda gösterilmiştir:
kullanmak TextureView
için, donanım hızlandırması etkinleştirilmelidir ve api Düzeyi 14 itibarıyla varsayılan olarak bu değer olacaktır. Ayrıca, bu örnekte kamera kullanıldığı için hem izin hem android.hardware.camera
de android.permission.CAMERA
özellik AndroidManifest.xml ayarlanmalıdır.