首页 > 其他分享 >界面刷新你不知道的东西

界面刷新你不知道的东西

时间:2024-07-13 11:27:39浏览次数:10  
标签:界面 TextureView 东西 SurfaceView 线程 刷新 窗口 绘制 View

一、概述。
View、SurfaceView、GLSurfaceView、TextureView都可用于显示视频、动画、游戏或其他图形内容。


二、被动更新画面。
以游戏举例,比如棋类,这种用View就好了。因为画面的更新是依赖于 onTouch 触摸事件来更新,在UI线程中可以使用 invalidate(),在非UI线程中可以使用postInvalidate()来触发。 在这种情况下,这一次Touch和上一次Touch间隔的时间比较长,不会产生影响。


三、主动更新画面。
以一个人在一直跑动为例。这就需要一个单独的Thread不停的重绘人的状态,避免阻塞main UI 线程。所以显然View不合适,而应该需要用SurfaceView来控制。因为SurfaceView可以在非UI线程中进行界面刷新,绘图操作在独立的线程中完成,特别适合于那些需要频繁更新界面的应用,如视频播放、游戏等。


四、3D游戏、3D设计、3D展示界面、3D地图。
为了追求极致的性能和帧率,可以使用GLSurfaceView(继承自SurfaceView)。其本身就封装了一些OpenGL ES的API(上下文管理、渲染循环等复杂操作),配合各个平台实现的EGL, 通过着色器(OpenGL/OpenGLES(OpenGL for Embedded Systems) Shader Language中的顶点着色器、片元着色器)可以达到很多View难以达到的效果。适合需要复杂3D图形渲染的应用。


五、SurfaceView与TextureView。
1.SurfaceView和TextureView都继承自View。

2.SurfaceView在API 1及以上版本可用,TextureView在API 14及以上版本可用。

3.TextureView只能使用在硬件加速窗口中。在用软件渲染时,TextureView不会绘制任何东西。

4.SurfaceView可在独立的线程中进行绘制,而TextureView在主线程中进行绘制。

5.SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(Android普通窗口的View绘制机制是一层一层的,任何一个子元素刷新或局部的刷新都会导致整个视图结构全部重绘一次,因此效率非常低下,不过满足普通应用界面的需求还是绰绰有余),但是SurfaceView也有一些非常不便的限制。因为SurfaceView的内容不在应用窗口上,是在应用窗口之外的一个独立的绘图表面Surface(显示在应用程序窗口之上)上进行绘制,所以不能使用变换(平移(Translate)、缩放(Scale)、旋转(Rotate)、倾斜(Skew)等)。所以如果是对于视频播放器、OpenGL场景或者相机应用的开发,TextureView更加适合。

6.SurfaceView绘制在独立的层上,不支持透明度、动画效果和变换。
TextureView支持透明度、动画效果和变换。

7.TextureView的性能低于SurfaceView,,因为它涉及额外的缓冲区和可能的同步开销。

8.SurfaceView使用双缓冲机制,在一个独立的窗口进行绘制,所以在某些设备上,SurfaceView的内容可能在窗口切换时丢失。而TextureView将内容绘制在一个普通的View上,不需要独立的窗口,因此不会出现内容丢失的问题。
 


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

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

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

标签:界面,TextureView,东西,SurfaceView,线程,刷新,窗口,绘制,View
From: https://blog.csdn.net/cxsjabcabc/article/details/140397052

相关文章

  • AI绘画神器ComfyUI 整合包:工作流界面,解压即用,快速入门AI绘画进阶教程
    大家好,我是设计师阿威赛博佛祖秋葉Aki之前发布了针对ComfyUI的整合安装包,让这款原本偏专业的AI绘画工具对初学者来说更容易上手使用了,我也安装试用了一下,的确非常方便,今天就为大家详细介绍一下整合包的用法~一、ComfyUI简介ComfyUI和大家熟知的WebUI一样,都是......
  • Lingo学习(一)——基本界面、解方程、变量
    一、Lingo基本界面【步骤】1.双击打开Lingo2.弹出一个对话框,点击Cancel左边的NeverRegister即可,其余内容用不到。3:界面自动弹出名为“LingoModel–Lingo1”的窗口,用于书写代码。4:以解方程的题目:x+1=2为例,写完代码后,点击“红色的靶心”运行程序。5:首......
  • 界面组件Kendo UI for React 2024 Q2亮点 - 生成式AI集成、设计系统增强
    随着最新的2024年第二季度发布,KendoUIforReact为应用程序开发设定了标准,包括生成式AI集成、增强的设计系统功能和可访问的数据可视化。新的2024年第二季度版本为应用程序界面提供了人工智能(AI)提示,从设计到代码的生产力增强、可访问性改进、一系列新的UI组件等。KendoUI致力......
  • Windows11使用子系统Ubuntu20.04配置图形化界面和安装软件
    前言        在上一章节,我们在windows11下利用wsl2安装了Ubuntu-linux子系统,并下载了android10的源码进行编译(Ubuntu运行环境下Android10源码下载和编译_ubuntu18下载android10源码-CSDN博客)。如果想进行android源码以及framework的学习,一定需要代码编辑软件,我之前学......
  • 【Servlet】到底是个什么东西?一文读懂!
    我说一下我对于servlet的理解,我理解的是,客户端向服务端发送http请求,首先被服务端的servlet拿到然后储存到servlet中,然后服务端调用servlet中的方法拿到前端请求的数据后,进行JTW签名再通过servlet容器中的reseponce方法响应给前端,这里的servlet我感觉它就像是一个在客户端与服务......
  • 单机版的食品管理系统设计与实现GUI图形界面(学之余版权所有)
    单机版的食品管理系统设计与实现摘要:本论文旨在设计并实现一个单机版的食品管理系统。通过使用Java语言和相关技术,以食品管理为核心功能,实现了用户登录、食品浏览、新增、删除和修改等操作。该系统可以分为管理员和非管理员两类用户,管理员拥有对食品进行增删改查的权限,而非......
  • 百问网全志D1h开发板红外控制LVGL界面切换
    红外控制LVGL界面切换1.测试红外功能1.1配置设备树查看原理图:可以看到红外对应的引脚号是PG16。进入目录:cd/home/ubuntu/tina-d1-h/device/config/chips/d1-h/configs/nezha/linux-5.4修改board.dts:vimboard.dts修改引脚:以下节点是红外接收的设备树节点,没......
  • 学习老算法,争做老东西
    目录DancingLinksDancingLinks考虑这样一个问题:给定一个\(N\)行\(M\)列的矩阵,矩阵中每个元素要么是\(1\),要么是\(0\)。你需要在矩阵中挑选出若干行,使得对于矩阵的每一列\(j\),在你挑选的这些行中,有且仅有一行的第\(j\)个元素为\(1\)。这类问题统称为精确覆盖问......
  • 在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
    以前,我看到一个朋友在对一个系统做初始化的时候,通过一组魔幻般的按键,调出来一个隐藏的系统设置界面,这个界面在常规的菜单或者工具栏是看不到的,因为它是一个后台设置的关键界面,不公开,同时避免常规用户的误操作,它是作为一个超级管理员的入口功能,这个是很不错的思路。其实Winform做这......
  • 原生js简单模拟移动端下拉刷新
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docu......