news 2026/7/15 14:03:49

LVGL笔记(6)-电子相册使用手势切换图片(windows仿真)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LVGL笔记(6)-电子相册使用手势切换图片(windows仿真)

文章目录

  • 1.LV_EVENT_GESTURE事件的回调函数
  • 2.较为完整的代码
  • 3.工程源码

今天看了一下lvgl的EVENT枚举,有一个事件LV_EVENT_GESTURE是响应手势滑屏的,就把电子相册的按键改为手势操作。
参考文章:
1.作者:weixin_46964996,文章: LVGL 的 LV_EVENT_GESTURE
2.我自己的文章: LVGL笔记(2)-电子相册(windows模拟和ESP32-S3)
先看看效果:

手势滑动相册

1.LV_EVENT_GESTURE事件的回调函数

这个lvgl的事件好像没什么可说的,直接上源码:

staticvoidalbumpage_gesture_cb(lv_event_t*e){lv_event_code_tevent=lv_event_get_code(e);if(event==LV_EVENT_GESTURE){// 等待触屏释放lv_indev_wait_release(lv_indev_get_act());// 获取方向lv_dir_tdir=lv_indev_get_gesture_dir(lv_indev_get_act());switch(dir){caseLV_DIR_LEFT:imganmitoleft();printf("to left\n");break;caseLV_DIR_RIGHT:imganmitoright();printf("to right\n");break;}}}

方向的定义在头文件《lvgl/src/misc/lv_area.h》中:

enum{LV_DIR_NONE=0x00,LV_DIR_LEFT=(1<<0),LV_DIR_RIGHT=(1<<1),LV_DIR_TOP=(1<<2),LV_DIR_BOTTOM=(1<<3),LV_DIR_HOR=LV_DIR_LEFT|LV_DIR_RIGHT,LV_DIR_VER=LV_DIR_TOP|LV_DIR_BOTTOM,LV_DIR_ALL=LV_DIR_HOR|LV_DIR_VER,};typedefuint8_tlv_dir_t;

在相册的界面中设置回调函数:

voidui_albumpage_screen_init(lv_obj_t*parent){......lv_obj_add_event_cb(lv_scr_act(),albumpage_gesture_cb,LV_EVENT_GESTURE,NULL);......}

2.较为完整的代码

voidimganmitoright(){// 如果不是最后一个,指向下一个指针if(g_curImg_p->index<(imgs_total_nums)){g_curImg_p=_lv_ll_get_next(&ll_test,g_curImg_p);sprintf(g_fullPath,"%s/%s",g_curPath,g_curImg_p->name);printf(g_fullPath);lv_img_set_src(ui_Image1,g_fullPath);// 显示图片的总数和索引sprintf(g_fullPath,"%d/%d,exit",g_curImg_p->index,imgs_total_nums);lv_label_set_text(ui_Labbtnswitch,g_fullPath);}}voidimganmitoleft(){// 如果不是第一个,指向上一个指针if(g_curImg_p->index>1){g_curImg_p=_lv_ll_get_prev(&ll_test,g_curImg_p);sprintf(g_fullPath,"%s/%s",g_curPath,g_curImg_p->name);printf(g_fullPath);lv_img_set_src(ui_Image1,g_fullPath);// 显示图片的总数和索引sprintf(g_fullPath,"%d/%d,exit",g_curImg_p->index,imgs_total_nums);lv_label_set_text(ui_Labbtnswitch,g_fullPath);}}staticvoidalbumpage_gesture_cb(lv_event_t*e){lv_event_code_tevent=lv_event_get_code(e);if(event==LV_EVENT_GESTURE){lv_indev_wait_release(lv_indev_get_act());lv_dir_tdir=lv_indev_get_gesture_dir(lv_indev_get_act());switch(dir){caseLV_DIR_LEFT:imganmitoleft();printf("to left\n");break;caseLV_DIR_RIGHT:imganmitoright();printf("to right\n");break;}}}staticvoidui_event_btnswitch(lv_event_t*e){lv_event_code_tevent=lv_event_get_code(e);lv_obj_t*ta=lv_event_get_target(e);if(event==LV_EVENT_CLICKED){externlv_obj_t*file_explorer;// 隐藏图片浏览界面lv_obj_add_flag(ui_albumpage,LV_OBJ_FLAG_HIDDEN);// 显示文件浏览界面lv_obj_clear_flag(file_explorer,LV_OBJ_FLAG_HIDDEN);}}///////////////////// SCREENS ////////////////////voidui_albumpage_screen_init(lv_obj_t*parent){// 0.ui_albumpageui_albumpage=lv_obj_create(parent);lv_obj_clear_flag(ui_albumpage,LV_OBJ_FLAG_SCROLLABLE);lv_obj_set_size(ui_albumpage,LV_HOR_RES,LV_VER_RES);// 设置屏幕大小lv_obj_set_style_bg_color(ui_albumpage,lv_color_hex(0x000000),LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_set_style_bg_opa(ui_albumpage,255,LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_set_style_border_width(ui_albumpage,0,LV_STATE_DEFAULT);lv_obj_center(ui_albumpage);// 1.ui_Image1ui_Image1=lv_img_create(ui_albumpage);lv_obj_set_style_border_width(ui_Image1,0,LV_STATE_DEFAULT);lv_obj_set_width(ui_Image1,800);lv_obj_set_height(ui_Image1,480);lv_obj_set_x(ui_Image1,0);lv_obj_set_y(ui_Image1,0);lv_obj_set_align(ui_Image1,LV_ALIGN_CENTER);lv_obj_add_flag(ui_Image1,LV_OBJ_FLAG_ADV_HITTEST);lv_obj_clear_flag(ui_Image1,LV_OBJ_FLAG_SCROLLABLE);lv_obj_add_event_cb(lv_scr_act(),albumpage_gesture_cb,LV_EVENT_GESTURE,NULL);// 2.ui_btnswitchui_btnswitch=lv_btn_create(ui_albumpage);lv_obj_set_width(ui_btnswitch,80);lv_obj_set_height(ui_btnswitch,40);lv_obj_align(ui_btnswitch,LV_ALIGN_BOTTOM_MID,0,0);lv_obj_add_flag(ui_btnswitch,LV_OBJ_FLAG_SCROLL_ON_FOCUS);lv_obj_clear_flag(ui_btnswitch,LV_OBJ_FLAG_SCROLLABLE);lv_obj_add_event_cb(ui_btnswitch,ui_event_btnswitch,LV_EVENT_ALL,NULL);lv_obj_set_style_radius(ui_btnswitch,40,LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_set_style_bg_color(ui_btnswitch,lv_color_hex(0xFFFFFF),LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_set_style_bg_opa(ui_btnswitch,0,LV_PART_MAIN|LV_STATE_DEFAULT);lv_obj_set_style_radius(ui_btnswitch,40,LV_PART_MAIN|LV_STATE_PRESSED);lv_obj_set_style_bg_color(ui_btnswitch,lv_color_hex(0xFFFFFF),LV_PART_MAIN|LV_STATE_PRESSED);lv_obj_set_style_bg_opa(ui_btnswitch,50,LV_PART_MAIN|LV_STATE_PRESSED);lv_obj_set_style_shadow_width(ui_btnswitch,0,LV_PART_MAIN|LV_STATE_DEFAULT);// 3.ui_Labbtnswitchui_Labbtnswitch=lv_label_create(ui_btnswitch);lv_obj_set_width(ui_Labbtnswitch,LV_SIZE_CONTENT);lv_obj_set_height(ui_Labbtnswitch,LV_SIZE_CONTENT);lv_obj_set_x(ui_Labbtnswitch,0);lv_obj_set_y(ui_Labbtnswitch,0);lv_obj_set_align(ui_Labbtnswitch,LV_ALIGN_CENTER);lv_label_set_text(ui_Labbtnswitch,"exit");}

3.工程源码

【测试代码完整工程】是在韦东山老师的开源工程上改动的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 14:03:32

签约“百城千园行”,格创东智加速打造绿色低碳智慧园区

在国家数字化转型大背景下&#xff0c;园区正在成为“数字经济”、“双碳”等相关指导政策的重要落脚点&#xff0c;随着工业互联网的快速发展&#xff0c;工业互联网园区也在加速崛起。工业园区、高新技术产业开发区、工业化产业示范基地及各种产业集聚区正在加速引入工业互联…

作者头像 李华
网站建设 2026/7/15 14:01:16

Windows 11界面改造利器:ExplorerPatcher让经典操作体验回归

Windows 11界面改造利器&#xff1a;ExplorerPatcher让经典操作体验回归 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 你是否曾在升级到Wind…

作者头像 李华
网站建设 2026/7/15 13:59:31

如何永久保存微信聊天记录:从数字碎片到个人记忆库的完整指南

如何永久保存微信聊天记录&#xff1a;从数字碎片到个人记忆库的完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/w…

作者头像 李华
网站建设 2026/7/15 13:58:29

BP神经网络预测matlab代码讲解与实现步骤

文章目录1. BP神经网络的简介和结构参数1.1 BP神经网络的结构组成1.2 BP神经网络训练界面的参数解读2. 实现BP网络预测的步骤3. matlab代码编写4. BP代码运行结果4.1 预测值和真实值的误差计算&#xff08;MAE、MSE、MRSE&#xff09;4.2 BP网络训练的性能分析图像5. 结语6. BP…

作者头像 李华
网站建设 2026/7/15 13:58:15

炉石传说脚本:7倍效率提升的智能游戏助手终极指南

炉石传说脚本&#xff1a;7倍效率提升的智能游戏助手终极指南 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 你是否厌倦了每天重复的炉石传说日常任务…

作者头像 李华
网站建设 2026/7/15 13:56:37

终极解决方案:3分钟搞定Windows防休眠烦恼

终极解决方案&#xff1a;3分钟搞定Windows防休眠烦恼 【免费下载链接】NoSleep Lightweight Windows utility to prevent screen locking 项目地址: https://gitcode.com/gh_mirrors/nos/NoSleep 你是否曾因Windows自动休眠而中断重要工作&#xff1f;NoSleep是一款轻量…

作者头像 李华