0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式GUI“美容”小技巧:让小身板的MCU,也可以有个俊模样的界面设计!

NXP客栈 来源:未知 2023-05-19 10:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在本文中,小编用“小身板”和“俊模样”来指代一个带有图形用户界面的系统的两个方面。“小身板”是指相对有限的MCU资源,例如:相对较低的主频、相对较少的存储资源、没有专门的LCD显示控制器、较低的显示接口速度等等;而“俊模样”是指对用户友好,漂亮且富于吸引力的图形界面,就如同男生的帅、女生的美。

男生的帅和女生的美,除了与天生的基因有关,外在的修饰也同样必不可少。俗话说,人靠衣裳马靠鞍,衣裳和鞍都是外部的修饰,都是实现美好事物所需要的资源。

由此及彼,一个“俊模样”的GUI设计,同样对资源有比较高的要求。这些资源包括主频、Flash和RAM以及美工设计等等。那么,是不是“小身板”就不能有“俊模样”呢?

不是的!如同一个优秀的化妆师可以用卓越的手段实现美,嵌入式工程师也可以通过各种手段进行资源优化,力争让“小身板”的MCU也能实现“俊模样”的界面设计。

对GUI设计进行资源优化的路很漫长,涉及的方面很多,需要我们不断发现,不断思考。小编在这里通过一些示例和大家分享如何使用Slider对某一类动画进行存储资源优化。

我们在生活中经常会见到这样一类应用,如下图所示:

347420da-f5ef-11ed-90ce-dac502259ad0.png

通过观察我们发现,尽管上面的图形元素,外观各异、形状各异,但是都可以被抽象为两个部分:静态部分和动态部分。比如,咖啡液位,由静态的杯子和动态的咖啡组成;温度计由静态的玻璃容器和动态的水银组成。

我们再看看GUI设计中经常使用到的控件——Slider,其典型结构如下图所示。这是一个典型的Slider控件,由静态的背景 (main) 和动态的指示器 (Indicator) 以及调节点 (Knob) 组成。

348125c8-f5ef-11ed-90ce-dac502259ad0.png

LVGL中,设置样式的函数名都是以lv_obj开始,例如:

  • lv_obj_set_style_bg_color

  • lv_obj_set_style_bg_opa

  • lv_obj_set_style_bg_img_src

可见,样式是针对所有控件的父对象而言的。换句话说,我们既可以通过lv_obj_set_style_bg_img_src为Slider控件的背景、指示器和调节点设置图片样式,也可以通过lv_obj_set_style_bg_opa将Slider控件的背景、指示器和调节点的透明度设置为0从而达到隐藏Slider控件相应组成部分的目的。

接下来,我们看看如何使用Slider实现咖啡液位变化的动画效果。

首先,通过美工设计,将咖啡液位的图分解为两部分,杯子和咖啡,并将它们分别作为Slider的背景部分和指示器部分,同时隐藏Slider的调节点部分,如下面的简图所示。

3487f998-f5ef-11ed-90ce-dac502259ad0.png

咖啡液位的分解及与Slider的对应关系

完成上面的工作之后,后面的工作就是为Slider创建动画,并在动画的回调函数中周期性地调用lv_slider_set_value函数以改变Slider指示器的值,从而实现咖啡液位变化的效果。

看到这里,大家会问了,你讲这么多,和存储资源优化有什么关系吗?大家请想想看,通常我们如何实现这样的动画效果?大致如下图所示,将咖啡液位变化的动画分解为若干不同液位的静态图片,然后,每隔一个时间间隔播放一张图片。时间间隔越短,图片数量越多,动画的效果越流畅。但是,图片数量越多,需要的存储资源越多。

但是,使用上面的方法,实现相同的动画效果,只需要两张图片即可,节约存储资源。

3492c9cc-f5ef-11ed-90ce-dac502259ad0.png

那么,最后总结一下,有两点与大家分享:

01

前面的三个显示应用,可以抽象出共同的特性。那就是,它们都可以清晰地剥离出静态部分和动态部分。动态部分都具有有限的变化范围,也就是具有一个起始值和结束值。比如,咖啡液位总是在最低液位和最高液位之间变化;又比如,温度计显示的温度值也总是在最低温度和最高温度之间变化。那么,对于这类应用,就可以用Slider实现。

每一种显示动画的方法,都有适用范围,没有好坏之分。我们只有为自己的显示应用选择合适的方案,才能最大限度地优化存储资源。

02

一点GUI动画显示的心得体会,与大家分享,欢迎各位大神指导。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NXP
    NXP
    +关注

    关注

    61

    文章

    1411

    浏览量

    199412

原文标题:嵌入式GUI“美容”小技巧:让小身板的MCU,也可以有个俊模样的界面设计!

文章出处:【微信号:NXP客栈,微信公众号:NXP客栈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FT801嵌入式视频引擎:打造高品质人机界面的理想之选

    视频引擎,为开发者提供了一强大而便捷的解决方案,能够轻松实现高品质的人机界面。今天,我们就来深入了解一下FT801的特点、功能以及应用场景。 文件下载: FT801Q-R.pdf 一、FT801概述 FT801是一款易于使用的图形控制器,专为
    的头像 发表于 04-28 09:20 244次阅读

    Trae AI+AirUI:快速实现一嵌入式UI界面

    传统嵌入式UI开发流程繁琐,需兼顾硬件适配与交互逻辑;AI在网页、App界面生成方面已较为成熟,但在嵌入式硬件场景中的实用性,仍需实际测试验证。 AirUI框架封装了常用组件、事件管理等功能,提供
    的头像 发表于 04-16 13:10 240次阅读
    Trae AI+AirUI:快速实现一<b class='flag-5'>个</b><b class='flag-5'>嵌入式</b>UI<b class='flag-5'>界面</b>

    EsDA科普 | AWTK:打造流畅、开源、跨平台的嵌入式GUI

    联网领域,GUI引擎是连接用户与设备的关键桥梁。但实际开发中,这些问题是否你头疼:渲染效果差:界面卡顿、动画生硬,用户体验打折;资源占用高:嵌入式设备性能有限,
    的头像 发表于 04-09 11:35 353次阅读
    EsDA科普 | AWTK:打造流畅、开源、跨平台的<b class='flag-5'>嵌入式</b><b class='flag-5'>GUI</b>

    GUI xTurbo可以只用片内单缓冲驱动RGB LCD

    在当今MCU嵌入式系统中,需要高端GUI显示的场景越来越多。当产品中使用较高分辨率的RGB LCD时,传统的Ping-pong buffer方案使得对RAM空间的要求非常高。
    的头像 发表于 02-09 09:35 836次阅读
    <b class='flag-5'>GUI</b> xTurbo<b class='flag-5'>让</b>你<b class='flag-5'>可以</b>只用片内单缓冲驱动RGB LCD

    恩智浦嵌入式HMI应用开发工具GUI Guider 1.10.1全新上线

    恩智浦嵌入式HMI应用开发工具GUI Guider 1.10.1全新上线啦!新版本重点聚焦性能提升、工具链升级、多点触控体验以及开发板适配,进一步优化IDE界面,增强功能稳定性,并完善文档体系。
    的头像 发表于 12-28 09:45 2023次阅读

    嵌入式应掌握的几种能力

    、能力。 我觉得牢牢地掌握这些99.99999%的概率都会用得上的嵌入式软件基础对找工作才比较有利。其它一些技术可以再用的时候再去了解、学习。 特别是一些行业相关知识,可以入行之后再进行学习。如果你一开始的目标就很明确,要在
    发表于 12-08 06:05

    ARM嵌入式这样学

    的内核就是ARM内核,它的主频高很多,普通的都有几百M。CPU缓存大,分很多级的流水处理线,这样大大提高了CPU利用率。这种IC的资源足以嵌入式操作系统正常跑起来,WINCE,
    发表于 12-04 07:48

    瑞萨电子携手LVGL PRO推进嵌入式图形用户界面开发

    随着嵌入式设备对用户体验要求的不断提升,图形用户界面GUI)成为产品开发越来越重要的一环。作为目前最流行的开源嵌入式图形库之一的LVGL,最近就推出了自己的商业化专业UI编辑器LVG
    的头像 发表于 11-21 10:23 1888次阅读
    瑞萨电子携手LVGL PRO推进<b class='flag-5'>嵌入式</b>图形用户<b class='flag-5'>界面</b>开发

    40嵌入式常见名词一次讲清!

    嵌入式学习和开发的路上,你是否遇到过这些情况:UART和串口分不清,MCU和MPU傻傻搞混,SPI、I2C、I2S看着都像,驱动、固件、Bootloader、BSP听得头大……别急,这不是你
    的头像 发表于 11-14 10:28 1374次阅读
    40<b class='flag-5'>个</b><b class='flag-5'>嵌入式</b>常见名词一次讲清!

    如何使用 SEGGER emWin AppWizard 工具为仪表板界面设计图形用户界面

    如何使用 SEGGER emWin AppWizard 工具为仪表板界面设计图形用户界面GUI)。它集成了控制 MA35H0 系列评估板上的 LED 和按钮的功能。
    发表于 08-19 07:23

    嵌入式工程师为什么要学QT?

    、车载系统和消费电子等领域尤为突出。其跨平台特性、丰富的库和工具、高性能以及强大的GUI支持,Qt成为嵌入式开发最理想的选择。 嵌入式工程师学习Qt
    发表于 08-14 15:15

    嵌入式什么劝退之处?

    要说嵌入式开发的劝退点,那可真得掏心窝子聊聊。这行当入门就带着股子 “磨人” 劲儿,不像搞互联网写个小程序,几行代码跑起来就能瞅见点模样嵌入式得从最底层的东西啃起,什么二进制指令、芯片引脚怎么接
    的头像 发表于 08-13 11:34 1235次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>有</b>什么劝退之处?

    怎么结合嵌入式,Linux,和FPGA三方向达到一均衡发展?

    嵌入式领域,不少人都怀揣着嵌入式、Linux 和 FPGA 三方向实现均衡发展的梦想,然而实践中却面临诸多挑战。就像备受瞩目的全栈工程师稚晖君,他从大学玩单片机起步,凭借将智能算
    的头像 发表于 06-25 10:08 1037次阅读
    怎么结合<b class='flag-5'>嵌入式</b>,Linux,和FPGA三<b class='flag-5'>个</b>方向达到一<b class='flag-5'>个</b>均衡发展?

    Linux嵌入式和单片机嵌入式的区别?

    Processor Unit)。 2. 单片机嵌入式称为嵌入式微控制器MCU): 定义:一种集成电路,能够在一芯片上完成各种计算
    发表于 06-20 09:46

    10分钟上手睿擎平台GUI开发:第一LVGL图形应用

    LVGL开源图形库为嵌入式系统提供了高效的GUI设计解决方案,为开发者提供了直观且易于使用的界面设计环境。LVGL不仅资源占用低,更拥有全面的功能和丰富的文档资料,使得GUI设计变得简
    的头像 发表于 06-06 18:41 3044次阅读
    10分钟上手睿擎平台<b class='flag-5'>GUI</b>开发:第一<b class='flag-5'>个</b>LVGL图形应用