Xamarin.Android TextureView
Třída TextureView
je zobrazení, které používá hardwarově akcelerované 2D vykreslování k povolení zobrazení videa nebo streamu obsahu OpenGL. Například následující snímek obrazovky ukazuje TextureView
zobrazení živého kanálu z fotoaparátu zařízení:
SurfaceView
Na rozdíl od třídy, která lze použít také k zobrazení OpenGL nebo video obsahu, TextureView není vykreslen do samostatného okna.
TextureView
Proto je možné podporovat transformace zobrazení jako jakékoli jiné zobrazení. Otočením objektu TextureView
lze například dosáhnout jednoduchým nastavením jeho Rotation
vlastnosti, průhlednosti nastavením jeho Alpha
vlastnosti atd.
Díky tomu teď můžeme dělat věci, TextureView
jako je zobrazení živého streamu z fotoaparátu a jeho transformace, jak je znázorněno v následujícím kódu:
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;
}
…
}
Výše uvedený kód vytvoří TextureView
instanci v metodě aktivity OnCreate
a nastaví aktivitu jako TextureView
's SurfaceTextureListener
. Aby to bylo SurfaceTextureListener
, aktivita implementuje TextureView.ISurfaceTextureListener
rozhraní. Systém zavolá metodu OnSurfaceTextAvailable
, když SurfaceTexture
je připraven k použití. V této metodě vezmeme SurfaceTexture
předanou a nastavíme ji na texturu náhledu fotoaparátu. Pak můžeme provádět normální operace založené na zobrazení, jako je nastavení Rotation
a Alpha
, jako v příkladu výše. Výsledná aplikace spuštěná na zařízení je zobrazená níže:
Aby bylo možné použít TextureView
hardwarovou akceleraci, musí být povolená, což bude ve výchozím nastavení nastaveno na úrovni rozhraní API 14. Vzhledem k tomu, že tento příklad používá kameru, musí být v AndroidManifest.xml nastavena android.permission.CAMERA
oprávnění i android.hardware.camera
funkce.