缩放一个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) | 方法 | 解释 |
|---|---|---|
| void | addCallback(SurfaceHolder.Callback callback) | 为整个holder添加回调接口 |
| Surface | getSurface() | 直接访问surface对象 |
| Rect | getSurfaceFrame() | 获取surface的尺寸大小 |
| boolean | isCreating() | 使用这个方法来找出是否在从回调方法创建的过程中。 |
| Canvas | lockCanvas() | 开始编辑surface的像素 |
| void | unlockCanvasAndPost(Canvas canvas) | 结束编辑surface像素 |
| Canvas | lockCanvas(Rect dirty) | 开始编辑surface的像素,但是允许特殊矩形 |
| default Canvas | lockHardwareCanvas() | 开始编辑surface的像素,但是返回的画布是硬件加速的 |
| void | removeCallback(SurfaceHolder.Callback callback) | 从holder移除回调接口 |
| void | setFixedSize(int width, int height) | 修改surface 尺寸 |
| void | setFormat(int format) | 设置surface的像素格式 格式:PixelFormat |
| abstract void | setKeepScreenOn(boolean screenOn) | 启用或禁用选项,以便在显示该界面时打开屏幕。 |
| void | setSizeFromLayout() | 允许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(以及两个回调 AvailabilityCallback和TorchCallback)
2:CameraDevice(以及回调StateCallback)
3:CameraCaptureSession(以及两个回调:CaptureCallback和StateCallback)
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);
| 返回值 | 方法名 | 解释 |
|---|---|---|
| CameraCharacteristics | getCameraCharacteristics(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回调,官方文档解释:
一个用于相机设备的回调或无法打开的回调。