類別 TextureView 是使用硬體加速的 2D 轉譯來顯示視訊或 OpenGL 內容數據流的檢視。 例如,下列螢幕快照顯示 TextureView 顯示來自裝置相機的即時摘要:
SurfaceView不同於類別,它也可以用來顯示 OpenGL 或視訊內容,TextureView 不會轉譯成不同的視窗。
因此, TextureView 能夠像任何其他檢視一樣支持檢視轉換。 例如,旋轉 TextureView 可以藉由直接設定其 屬性、設定其 RotationAlpha 屬性的透明度等來完成。
因此,現在 TextureView 我們可以執行像是從相機顯示即時串流並轉換它等動作,如下列程式代碼所示:
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;
}
…
}
此程式代碼會在 TextureView Activity OnCreate 方法中建立實體,並將 Activity 設定為 TextureView的 SurfaceTextureListener。 若要成為 SurfaceTextureListener,活動會實作 TextureView.ISurfaceTextureListener 介面。 系統會在準備好使用 時SurfaceTexture呼叫 OnSurfaceTextAvailable 方法。 在此方法中,我們會採用 SurfaceTexture 傳入的 ,並將它設定為相機的預覽紋理。 然後,我們可以自由執行一般檢視型作業,例如設定 Rotation 和 Alpha,如上述範例所示。 在裝置上執行的結果應用程式如下所示:
若要使用 TextureView,必須啟用硬體加速,其預設會是 API 層級 14。 此外,由於此範例會使用相機,android.permission.CAMERA因此許可權和android.hardware.camera功能都必須在 AndroidManifest.xml中設定。

