Xamarin.Android TextureView
클래스는 TextureView
하드웨어 가속 2D 렌더링을 사용하여 비디오 또는 OpenGL 콘텐츠 스트림을 표시할 수 있도록 하는 보기입니다. 예를 들어 다음 스크린샷은 디바이스의 카메라에서 라이브 피드를 표시하는 것을 보여 TextureView
줍니다.
SurfaceView
OpenGL 또는 비디오 콘텐츠를 표시하는 데 사용할 수도 있는 클래스와 달리 TextureView는 별도의 창으로 렌더링되지 않습니다.
따라서 TextureView
다른 보기와 같은 보기 변환을 지원할 수 있습니다. 예를 들어 회전은 TextureView
속성을 설정 Rotation
하기만 하면 되고, 속성을 설정하여 투명도를 설정하는 Alpha
등의 작업을 수행할 수 있습니다.
따라서 이제 다음 코드와 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;
}
…
}
위의 코드는 Activity의 OnCreate
메서드에 인스턴스를 만들고 TextureView
활동을 TextureView
'sSurfaceTextureListener
로 설정합니다. 활동은 SurfaceTextureListener
인터페이스를 구현합니다 TextureView.ISurfaceTextureListener
. 사용 준비가 되면 시스템에서 메서드를 SurfaceTexture
호출 OnSurfaceTextAvailable
합니다. 이 메서드에서는 전달된 텍스처를 가져와 SurfaceTexture
카메라의 미리 보기 질감으로 설정합니다. 그런 다음 위 예제와 같이 설정과 Alpha
같은 Rotation
일반적인 보기 기반 작업을 자유롭게 수행할 수 있습니다. 디바이스에서 실행되는 결과 애플리케이션은 다음과 같습니다.
이 기능을 사용 TextureView
하려면 하드웨어 가속을 사용하도록 설정해야 합니다. 이 가속은 기본적으로 API 수준 14입니다. 또한 이 예제에서는 카메라를 사용하므로 AndroidManifest.xml 사용 권한과 android.hardware.camera
기능을 모두 android.permission.CAMERA
설정해야 합니다.