LVGL lv_btn 按钮(9)

lv_btn

lv_btn按钮其实是lv_cont的复杂变体,可以包含子对象,常见的子对象是lv_label标签,相关API在lv_btn.h,lv_btn有6种状态

/** Possible states of a button.
 * It can be used not only by buttons but other button-like objects too*/
enum {
    LV_BTN_STATE_RELEASED,
    LV_BTN_STATE_PRESSED,
    LV_BTN_STATE_DISABLED,
    LV_BTN_STATE_CHECKED_RELEASED,
    LV_BTN_STATE_CHECKED_PRESSED,
    LV_BTN_STATE_CHECKED_DISABLED,
    _LV_BTN_STATE_LAST, /* Number of states*/
};
typedef uint8_t lv_btn_state_t;
状态变化

非切换按钮

LV_BTN_STATE_RELEASED-->LV_BTN_STATE_PRESSED-->LV_BTN_STATE_RELEASED

切换按钮
第一次点击时

LV_BTN_STATE_CHECKED_RELEASED-->LV_BTN_STATE_CHECKED_PRESSED-->LV_BTN_STATE_RELEASED

第二次点击

LV_BTN_STATE_RELEASED-->LV_BTN_STATE_PRESSED-->LV_BTN_STATE_CHECKED_RELEASED

布局和自适应

因为本质是lv_cont,所以layout和fit类型和lv_cont一致

样式

/**Styles*/
enum {
    LV_BTN_PART_MAIN = LV_OBJ_PART_MAIN,
    _LV_BTN_PART_VIRTUAL_LAST,
    _LV_BTN_PART_REAL_LAST = _LV_OBJ_PART_REAL_LAST,
};
typedef uint8_t lv_btn_part_t;

例子

static void event_handler(lv_obj_t * obj, lv_event_t event)
{
    if(event == LV_EVENT_CLICKED) {
        printf("Clicked\n");
    }
    else if(event == LV_EVENT_VALUE_CHANGED) {
        printf("Toggled\n");
		
    }printf("%x,:%d\n", obj, lv_btn_get_state(obj));
}

void lv_ex_btn_1(void)
{
    lv_obj_t * label;

    lv_obj_t * btn1 = lv_btn_create(lv_scr_act(), NULL);/*创建btn1*/
    lv_obj_set_event_cb(btn1, event_handler);/*设置btn1回调函数*/
    lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, -40);

    label = lv_label_create(btn1, NULL);/*btn1内创建label*/
    lv_label_set_text(label, "Button");
	printf("%x,btn1:%d\n", btn1,lv_btn_get_state(btn1));

    lv_obj_t * btn2 = lv_btn_create(lv_scr_act(), NULL);/*创建btn2*/
    lv_obj_set_event_cb(btn2, event_handler);/*设置btn2回调函数*/
    lv_obj_align(btn2, NULL, LV_ALIGN_CENTER, 0, 40);
    lv_btn_set_checkable(btn2, true);/*设置为toggle形按钮*/
    lv_btn_toggle(btn2);/*切换按钮状态*/
    lv_btn_set_fit2(btn2, LV_FIT_NONE, LV_FIT_TIGHT);/*设置按钮自适应模式*/

    label = lv_label_create(btn2, NULL);/*btn2内创建label*/
    lv_label_set_text(label, "Toggled");
	printf("%x,btn2:%d\n", btn2, lv_btn_get_state(btn2));
}

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值