ConstraintLayout随笔

  1. camera框架为android自带拍摄框架,可以用来拍摄及录像。
  2. camera类为摄像头类,接受框架层反馈的,由手机摄像头采集到的数据。
  3. camera采集到的数据,需要一个视图类进行解析和显示。
  4. 视图类最基本的就是surfaceview。
  5. Surfaceview是android自带的视图类,可以用来显示图像,图像不仅限于图片,还可以用来播放视频,一般用于动画播放,视频播放,摄像头显示,以及游戏。
  6. Surfaceview与普通的view不同的是,它并不是直接显示在屏幕上,而是在窗口上再开一个窗口,窗口大小与surfaceview大小相同,位置相同。
  7. Surfaceview的独立窗口为独立线程,与主线程相区别,类似游戏之类的大量数据处理用surfaceview可以一定程度的避免主线程堵塞造成的卡顿。
  8. Surfaceview不同于普通的view,并不是直接将视图显示在自身上,所以部分view的方法无效,例如view的截图方法,surfaceview调用会返回一张全黑的bitmap。
  9. 其中需要注意的是,如果你要对图像进行处理,比如旋转90度进行视频播放,对surfaceview调用旋转方法是无法改变图像的播放状态的,因为实际显示图像的是surfaceview创建的窗口,而不是surfaceview。
  10. Surfaceview有很多延伸类,例如GLSurfaceview,GLSurfaceview有使用到手机芯片中的图形加速模块,故而效率会比surfaceview高很多,相对的,消耗也会大很多。
  11. 相对surfaceview,存在另一个类,Textureview。此类由android4.0之后推出。
  12. Textureview继承于View,与surfaceview不同的是他并不会新开窗口,而是像普通的view一样将图像绘制并在自身上显示,比起surfaceview,他的消耗大,而且需要在清单文件中对此类控件存在的activity注册硬件加速,否则在一些低配手机上容易造成卡顿,优势是可以更加直观的对图像进行处理。
  13. 开发摄像头应用时,将camera与视图类进行关联,比如surfaceview有一个叫SurfaceView.Holder的,将他与camera相关

猜你喜欢

转载自www.cnblogs.com/orders/p/10845461.html