当前位置: 首页 > news >正文

[LVGL] 自定义控件例子

/*** @file lv_demo_test.c**/#include "stdio.h"
#include "stdlib.h"
#include "lvgl.h"typedef struct
{ // 自定义控件的属性和参数lv_obj_t *label;char *str;
} my_btn_param_t;lv_obj_t *my_btn1;
lv_obj_t *my_btn2;
lv_obj_t *my_btn3;lv_obj_t *my_btn_create(lv_obj_t *parent, const char *txt)
{lv_obj_t *btn = lv_btn_create(parent);lv_obj_set_size(btn, 200, 50);my_btn_param_t *param = (my_btn_param_t *)malloc(sizeof(my_btn_param_t));printf("user param addr:%p.|btn addr:%p.\n", param, btn);param->label = lv_label_create(btn);param->str = txt;lv_label_set_text(param->label, txt);lv_obj_align(param->label, LV_ALIGN_CENTER, 0, 0);lv_obj_set_user_data(btn, param);return btn;
}void my_btn_delete(lv_obj_t *my_btn)
{lv_obj_del(my_btn);   my_btn_param_t *param = (my_btn_param_t *)lv_obj_get_user_data(my_btn);if (param)free(param);}void my_btn_set_text_color(lv_obj_t *my_btn, uint32_t color)
{my_btn_param_t *param = (my_btn_param_t *)lv_obj_get_user_data(my_btn);lv_obj_set_style_text_color(param->label, lv_color_hex(color), 0);
}void my_btn_set_text(lv_obj_t *my_btn, char *str)
{my_btn_param_t *param = (my_btn_param_t *)lv_obj_get_user_data(my_btn);param->str = str;lv_label_set_text(param->label, str);
}char *my_btn_get_text(lv_obj_t *my_btn)
{my_btn_param_t *param = (my_btn_param_t *)lv_obj_get_user_data(my_btn);return param->str;
}void my_timer_cb(lv_timer_t *timer)
{printf("timer cb.\n");lv_timer_del(timer);my_btn_delete(my_btn1);my_btn_delete(my_btn2);my_btn_delete(my_btn3);
}void lv_demo_test(void)
{lv_obj_t *obj_scr = lv_scr_act();lv_obj_set_style_bg_color(obj_scr, lv_palette_main(LV_PALETTE_GREEN), 0);my_btn1 = my_btn_create(obj_scr, "btn1");my_btn2 = my_btn_create(obj_scr, "btn2");my_btn3 = my_btn_create(obj_scr, "BTN3");lv_obj_align(my_btn1, LV_ALIGN_CENTER, 0, -80);lv_obj_align(my_btn2, LV_ALIGN_CENTER, 0, 20);my_btn_set_text_color(my_btn1, 0xffff00);my_btn_set_text_color(my_btn3, 0xff0000);my_btn_set_text(my_btn1, "testing");my_btn_set_text(my_btn2, "examing");printf("SHOW1=%s.\n", my_btn_get_text(my_btn1));printf("SHOW2=%s.\n", my_btn_get_text(my_btn2));printf("SHOW3=%s.\n", my_btn_get_text(my_btn3));//1秒后删除3个按钮对象lv_timer_create((lv_timer_cb_t)my_timer_cb, 1000, my_btn3);}


http://www.mrgr.cn/news/59827.html

相关文章:

  • FFmpeg 深度教程音视频处理的终极工具
  • 跨境支付,哪些国产数据库能接得住?
  • codimd更改登录超时时限
  • 快速搭建SpringBoot3+Prometheus+Grafana
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day6
  • 【力扣 + 牛客 | SQL题 | 每日4题】牛客大厂笔试真题SQLW6, W7, W8
  • Meta分析(荟萃分析)
  • 数据挖掘(二)
  • nodejs 基础
  • 探索区块链新天地:如何通过 Let‘s Move 学习 Move 语言并获取 SUI 奖励
  • Axure随机验证码高级交互
  • 机器学习/数据分析案例---学生消费行为分析,“泰迪杯赛题”
  • 模拟退火算法
  • 数据结构与算法汇总整理篇——数组与字符串双指针与滑动窗口的联系学习及框架思考
  • 【文献及模型、制图分享】中国自然保护地典型治理模式成效比较——基于社区居民感知视角
  • IDEA如何快速复制日志生成sql语句,太妙啦
  • 逻辑推理学习笔记
  • 【Android】ViewPager的MVP架构搭建
  • 嵌入式——STM32外设应用
  • stm32的boot引脚接线
  • 《CUDA编程》10.线程束的基本函数与协作组
  • C++和Java该如何进行选择?
  • C++中获取硬盘ID的方法
  • 鸿蒙文本组件高级特性——富文本属性字符串
  • Python记录-字典
  • 设计模式(二)