View,SurfaceView,GLSurfaceView,TextureView的区别与联系

程序员小迷 2024-07-06 14:20:59

一、View:

显示视图,内置画布Canvas,提供了图形绘制函数、触屏事件处理函数、按键事件处理函数等,必须在UI主线程内更新画面,速度较慢。

二、SurfaceView:

基于View视图进行拓展的视图类,更适合2D游戏的开发,是View的子类,使用了双缓冲机制,即:允许在子线程中更新画面,所以刷新界面速度比View快。

三、GLSurfaceView:

基于SurfaceView视图再次进行拓展的视图类,在SurfaceView基础上封装了EGL环境管理以及render线程,专用于3D游戏开发的视图。是SurfaceView的子类,OpenGL专用。OpenGL的渲染线程与Android中的UI线程不同。

四、TextrueView:

前面的SurfaceView的工作方式是在一个独立的绘图表面进行绘制,因此无法对其应用变换操作(平移、缩放、旋转等),而TextureView则解决了此问题,在Android4.0引入。

五、引申:

Android中UI线程(即主线程)中更新画面有时可能会引发问题,比如你若处理更新画面的时间过长,那么UI线程会被你正在渲染的函数阻塞,那么将无法响应按键、触屏等消息。而SurfaceView 系的API由于是在新的线程中更新画面所以不会阻塞你的UI线程。但这也带来了另外一个问题,就是事件同步、多线程同步问题。

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

0 阅读:0

程序员小迷

简介:致力于Android、iOS、C、Java等编程技术的技巧经验分享