基于AliOS Things 使用 littleVGL 设计的手表
导言:最近智能手表非常的火,小编想着如果自己能设计一款电子手表也是非常时尚的,所以就尝试着自己动手实现一下。
硬件:developer-kit开发板;
软件:alios things 2.0以上
编译环境:ubuntu 16.04
一、编译环境的安装:
请参考阿里官方教程:https://github.com/alibaba/AliOS-Things/wiki/Quick-Start
二、设计的手表代码可以参考littlevgl官方文档中的lmeter和gauge两大控件。
lmeter:线表控件
#include "lvgl/lvgl.h" void lv_ex_lmeter_1(void) { /*Create a style for the line meter*/ static lv_style_t style_lmeter; lv_style_copy(&style_lmeter, &lv_style_pretty_color); style_lmeter.line.width = 2; style_lmeter.line.color = LV_COLOR_SILVER; style_lmeter.body.main_color = lv_color_hex(0x91bfed); /*Light blue*/ style_lmeter.body.grad_color = lv_color_hex(0x04386c); /*Dark blue*/ style_lmeter.body.padding.left = 16; /*Line length*/ /*Create a line meter */ lv_obj_t * lmeter; lmeter = lv_lmeter_create(lv_scr_act(), NULL); lv_lmeter_set_range(lmeter, 0, 100); /*Set the range*/ lv_lmeter_set_value(lmeter, 80); /*Set the current value*/ lv_lmeter_set_scale(lmeter, 240, 31); /*Set the angle and number of lines*/ lv_lmeter_set_style(lmeter, LV_LMETER_STYLE_MAIN, &style_lmeter); /*Apply the new style*/ lv_obj_set_size(lmeter, 150, 150); lv_obj_align(lmeter, NULL, LV_ALIGN_CENTER, 0, 0);
首先获取默认的风格,然后设置线条的宽度,设置线条的颜色有三种,浅蓝,深蓝和银色,在下部分代码有对其进一步设置,范围是0-100,被分成31份,角度是240度,颜色应该是由浅蓝到深蓝渐变的,但是因为有80这个设置,所以从80-100就变成银色了。整个线表的大小是150的正方体包裹的源,在显示器的中间显示。
gauge:仪表控件
#include "lvgl/lvgl.h" void lv_ex_gauge_1(void) { /*Create a style*/ static lv_style_t style; lv_style_copy(&style, &lv_style_pretty_color); style.body.main_color = lv_color_hex3(0x666); /*Line color at the beginning*/ style.body.grad_color = lv_color_hex3(0x666); /*Line color at the end*/ style.body.padding.left = 10; /*Scale line length*/ style.body.padding.inner = 8 ; /*Scale label padding*/ style.body.border.color = lv_color_hex3(0x333); /*Needle middle circle color*/ style.line.width = 3; style.text.color = lv_color_hex3(0x333); style.line.color = LV_COLOR_RED; /*Line color after the critical value*/ /*Describe the color for the needles*/ static lv_color_t needle_colors[3]; needle_colors[0] = LV_COLOR_BLUE; needle_colors[1] = LV_COLOR_ORANGE; needle_colors[2] = LV_COLOR_PURPLE; /*Create a gauge*/ lv_obj_t * gauge1 = lv_gauge_create(lv_scr_act(), NULL); lv_gauge_set_style(gauge1, LV_GAUGE_STYLE_MAIN, &style); lv_gauge_set_needle_count(gauge1, 3, needle_colors); lv_obj_set_size(gauge1, 150, 150); lv_obj_align(gauge1, NULL, LV_ALIGN_CENTER, 0, 20); /*Set the values*/ lv_gauge_set_value(gauge1, 0, 10); lv_gauge_set_value(gauge1, 1, 20); lv_gauge_set_value(gauge1, 2, 30); }
首先我们通过lv_style_copy()来获取系统的样式,然后修改需要改变的属性达到我们所想的样子。设置主体颜色,设置线条的长度,文字距线条的距离,中心圆心的颜色。设置字体颜色。
通过数组static lv_color_t needle_colors[3]设置指针的数量和颜色,最后创建一个新的仪表,将之前的设置样式都通过lv_gauge_set_style()函数进行修改。最后设置指针的值。
三、成果
通过以上两个示例:我做出了手表的样式
视频和源码可以关注微信公众号查看【物联网人家】https://mp.weixin.qq.com/s/gIDnozLKyTrzevm7YJ6IOA
设置12个label,360度的圆盘里60等份。并设置了三个指针,从短到长分别是时针、分针和秒针。颜色分别是蓝色,黄色和紫色。表盘居中在屏幕的中间。
虽然样子还比较粗糙,但是基本功能已经实现,后续还需要更加精细的修改。喜欢的小伙伴麻烦点个关注,谢谢。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
02月25日云栖号头条:阿里巴巴达摩院智能疫情机器人已免费服务全国27省份
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯: 自1月27日上线至今,阿里巴巴达摩院的智能疫情机器人已经落地全国27个省、直辖市、自治区,累计为40座城市拨打1100万通防控摸排电话;24日下午,十三届全国人大常委会第十六次会议举行闭幕会。会议表决通过全国人大常委会关于全面禁止非法野生动物交易、革除滥食野生动物陋习、切实保障人民群众生命健康安全的决定和关于推迟召开第十三届全国人民代表大会第三次会议的决定。 一起来看最新的资讯: 阿里巴巴达摩院:智能疫情机器人已免费服务全国27省份 自1月27日上线至今,阿里巴巴达摩院的智能疫情机器人已经落地全国27个省、直辖市、自治区,累计为40座城市拨打1100万通防控摸排电话。达摩院于1月27日推出智能疫情机器人,率先落地浙江、黑龙江和山东济南三地。智能疫情机器人具有电话外呼和在线问诊两大功能,截至2月24日10点,智能疫情机器人累计完成1100多万通外呼电话和100多万人次的在线咨询。 IDC:“互联网+”医疗模式将迎来...
- 下一篇
Spring Boot(十一):Spring Boot如何测试打包部署
一、开发阶段 (一)单元测试 在开发阶段的时候最重要的是单元测试,Spring Boot对单元测试的支持已经很完善了。 1、在pom.xml文件中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 2、开发测试类 以最简单的helloworld为例,在测试类的类头部需要添加:@RunWith(SpringRunner.class)和@SpringBootTest注解,在测试方法的顶端添加@Test即可,最后在方法上点击右键run就可以运行了。 @RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Test public void hello...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度