LVGL 亮度调节实例

LVGL 亮度调节实例 概述 平台炬芯,使用LVGL渲染UI界面,实现人机交互。本实例基于模拟器运行,可供参考。比较传统写法,还有优化的空间。1、Visual Studio 26版本2、代码/* * Copyright (c) 2020 Actions Technology Co., Ltd * * SPDX-License-Identifier: Apache-2.0 */ /** * @file brightness_set_view.c */ #include os_common_api.h #include app_ui.h #include view_stack.h /* picture idx */ enum { IDX_PIC_BS_BRIGHTNESS_DOWN_BTN = 0, IDX_PIC_BS_BRIGHTNESS_UP_BTN, IDX_PIC_BS_COUNT, }; /* picture */ const static uint32_t _pic_ids[] = { PIC_BS_BRIGHTNESS_DOWN_BTN, PIC_BS_BRIGHTNESS_UP_BTN, }; /* group picture idx */ enum { IDX_PIC_BS_BRIGHTNESS_SLIDER_BG = 0, IDX_PIC_BS_BRIGHTNESS_SLIDER_ICON, IDX_PIC_BS_GROUP_COUNT, }; /* group picture */ const static uint32_t _pic_group_ids[] = { PIC_BS_BRIGHTNESS_SLIDER_BG, PIC_BS_BRIGHTNESS_SLIDER_ICON, }; typedef struct brightness_set_view_data { lv_obj_t *scr; lv_obj_t *main_obj; /* lvgl resource */ lvgl_res_scene_t res_scene; //场景 lvgl_res_group_t res_group; //资源组 lv_img_dsc_t img_dsc[IDX_PIC_BS_COUNT]; lv_img_dsc_t img_group_dsc[IDX_PIC_BS_GROUP_COUNT]; lv_font_t font; /* user data */ lv_obj_t *bright_down_btn; lv_obj_t *bright_up_btn; lv_obj_t *bright_slider; // 滑动条主体 lv_obj_t *bright_speaker_icon; // 保存亮度图标引用 int current_brightness; // 新增:保存当前亮度值,用于联动 } brightness_set_view_data_t; /* 滑动条值变化回调:同步当前亮度值(可选:可在此添加系统亮度设置逻辑) */ static void bright_slider_change_cb(lv_event_t *e) { brightness_set_view_data_t *data = lv_event_get_user_data(e); if (!data || !data-bright_slider) return; // 获取滑动条当前值,更新到data中 data-current_brightness = lv_slider_get_value(data-bright_slider); SYS_LOG_INF("current_brightness: %d", data-current_brightness); // 【可选】如果需要同步到系统亮度,添加这里: // set_brightness(data-current_brightness); } /* 亮度- 按键回调:控制滑动条值减少 */ static void bright_down_btn_cb(lv_event_t *e) { brightness_set_view_data_t *data = lv_event_get_user_data(e); if (!data || !data-bright_slider) return; // 从滑动条获取当前值,减少5(步长可调整) int bright = lv_slider_get_value(data-bright_slider); if (bright 0) { data-current_brightness = (bright - 5) 0 ? 0 : (bright - 5); // 同步到data-current_brightness lv_slider_set_value(data-bright_slider, data-