各种UI库使用总结

各种UI库使用总结

工作了这么年,使用了一些UI库,简单的总结一下,UI库也是五花八门,根据自己的产品,应用场景吧,没有绝对合适的,各有各的应用场景吧!

QT

这几年前后在一些嵌入式上使用过QT来做为开发,有带UI及不带UI界面的!版本的基本用的QT5.5, QT5.9这些,在嵌入式上这些版本应用都不差不多,用的功能不会比较特殊!

性能

性能上关注了一下CPU占用率上,在Hi3536C上测试了一下,使用QT linux framebuffer的方式,在刷新UI时,CPU占用率会达到10%~20%左右,还是占用率很高的!同新的应用的刷新场景使用了LVGL,LVGL只占用3%左右!这个应该同QT的linux fb中实现的方式有关,看其中的实现,QT是很暴力的把一整屏内容更新的!
这个要看芯片厂家的支持上,如果芯片厂家通过一些手段优化了,比如硬件加速方面!

内存

内存占用上与其他的UI比起来也会高出不少,不过直接用QT的场景,好像板上内存都挺足的情况下!库的空间占用也比较高!在一些flash很紧张的产品上应该也不太适用,如只有8MB,16MB的这样的空间上。

开发体验

这种"全家桶"系的解决方案,在开发上还是很方便的,QT在C++上的库的支持也是很全面、很方便,开发过几年的c、c++的朋友,如果是开发那种数据业务多的场景,如果自己要用过JAVA,C#,python,js这些开发人员来说,感觉工作一个就是在天上,一个就是在十八层以下!

不过有了QT库就不同了,在操作数据库、文件、像JSON、XML这些,感觉就是信手拈来,效率杆杆的!各种库API使用方式,基本风格方式也是一致,你招个新人也能很快的上手,这种"全家桶"在各种场景上保持一致,开发了一个产品后,再搞其他的产品基本90%的代码就是ctrl+C,ctrl+v了!内存管理上也提供了很大的支持!

这几年下来用他开发了一些停车场管理系统(以前是在PC上的)、人脸识别产品(平板类),不管在是开发和维护上都很方便!这些都是用在有数据库(MYSQL, SQLITE)交互,内存大(512MB, 1GB),Flash空间大(nand, EMMC)的场景,如果产品是用在工业控制类的场景应该考虑的方式即不一样了!

在QT用在这些产品上时,也应该考虑UI刷新率的问题,在嵌入式产品上一般是没有GPU的,像NVR,DVR上,输出分辨率基本又高,这时情况下UI的刷新率就不太高了,记得在Hi3536C上开发一款管理系统UI时,输出HDMI,VGA这样的显示,分辨率有的接1080P,2K显示,开始用的QT的Linuxfb上,刷新就感觉明显迟顿,最后花了好大的劲才把DirectUI来做为QT的底层绘图,虽然QT里加了对这个的支持,但使用中发现各种问题,还是做了很多修改才解决的!

不过现在的ARM嵌入式片子上,现在很多有GPU了,很多都4核CPU,内存配置也足,QT加上wayland方式,也是刷新很快了,最近使用的RK3568,刷新上就没有什么问题!

DirectUI

性能

没有直接用这个UI来做开发,就是之前在QT时,遇到刷新性能问题时,使用了它,这个UI也是比较老了,更新的东西不多,UI控件基本没有,很底层的一个UI,不过刷新效率很高,窗体管理的方式也很特别!控件扩展性感觉不太好操作!

内存

内存占用上很低

开发体验

使用的版本是1.7.x 没有直接使用开发UI界面产品,不太好说,窗体管理方式比较特别,代码不太好调试,控件扩展性感觉不太好操作!

SDL

这个产品上没有用过,用来开发游戏应用,或用来作为底层应该比较合适!

UCGUI

性能

性能上这个UI表现也很不错,不过没有一些统计数据了!

内存

不管是在内存占用上,还是空间大小上都有很大的可操作空间,可以在各种嵌入式产品上使用!

开发体验

从UI底层、到UI库的各种控件、窗体、字体、应用上都可以很方便的控制,这样可以比较容易实现UI库本身没有的功能,如UI的绘制、特殊的控件!

这个在在2012年左在开发一款NVR产品用过的了,版本在3.9.x上,记得是在早期海思Hi3515,Hi3520上,这个UI并不是开源的。这个UI库之前用的人还是很多,现在发现也还有很多人在用这个库来做产品!也是自己最开始学习一些UI技术入门的一个库,通过他了解了UI的实现原理,区域、窗体绘制管理、字体实现、控件等技巧。

不过这个库不是开源的,也是有版权风险存在的!由于是很早的版本了,与现代流行的UI风格、操作方式还是有很多的不同了,如果是用在工业控制显示上、交互操作体验要求不高的地方,还是比较合适,但如果用在现代一些消费类电子、用户交互要求高的场景,就感觉比较落伍,控件风格有种win98的那种感觉!如果自己要实现当前流行的风格花的力气就大了!

MiniGUI

性能

很早之前编译试用过一段时间,性能表现感觉一般,不太好说!

内存

从其控件,内存管理上都与UICGUI应该是比较类似的方式,不过代码风格上又完全不同,很像Windows下的MFC方式!

开发体验

其他我是比较反感Windows下的MFC方式的!没有怎么用,所以不太好说!

LVGL

性能

在不使用图片、只是纯绘制类的控件上,应该非常高效了

内存

单片机上都可以跑,你觉得呢?

开发体验

很现代,很流行的风格,这是上手后,UI跑起来后的第一感觉!从低层与控件,到应用都自己可控,感觉很爽,要实现现代流行的UI,又不需要去怎么定制,所以比较喜欢这货,这家伙又从单片机、SOC各种场景都能搞!

上手难度的话,也不大,就是要一点时间熟悉他的各种操作!不过文档很丰富,很完整!

在控件支持上也大部分都有吧,字体支持、图片支持还需要自己处理一些,在一些基他方面可能也需要自己处理一下,像鼠标输入,触摸等!

现在在用他试着用一个NVR,DVR界面,地址:https://gitee.com/jhting/pupanvr.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/75036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 630. Course Schedule III【反悔贪心,堆,排序】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

Progresql数据库安装--安装

--安装progresql数据库 systemctl disable firewalld systemctl status firewalld systemctl stop firewalld --准备工作 yum install epel-release.noarch -y yum install libzstd.x86_64 -y # Install the repository RPM: s sudo yum install -y https://download.postgresq…

SpringMVC的简介及工作流程

一.简介 Spring MVC是一个基于Java的开发框架,用于构建灵活且功能强大的Web应用程序。它是Spring Framework的一部分,提供了一种模型-视图-控制器(Model-View-Controller,MVC)的设计模式,用于组织和管理Web…

MATLAB中isoutlier函数用法

目录 语法 说明 示例 检测向量中的离群值 使用均值检测方法 使用移窗检测法 检测矩阵中的离群值 可视化离群值阈值 isoutlier函数的功能是查找数据中的离群值 语法 TF isoutlier(A) TF isoutlier(A,method) TF isoutlier(A,"percentiles",threshold) TF…

你们分库分表使用什么中间件,有什么优点和缺点?

分析&回答 根据自己的实际使用来说: cobar 阿里 b2b 团队开发和开源的,属于 proxy 层方案。早些年还可以用,但是最近几年都没更新了,基本没啥人用,差不多算是被抛弃的状态吧。而且不支持读写分离、存储过程、跨…

【React】React学习:从初级到高级(四)

React学习[四] 4 应急方案4.1 使用ref引用值4.1.1 给组件添加ref4.1.2 ref和state的不同之处4.1.3 何时使用ref 4.2 使用ref操作DOM4.2.1 获取指向节点的ref4.2.3 使用 ref 回调管理 ref 列表4.2.4 访问另一个组件的DOM节点4.2.5 用 flushSync 同步更新 state 4.3 使用Effect同…

controller接口上带@PreAuthorize的注解如何访问 (postman请求示例)

1. 访问接口 /*** 查询时段列表*/RateLimiter(time 10,count 10)ApiOperation("查询时段列表")PreAuthorize("ss.hasPermi(ls/sy:time:list)")GetMapping("/list")public TableDataInfo list(LsTime lsTime){startPage();List<LsTime> l…

01 PHP基础知识讲解

一 php基础知识 PHP文件的默认拓展名是“php”。 PHP文件中包含HTML标记、PHP标记、PHP代码以及空格和注释。 PHP标记&#xff1a;开始标记<?php 结束标记 ?> 中间内容是PHP代码。 PHP代码&#xff1a;学习第一个指令 echo 功能是用于输出字符串 。 语句结束符&a…

Kotlin+MVVM 构建todo App 应用

作者&#xff1a;易科 项目介绍 使用KotlinMVVM实现的todo app&#xff0c;功能界面参考微软的Todo软件&#xff08;只实现了核心功能&#xff0c;部分功能未实现&#xff09;。 功能模块介绍 项目模块&#xff1a;添加/删除项目&#xff0c;项目负责管理todo任务任务模块&a…

信息化发展29

虚拟现实概述 建立一个能包容图像、声音、化学气味等多种信息源的信息空间&#xff0c; 将其与视觉、听觉、嗅觉、口令、手势等人类的生活空间交叉融&#xff0c; 虚拟现实的技术应运而生。 1 、虚拟现实技术的主要特征包括沉浸性、交互性、多感知性、构想性&#xff08;也称想…

时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化

时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化 目录 时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MVMD多元变分模态分解 可直接替换Excel运行包含频谱相关系数图 Matlab语言 1.算法新颖小众&…

Matlab之数组字符串函数汇总

一、前言 在MATLAB中&#xff0c;数组字符串是指由字符组成的一维数组。字符串可以包含字母、数字、标点符号和空格等字符。MATLAB提供了一些函数和操作符来创建、访问和操作字符串数组。 二、字符串数组具体怎么使用&#xff1f; 1、使用单引号或双引号括起来的字符序列 例…

数据结构 - 双向链表

文章目录 目录 文章目录 前言 一、什么是双向链表? 双向链表有什么优势? 二、双向链表的设计和实现 1.设计思想 尾增 : 在链表的末尾添加新的元素 头插 : 在链表头部插入节点 删除 : 根据val的值删除节点 查找 : 根据索引的值查找并返回节点 总结 前言 大家好,今天给…

Linux TCP和UDP协议

目录 TCP协议TCP协议的面向连接1.三次握手2.四次挥手 TCP协议的可靠性1.TCP状态转移——TIME_WAIT 状态TIME_WAIT 状态存在的意义&#xff1a;&#xff08;1&#xff09;可靠的终止TCP连接。&#xff08;2&#xff09;让迟来的TCP报文有足够的时间被识别并被丢弃。 2.应答确认、…

Google Chrome 浏览器以全屏模式打开

目录 前言以全屏模式打开禁止弹出无法更新的提示窗禁止翻译网页Chrome设置禁止翻译网页可能1可能2可能3 网页添加指令禁止Chrome翻译网页 禁用脚本气泡浏览器解决办法html解决办法方法1&#xff1a;鼠标滑过超链接时&#xff0c;使状态栏不出现超链接方法2&#xff1a;方法3&am…

微服务06-Dockerfile自定义镜像+DockerCompose部署多个镜像

常见的镜像在DockerHub能找到&#xff0c;但是我们自己写项目得自己构造镜像 1 镜像结构 作用&#xff1a;提高复用性&#xff0c;当应用需要更新时&#xff0c;不再是整个系统重装进行更新 &#xff0c;而是对需要更新的部分进行更新&#xff0c;其他地方不动——>这就是分…

如何写出一篇爆款产品文案,从目标受众到市场分析!

一篇爆款产品文案意味着什么?意味着更强的种草能力&#xff0c;更高的销售转化和更强的品牌传播力。今天来分享下如何写出一篇爆款产品文案&#xff0c;从目标受众到市场分析&#xff01; 一、产品文案策略 一篇爆款产品文案&#xff0c;并不是一时兴起造就的。在撰写之前&…

【PowerQuery】Excel和PowerBI的PowerQuery 数据刷新

数据的刷新是在进行数据集成和清洗过程中非常重要的条件,试想你做了100多个不同数据来源的数据集成,如果你再添加了100个文件还需要重新再来数据集成和清洗一遍的话,你的工作量其实一点也没有减轻反而更重了,这个事情变得做起来就没有任何意义。而PowerQuery的最大优势就在…

解决报错之org.aspectj.lang不存在

一、IDEA在使用时&#xff0c;可能会遇到maven依赖包明明存在&#xff0c;但是build或者启动时&#xff0c;报找不存在。 解决办法&#xff1a;第一时间检查Setting->Maven-Runner红圈中的√有没有选上。 二、有时候&#xff0c;明明依赖包存在&#xff0c;但是Maven页签中…

录音新手必备,2款音频录制软件推荐!

“有好用的音频录制软件推荐吗&#xff1f;最近需要录制歌曲去参加一个线上的歌手大赛&#xff0c;只需要上传自己录制的音乐就可以了&#xff0c;但是录音软件的质量太差了&#xff0c;就想问问有没有好用的音频录制软件&#xff0c;谢谢。” 随着数字化时代的到来&#xff0…