Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The TextureView class is a view that uses hardware-accelerated
2D rendering to enable a video or OpenGL content stream to be displayed. For
example, the following screenshot shows the TextureView displaying
a live feed from the device's camera:
Unlike the SurfaceView class, which can also be used to display
OpenGL or video content, the TextureView is not rendered into a separate window.
Therefore, TextureView is able to support view transformations like
any other view. For example, rotating a TextureView can be
accomplished by simply setting its Rotation property, its
transparency by setting its Alpha property, and so on.
Therefore, with the TextureView we can now do things like
display a live stream from the camera and transform it, as shown in the
following code:
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;
}
…
}
The above code creates a TextureView instance in the Activity's
OnCreate method and sets the Activity as the TextureView's
SurfaceTextureListener. To be the SurfaceTextureListener, the
Activity implements the TextureView.ISurfaceTextureListener
interface. The system will call the OnSurfaceTextAvailable method
when the SurfaceTexture is ready for use. In this method, we take the
SurfaceTexture that is passed in and set it to the camera's preview
texture. Then we are free to perform normal view-based operations, such
as setting the Rotation and Alpha, as in the example above. The
resulting application, running on a device, is shown below:
To use the TextureView, hardware acceleration must be enabled, which
it will be by default as of API Level 14. Also, since this example uses
the camera, both the android.permission.CAMERA permission and the
android.hardware.camera feature must be set in the
AndroidManifest.xml.

