LVGL7.0按键创建

按键创建

1、创建多图片按键

创建一个多图片按键,用于自定义开关状态的切换

LV_EVENT_CB_DECLARE(event_handler)//声明按键回调

{

    switch (e)

    {

    case LV_EVENT_CLICKED://轻点



        break;

    case LV_EVENT_RELEASED://按压



        break;

    case LV_EVENT_PRESSED://松开



        break;

    case LV_EVENT_LONG_PRESSED://长按



        break;

    default:break;

    }

}



void Sw_Ctrl_Page_Create(void)

{

    //声明图片

    LV_IMG_DECLARE(S_PIC_1);

    LV_IMG_DECLARE(S_PIC_2);



    lv_obj_t* imgbtna = lv_imgbtn_create(lv_scr_act(), NULL);//基于屏幕创建图标

    lv_imgbtn_set_src(imgbtna, LV_BTN_STATE_PRESSED, &S_PIC_1);//按下状态图片

    lv_imgbtn_set_src(imgbtna, LV_BTN_STATE_RELEASED, &S_PIC_2);//抬起状态图片

    lv_imgbtn_set_src(imgbtna, LV_BTN_STATE_CHECKED_RELEASED, &S_PIC_1);//检测到按松开状态图片

    lv_imgbtn_set_src(imgbtna, LV_BTN_STATE_CHECKED_PRESSED, &S_PIC_2);//检测到按下状态图片    

    lv_imgbtn_set_checkable(imgbtna, true);//使能按键图片翻转

    lv_imgbtn_toggle(imgbtna);//设置翻转

    lv_obj_align_origo(imgbtna, NULL, LV_ALIGN_IN_TOP_LEFT, 85, 30);//左上角对齐

    lv_obj_set_event_cb(imgbtna, event_handler);//设置按钮回调

}

 

2、创建单图片按键

类似于app图标,单图标模拟按压效果

//按键控制

LV_EVENT_CB_DECLARE(event_handler)

{

    switch (e)

    {

    case LV_EVENT_CLICKED://轻点

        break;

    case LV_EVENT_RELEASED://按压

        break;

    case LV_EVENT_PRESSED://松开

        break;

    case LV_EVENT_LONG_PRESSED://长按

        break;

    default:break;

    }

}



void Home_Page_Create(void)

{

    //声明图片

    LV_IMG_DECLARE(H_PIC_0);



    static lv_style_t style;

    lv_style_init(&style);//对象风格初始化

    lv_style_set_image_recolor_opa(&style, LV_STATE_PRESSED, LV_OPA_30);//设置按下时的背景色深

    lv_style_set_image_recolor(&style, LV_STATE_PRESSED, LV_COLOR_GRAY);//设置按下时的背景色



    lv_obj_t* img1 = lv_imgbtn_create(lv_scr_act(), NULL);//创建图片按键

    lv_imgbtn_set_src(img1, LV_BTN_STATE_PRESSED, &H_PIC_0);//按下

    lv_imgbtn_set_src(img1, LV_BTN_STATE_RELEASED, &H_PIC_0);//抬起

    lv_obj_align(img1, NULL, LV_ALIGN_IN_TOP_LEFT, 30, 25);//左上角对齐

    lv_obj_set_event_cb(img1, event_handler);//设置按钮回调

    lv_obj_add_style(img1, LV_IMGBTN_PART_MAIN, &style);//对象添加风格

}

 

3、创建系统按键

使用GUI自己的原味按键

LV_EVENT_CB_DECLARE(event_handler)

{

    switch (e)

    {

    case LV_EVENT_CLICKED://轻点

        break;

    case LV_EVENT_RELEASED://按压

   

        break;

    case LV_EVENT_PRESSED://松开

        break;

    case LV_EVENT_LONG_PRESSED://长按

       

        break;

    default:break;

    }

}

void Home_Page_Create(void)

{

    lv_obj_t* label;



    lv_obj_t* btn1 = lv_btn_create(lv_scr_act(), NULL);

    lv_obj_set_event_cb(btn1, event_handler);

    lv_obj_align(btn1, NULL, LV_ALIGN_IN_TOP_LEFT, 30, 40);



    label = lv_label_create(btn1, NULL);//基于按键创建文本

    lv_label_set_text(label, "Button");



    lv_obj_t* btn2 = lv_btn_create(lv_scr_act(), NULL);

    lv_obj_set_event_cb(btn2, event_handler);

    lv_obj_align(btn2, NULL, LV_ALIGN_IN_TOP_LEFT, 30,160);

    lv_btn_set_checkable(btn2, true);

    lv_btn_toggle(btn2);

    lv_btn_set_fit2(btn2, LV_FIT_NONE, LV_FIT_TIGHT);



    label = lv_label_create(btn2, NULL);

    lv_label_set_text(label, "Toggled");

}

4、SW按键

SW也算一个按键,用于显示状态

 

LV_EVENT_CB_DECLARE(event_handler)

{

    switch (e)

    {

    case LV_EVENT_CLICKED://轻点



        break;

    case LV_EVENT_RELEASED://按压



        break;

    case LV_EVENT_PRESSED://松开

        break;

    case LV_EVENT_LONG_PRESSED://长按



        break;

    case LV_EVENT_VALUE_CHANGED://目标值改变

        printf("State: %s\n", lv_switch_get_state(obj) ? "On" : "Off");

        break;

    default:break;

    }

}

void Home_Page_Create(void)

{

    lv_obj_t* sw1 = lv_switch_create(lv_scr_act(), NULL);//创建一个sw1

    lv_obj_align(sw1, NULL, LV_ALIGN_IN_TOP_LEFT, 200, 50);//对齐

    lv_obj_set_event_cb(sw1, event_handler);//设置回调

    lv_switch_set_anim_time(sw1,500);//设置动画时间 单位ms



    lv_obj_t* sw2 = lv_switch_create(lv_scr_act(), sw1);//拷贝sw1的所有属性,并创建sw2

    lv_switch_on(sw2, LV_ANIM_ON);//设置初始态为ON

    lv_obj_align(sw2, NULL, LV_ALIGN_IN_TOP_LEFT, 200, 150);//对齐

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值