提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
lv_btn
默认情况下,按钮在以下方面与基础对象不同:
不可滚动
添加到默认组(可修改为给其他输入设备控制用,如按键)
默认高度和宽度设置为 LV_SIZE_CONTENT(自动调整)
一、功能
与 基础对象 相比,没有新功能。
二、事件
如果打开了 LV_OBJ_FLAG_CHECKABLE,在对象被点击时有选中切换(Toggle)状态的效果,并且可以在 LV_EVENT_VALUE_CHANGED 事件类型中处理事件。
三、Part
只有这个:
LV_PART_MAIN 按钮的背景
四、使用步骤
1.创建按钮
代码如下(示例):
static lv_obj_t *scr;
static lv_obj_t *btn;
scr = lv_scr_act();
btn = lv_btn_create( scr );
2.设置背景颜色
lv_obj_set_style_bg_color(btn,lv_color_hex(0x111111),LV_PART_MAIN);
五、示例
1.生成一个普通按钮
```c
// 回调函数
void btn_callback(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e); // 获取事件类型
switch(code) // 判断事件类型
{
case LV_EVENT_PRESSED:
printf("PRESSED\n"); // 事件处理
break;
case LV_EVENT_CLICKED:
printf("CLICKED\n"); // 事件处理
break;
default;
// printf("DEFAULT\n"); // 事件处理
break;
}
}
// 创建按钮
void test_draw_btn(void)
{
static lv_obj_t *scr;
static lv_obj_t *btn;
scr = lv_scr_act(); // 获取当前活跃层
btn = lv_btn_create( scr ); // 创建按钮对象
lv_obj_set_style_bg_color(btn,lv_color_hex(0xFFF000),LV_PART_MAIN | LV_STATE_PRESSED); // 添加按钮按下时的背景颜色样式
lv_obj_set_pos(btn,200,50); // 设置坐标
lv_obj_add_event_cb(btn,btn_callback,LV_EVENT_ALL,NULL); // 绑定事件
}
2.生成一个Toggle切换的按钮
// 回调函数
void btn_toggle_callback(lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e); // 获取事件类型
switch(code) // 判断事件类型
{
case LV_EVENT_VALUE_CHANGED:
printf("VALUE_CHANGED\n"); // 事件处理 按钮按下一次 触发一次
break;
default:
// printf("DEFAULT\n"); // 事件处理
break;
}
}
// 创建按钮
void test_draw_btn_toggle(void)
{
static lv_obj_t *scr;
static lv_obj_t *btn;
scr = lv_scr_act(); // 获取当前活跃层
btn = lv_btn_create( scr ); // 创建按钮对象
lv_obj_set_style_bg_color(btn,lv_color_hex(0xFFF000),LV_PART_MAIN | LV_STATE_CHECKED); // 添加样式
lv_obj_set_pos(btn,200,100); // 设置坐标
lv_obj_add_flag(btn,LV_OBJ_FLAG_CHECKABLE); // 把按钮变成 Toggle
lv_obj_add_event_cb(btn,btn_toggle_callback,LV_EVENT_ALL,NULL); // 绑定事件
}