TextureView在视图层级中作为纹理处理,性能稍逊,但提供更多视图操作灵活性。 2、 视图变换: SurfaceView不支持常见的视图变换操作(如旋转、缩放),只能随整个窗体一同进行变换。 TextureView支持所有视图变换操作,适合需要变换和动画的内容。 3、 使用方式: SurfaceView需要通过SurfaceHolder进行管理和绘制。 TextureView通过S...
与 SurefaceView 不同,TextureView 不会创建一个独立的窗口,而是像一个普通的 View 一样。这种区别使得 TextureView 可以移动、转换和做动画等,比如你可以使用 TextureView 的 setAlpha() 方法将其设置成半透明的 它不会在WMS中单独创建窗口,而是作为View hierachy中的一个普通view,因此它可以和其他普通View一样进...
TextureView总是使用GL合成,而SurfaceView可以使用硬件overlay后端,可以占用更少的内存带宽,消耗更少的能量
TextureView和SurfaceView显示Camera数据其实差不多,差别就两点: 1. SurfaceView显示需要实现SurfaceHolder.Callback的回调而TextureView通过实现 TextureView.SurfaceTextureListener接口。 2. 当Camera使用SurfaceView预览时通过setPreviewDisplay(holder)方法来设置预览视图,而使用TextureView预览时使用setPreviewTexture(mCameraTextur...
SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。 那么在UI的主线程中更新画面 可能会引发问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等消息。
TextureView.setSurfaceTextureListener在⼦线程中更新UI,个⼈认为能够在⼦线程中更新UI是上述两种View相⽐于View的最⼤优势。但是,两者更新画⾯的⽅式也有些不同,由于SurfaceView的双缓冲功能,可以是画⾯更加流畅的运⾏,但是由于其holder的存在导致画⾯更新会存在间隔(不太好表达,直接上图)。并...
首先,我们需要先熟悉三个概念:SurfaceView,TextureView,SurfaceTexture SurfaceView 从设计之初,该控件就存在了,她继承自View,但又与普通View不同,那就是拥有自己的Surface。 我们知道Android中页面会组成View树形结构,只有在顶层的DecorView才是可见的,相反SurfaceView她的工作方式是创建一个区别于应用窗口的新窗口(拥有自...
SurfaceTexture和SurfaceView不同的是,它对图像流的处理并不直接显示,而是转为GL外部纹理,因此可用于图像流数据的二次处理(如Camera滤镜,桌面特效等)。比如Camera的预览数据,变成纹理后可以交给GLSurfaceView直接显示,也可以通过SurfaceTexture交给TextureView作为View heirachy中的一个硬件加速层来显示。首先,SurfaceTexture从...