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

哥哥做姐姐干网站深圳网络优化推广公司

哥哥做姐姐干网站,深圳网络优化推广公司,什么网站建设策划方案 论文,淘客网站让别人做1 按键btn介绍 在 LVGL(Light and Versatile Graphics Library) 中,btn(按钮)是一种常用的基础控件,用于实现用户点击交互。它通常作为触发某些操作(如切换界面、提交表单、开启功能等&#xf…

1 按键btn介绍

在 LVGL(Light and Versatile Graphics Library) 中,btn(按钮)是一种常用的基础控件,用于实现用户点击交互。它通常作为触发某些操作(如切换界面、提交表单、开启功能等)的界面元素。

1.1 特点

  1. 可点击:最基本的功能是响应点击事件。

  2. 可嵌套内容:你可以在按钮中放置 label、image、icon 等对象。

  3. 支持状态变化:如按下、高亮、禁用、被选中等。

  4. 可样式化:背景颜色、边框、透明度、圆角、阴影等均可自定义。

  5. 支持“开关”模式:可通过 LV_OBJ_FLAG_CHECKABLE 实现切换状态(选中/未选中)。

1.2 创建步骤

创建按钮一般分三步:

  1. 创建对象:用 lv_btn_create() 创建按钮对象。

  2. 放入内容:如 lv_label_create() 放入文字。

  3. 注册事件:使用 lv_obj_add_event_cb() 添加点击事件响应。

1.3 风格设定

  1. 背景颜色(bg_color)

  2. 透明度(bg_opa)

  3. 边框(border_color, border_width)

  4. 圆角(radius)

  5. 阴影(shadow_width, shadow_color)

2 常见函数介绍

2.1 基本函数

  1. 创建
lv_obj_t *btn = lv_btn_create(lv_scr_act()); // 创建一个按钮
  1. 设定大小 lv_obj_set_size()
l`v_obj_set_size(btn, 100, 50); // 设置按钮大小为 100x50`
  1. 对齐 lv_obj_align()
lv_obj_align(btn, LV_ALIGN_CENTER, 0, 0); // 将按钮居中
  1. 为按钮(或其他对象)添加事件回调函数。 lv_obj_add_event_cb()
lv_obj_add_event_cb(btn, my_btn_event_handler, LV_EVENT_CLICKED, NULL);

2.2 风格

按钮的风格(style)是用来定义按钮外观的方式。你可以通过风格设置来控制按钮的背景、边框、圆角、字体等各个视觉元素。按钮风格的操作在 LVGL 中是非常重要的,因为它允许你自定义控件的外观和交互反馈。

  1. 风格对象(lv_style_t)
    所有控件的风格都使用 lv_style_t 对象来定义,它包含了控件的所有视觉属性,例如背景颜色、边框样式、字体等。

lv_style_t 是一个结构体,包含多个视觉属性,可以通过 API 函数来设置或修改。

  1. 创建和初始化风格
    在 LVGL 中,风格通常是通过 lv_style_t 对象来创建的。可以使用 lv_style_init() 初始化风格对象,接着使用不同的风格设置函数来定义具体的样式。
static lv_style_t style;
lv_style_init(&style);
  1. 设置按钮的背景风格
    使用 lv_style_set_bg_color()、lv_style_set_bg_grad_color() 等函数来设置按钮背景的颜色、渐变等。
lv_style_set_bg_color(&style, LV_COLOR_RED);
lv_style_set_bg_opa(&style, LV_OPA_COVER);  // 设置背景的不透明度
  1. 设置按钮的边框
    使用 lv_style_set_border_color()、lv_style_set_border_width() 等函数来设置按钮边框的颜色、宽度等。

l

v_style_set_border_color(&style, LV_COLOR_BLACK);
lv_style_set_border_width(&style, 2);
  1. 设置按钮的圆角
    使用 lv_style_set_radius() 来设置按钮的圆角大小。
lv_style_set_radius(&style, 10);  // 设置圆角半径为 10
  1. 设置按钮的阴影
    使用 lv_style_set_shadow_width()、lv_style_set_shadow_color() 等函数来设置按钮的阴影效果。
lv_style_set_shadow_width(&style, 5);  // 设置阴影宽度
lv_style_set_shadow_color(&style, LV_COLOR_GRAY);  // 设置阴影颜色为灰色
  1. 将风格应用到按钮
    一旦定义了风格对象,你就可以通过 lv_btn_set_style() 来应用该风格到按钮的不同部分(例如:按钮主区域、按钮的点击区域等)。
lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL);  // 创建按钮
lv_obj_add_style(btn, &style, 0);  // 为按钮的常规状态应用风格
  1. 设置不同状态下的风格
    你可以为按钮的不同状态(例如:普通状态、按下状态、悬停状态等)设置不同的风格。
lv_style_t style_pressed;
lv_style_init(&style_pressed);
lv_style_set_bg_color(&style_pressed, LV_COLOR_BLUE);  // 按下时的背景色为蓝色lv_obj_add_style(btn, &style, 0);  // 常规状态的风格
lv_obj_add_style(btn, &style_pressed, LV_STATE_PRESSED);  // 按下状态的风格

在 LVGL v8.x 中,所有控件(包括按钮)的风格都通过 lv_obj_add_style() 来设置。你需要创建一个 lv_style_t 对象,初始化并配置它的属性(如背景颜色、边框、字体等),然后通过 lv_obj_add_style() 将风格应用到按钮或其他控件上。

3 案例

你想要在 按钮被按下时,让按钮产生“下沉”或“移动”的视觉效果,这在 LVGL v8 中是可以通过 修改按钮位置偏移(如 lv_style_set_translate_y()) 实现的

3.1 基础操作

// 按钮事件:点击后启用或禁用闪烁
static lv_timer_t* led_timer = NULL;
static bool timer_running = false;static void btn_event_cb(lv_event_t* e)
{lv_event_code_t code = lv_event_get_code(e);if (code == LV_EVENT_CLICKED) {if (timer_running) {lv_timer_del(led_timer);  // 停止闪烁led_timer = NULL;timer_running = false;lv_led_off(led_obj);  // 关闭 LED}else {led_timer = lv_timer_create(led_timer_cb, 500, NULL);  // 500ms 闪烁周期timer_running = true;}}
}void create_led_ui(void)
{// 创建 LEDled_obj = lv_led_create(lv_scr_act());lv_obj_align(led_obj, LV_ALIGN_TOP_MID, 0, 20);lv_obj_set_size(led_obj, 40, 40);lv_led_off(led_obj);// 创建按钮lv_obj_t* btn = lv_btn_create(lv_scr_act());lv_obj_set_size(btn, 150, 50);lv_obj_align(btn, LV_ALIGN_CENTER, 0, 50);lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_CLICKED, NULL);// 样式定义(只针对按下状态)static lv_style_t style_pressed;lv_style_init(&style_pressed);lv_style_set_translate_y(&style_pressed, 4);  // 下移 4 像素lv_style_set_bg_color(&style_pressed, lv_palette_darken(LV_PALETTE_BLUE, 2));  // 更深色视觉反馈(可选)// 添加按下样式(只在按下状态生效)lv_obj_add_style(btn, &style_pressed, LV_STATE_PRESSED);// 按钮标签lv_obj_t* label = lv_label_create(btn);lv_label_set_text(label, "Toggle Blink");lv_obj_center(label);
}void create_screens() {create_led_ui();  // 创建并设置按钮
}

灯闪烁

3.2 动画效果

static lv_obj_t* btn;// 动画回调:设置按钮的 Y 平移(下沉)
static void anim_cb(void* var, int32_t v)
{lv_obj_set_style_translate_y((lv_obj_t*)var, v, 0);
}// 按钮事件回调
static void btn_event_cb1(lv_event_t* e)
{lv_obj_t* btn = lv_event_get_target(e);lv_event_code_t code = lv_event_get_code(e);static lv_anim_t a;if (code == LV_EVENT_PRESSED) {// 按下时:快速下沉lv_anim_init(&a);lv_anim_set_var(&a, btn);lv_anim_set_exec_cb(&a, anim_cb);lv_anim_set_time(&a, 100);  // 速度快lv_anim_set_values(&a, 0, 6);  // 下移 6 像素lv_anim_set_path_cb(&a, lv_anim_path_ease_out);lv_anim_start(&a);}else if (code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) {// 松开时:弹跳回位lv_anim_init(&a);lv_anim_set_var(&a, btn);lv_anim_set_exec_cb(&a, anim_cb);lv_anim_set_time(&a, 200);  // 慢一点lv_anim_set_values(&a, 6, 0);  // 回到原位lv_anim_set_path_cb(&a, lv_anim_path_overshoot);  // 弹跳效果lv_anim_start(&a);}
}void create_btn_with_bounce(void)
{// 创建按钮btn = lv_btn_create(lv_scr_act());lv_obj_set_size(btn, 150, 50);lv_obj_align(btn, LV_ALIGN_CENTER, 0, 50);lv_obj_add_event_cb(btn, btn_event_cb1, LV_EVENT_ALL, NULL);// 标签lv_obj_t* label = lv_label_create(btn);lv_label_set_text(label, "Bounce!");lv_obj_center(label);
}

弹跳

http://www.dtcms.com/wzjs/197909.html

相关文章:

  • 移动互联网公司seo管理平台
  • 做货源的网站天津企业seo
  • 可以做兼职的网站有哪些工作微信公众号运营推广方案
  • jimdo做的网站广州企业网站seo
  • 奥林匹克做校服的网站产品推广文案范例
  • 企业网站建设新站深圳seo排名哪家好
  • 淘宝上做网站排名靠谱吗站长统计app进入网址新版小猪
  • 毕业设计做网站 如何做百度指数关键词搜索趋势
  • 舆情报告模板南安seo
  • 长沙网站制作刚刚突发1惊天大事
  • 深圳在建工程查询北京seo外包
  • 三 网站开发使用软件环境山东服务好的seo
  • 网站建设教程 mysql2000元代理微信朋友圈广告
  • 厚街网站建设价格网络营销策划案怎么写
  • 建站工具原理广告制作
  • 济宁做网站比较好的公司有哪些新产品推广方案范文
  • 网站推广效益怎么分析网站推广服务
  • 福建建设建设厅官方网站打开网址跳转到国外网站
  • 深圳营销型网站建设网络营销 长沙
  • 注册安全工程师官网seo快排技术教程
  • 南阳做那个网站好全国新增确诊病例
  • 百色市右江区了建设局网站百度关键词排名优化工具
  • 网站开发开源代码设计网站官网
  • 泊头市有做网站的吗中国新闻最新消息今天
  • 自己怎么做商城网站吗关键词排名的工具
  • 做今网站windows优化大师是病毒吗
  • 网站代备案网络营销顾问工作内容
  • 安徽餐饮网站建设谷歌官网下载app
  • 做网站百度上海网络推广团队
  • 个人网站建设心得体会网页模板网站