LVGL_基础控件滚轮roller

2023-10-06 22:15
文章标签 基础 控件 滚轮 lvgl roller

本文主要是介绍LVGL_基础控件滚轮roller,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LVGL_基础控件滚轮roller

1、创建滚轮roller控件

在这里插入图片描述

/* 创建一个 lv_roller 部件(对象) */
lv_obj_t * roller = lv_roller_create(lv_scr_act());    // 创建一个 lv_roller 部件(对象),他的父对象是活动屏幕对象// 将部件(对象)添加到组,如果设置了默认组,这里可以省略,因为 lv_roller 是 LV_OBJ_CLASS_GROUP_DEF_TRUE
//lv_group_add_obj(g, roller);//lv_roller_set_options(roller, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10", LV_ROLLER_MODE_NORMAL);   // 写法1:设置选项,索引从0开始
//lv_roller_set_options(roller, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10", LV_ROLLER_MODE_INFINITE); // 设置为可以无限滚动的模式
lv_roller_set_options(roller,"1\n""2\n""3\n""4\n""5\n""6\n""7\n""8\n""9\n""10",LV_ROLLER_MODE_NORMAL); // 写法2:设置选项(连续写两个双引号相当于将两者连起来,相当于上面的方法1)
2、创建为无限滚动的模式

在这里插入图片描述

lv_roller_set_options(roller, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10", LV_ROLLER_MODE_INFINITE); // 设置为可以无限滚动的模式
3、设置默认选中项(注意:选中项是从0开始的)
// 设置默认选中的选项
lv_roller_set_selected(roller, 3, LV_ANIM_ON);
4、设置显示的行数(5行)

在这里插入图片描述

// 设置可见的选项个数(行数)
// 如果滚轮的字体、行距、边框宽度等发生变化,则需要再次调用此函数以重新进行调整。
lv_roller_set_visible_row_count(roller, 5);
5、设置显示的高度

在这里插入图片描述

// 可见行也可以通过调整高度设置,但是一般不会这么做
// 正常是使用 lv_roller_set_visible_row_count 设置
lv_obj_set_height(roller, 200);
6、设置滚轮的字体
// 修改滚轮所使用的字体(英文)
lv_obj_set_style_text_font(roller, &lv_font_montserrat_22, LV_PART_MAIN);                 // 设置没有选中的选项的字体
lv_obj_set_style_text_font(roller, &lv_font_montserrat_22, LV_PART_SELECTED);             // 设置选中的选项的字体
7、设置滚轮显示汉字
// 修改滚轮所使用的字体(中文)
LV_FONT_DECLARE(lv_font_source_han_sans_bold_14);   // 声明字体,可以放到函数外部
lv_obj_set_style_text_font(roller, &lv_font_source_han_sans_bold_14, LV_PART_MAIN);                 // 设置没有选中的选项的字体
lv_obj_set_style_text_font(roller, &lv_font_source_han_sans_bold_14, LV_PART_SELECTED);             // 设置选中的选项的字体
lv_roller_set_options(roller, "一\n二\n三\n四\n五\n六\n七\n八\n九\n十", LV_ROLLER_MODE_NORMAL);     // 设置中文选项
8、改变选项中文字的位置
    // 改变选项中文字位置
//lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_LEFT, 0);   // 左对齐
lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_RIGHT, 0);  // 右对齐
//lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_CENTER, 0); // 居中对齐
//lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_AUTO, 0);   // 自动对齐
9、添加事件

在这里插入图片描述

// 添加事件
// 当我们滑动了滚轮中的选项列表时,会触发 LV_EVENT_VALUE_CHANGED 事件类型,这里接收所有的事件类型,在回调处理函数中再过滤处理
lv_obj_add_event_cb(roller, roller_event_handler, LV_EVENT_ALL, NULL);// 通过其他部件选择选项
lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_align_to(btn, roller, LV_ALIGN_OUT_TOP_MID, 0, -10);
lv_obj_add_event_cb(btn, btn_event_handler, LV_EVENT_CLICKED , roller);// 通过其他部件选择
static void btn_event_handler(lv_event_t * e)
{lv_event_code_t code = lv_event_get_code(e);lv_obj_t *btn = lv_event_get_target(e);lv_obj_t *roller  = lv_event_get_user_data(e);if(code == LV_EVENT_CLICKED) {uint32_t sel_opt = lv_roller_get_selected(roller);          // 获取当前选项的索引(位置)uint32_t total_opt = lv_roller_get_option_cnt(roller) - 1;  // 获取当前选项的总数,因为索引从 0 开始算,所以减一用于判断最后的选项if (sel_opt == total_opt)   sel_opt = 0;else                        sel_opt += 1;lv_roller_set_selected(roller, sel_opt, LV_ANIM_ON);lv_event_send(roller, LV_EVENT_VALUE_CHANGED, 0);           // 向 roller 发送 LV_EVENT_VALUE_CHANGED 事件}
}// 滚轮的事件回调处理函数
static void roller_event_handler(lv_event_t * e)
{lv_event_code_t code = lv_event_get_code(e);lv_obj_t *roller = lv_event_get_target(e);if (code == LV_EVENT_VALUE_CHANGED){LV_LOG_USER("%d", lv_roller_get_selected(roller));             // 获取被选中的选项的索引值,从0开始char tmp_buf[8];lv_roller_get_selected_str(roller, tmp_buf, sizeof(tmp_buf));  // 获取被选中的选项的内容LV_LOG_USER("%s", tmp_buf);}
}
10、设置背景颜色

在这里插入图片描述

lv_obj_set_style_bg_color(roller,lv_color_hex(0xd35230),0);
11、设置选中项的背景颜色

在这里插入图片描述

lv_obj_set_style_bg_color(roller,lv_color_hex(0xF0F0F0),LV_PART_SELECTED);
12、设置选项之间的间隔

在这里插入图片描述

lv_obj_set_style_text_line_space(roller,50,0);

这篇关于LVGL_基础控件滚轮roller的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/154219

相关文章

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键