大大啊啊啊

433 阅读3分钟

缩放一个SurfaceView将不会导致呈现工件

public方法解释
void draw(Canvas canvas)手动的将各种view渲染到给定的画布上
boolean gatherTransparentRegion(Region region)当视图层次结构包含一个或多个SurfaceView时,RootView使用它来执行优化。
SurfaceHolder getHolder()返回SurfaceHolder,用于访问和控制SurfaceView
void setSecure(boolean isSecure)控制表面视图的内容是否应该被视为安全的,防止它出现在屏幕截图中或在非安全显示中被查看。注意,必须在窗口管理器的窗口视图包含窗口之前设置此设置。
void setVisibility(int visibility)surfaceView可见设置
void setZOrderMediaOverlay(boolean isMediaOverlay)surfaceView1是否被放置在另一个surfaceView2视图上
setZOrderOnTop(boolean onTop)在自己的window内,设置最顶层显示

protected的方法

protected方法解释
void dispatchDraw(Canvas canvas)由draw调用绘制子view
void onAttachedToWindow()视图view依附到window上被触发
void onDetachedFromWindow()视图view从window上分离被触发
onMeasure(int widthMeasureSpec, int heightMeasureSpec)绘制view的宽高
onWindowVisibilityChanged(int visibility)在视图持续可见和不可见变化时触发

<2> SurfaceHolder API

返回值(abstract)方法解释
voidaddCallback(SurfaceHolder.Callback callback)为整个holder添加回调接口
SurfacegetSurface()直接访问surface对象
RectgetSurfaceFrame()获取surface的尺寸大小
booleanisCreating()使用这个方法来找出是否在从回调方法创建的过程中。
CanvaslockCanvas()开始编辑surface的像素
voidunlockCanvasAndPost(Canvas canvas)结束编辑surface像素
CanvaslockCanvas(Rect dirty)开始编辑surface的像素,但是允许特殊矩形
default CanvaslockHardwareCanvas()开始编辑surface的像素,但是返回的画布是硬件加速的
voidremoveCallback(SurfaceHolder.Callback callback)从holder移除回调接口
voidsetFixedSize(int width, int height)修改surface 尺寸
voidsetFormat(int format)设置surface的像素格式 格式:PixelFormat
abstract voidsetKeepScreenOn(boolean screenOn)启用或禁用选项,以便在显示该界面时打开屏幕。
voidsetSizeFromLayout()允许Surface根据其容器的布局调整大小

<3> SurfaceHolder.Callback接口

重写方法解释
surfaceChanged(SurfaceHolder holder, int format, int width, int height)surface改变回调
surfaceCreated(SurfaceHolder holder)surface第一次创建就回调
surfaceDestroyed(SurfaceHolder holder)surface销毁回调

<二>Camera2 相关的类

android5.0之后支持的API,主要功能都在android.hardware.camera2中。相关的类有:
1:CameraManager(以及两个回调 AvailabilityCallbackTorchCallback)
2:CameraDevice(以及回调StateCallback)
3:CameraCaptureSession(以及两个回调:CaptureCallbackStateCallback)
4:CaptureRequest(以及CaptureRequest.Builder类)+CaptureResult+TotalCaptureResult+CameraCharacteristics,这四个类都继承了基类CameraMetadata
5:接收数据类android.media.ImageReader
6:xml布局类:TextureView (google demo推荐)或SurfaceView

<1>CameraManager

官方文档解释:
一种系统服务管理器,用于检测、描述和连接到照相机设备。
获取该实例的方法:CameraManager manager =(CameraManager)Context.getSystemService(Context.CAMERA_SERVICE);或者
CameraManager manager =(CameraManager)Context. getSystemService(CameraManager.class);

返回值方法名解释
CameraCharacteristicsgetCameraCharacteristics(String cameraId)查询摄像机设备的功能。
String[]getCameraIdList()通过标识符返回当前连接的相机设备的列表,包括可能被其他相机API客户端使用的相机。

openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)打开一个带有给定ID的相机的连接。

registerAvailabilityCallback(CameraManager.AvailabilityCallback callback, Handler handler)注册一个回调,以获得关于相机设备可用性的通知。

registerTorchCallback(CameraManager.TorchCallback callback, Handler handler)注册一个回调,以获得关于torch mode状态的通知。

setTorchMode(String cameraId, boolean enabled)在不打开相机设备的情况下,设置闪光灯的闪光灯模式。

unregisterAvailabilityCallback(CameraManager.AvailabilityCallback callback)删除之前添加的回调,回调将不再接收连接和断开回调。

unregisterTorchCallback(CameraManager.TorchCallback callback)删除之前添加的回调,回调将不再接收torch mode状态回调。

<1-1>CameraManager.AvailabilityCallback

CameraManager的内部类AvailabilityCallback回调,官方文档解释:

一个用于相机设备的回调或无法打开的回调。