lvgl 实现h5端的Toast 弹窗效果

lvgl 利用定时器实现类似h5端的toast弹窗效果,点击按钮后,toast弹窗出现,延时1s后自动关闭。效果如下:

源码如下:

    lv_obj_t * ui_mask;
    lv_timer_t * timer;
    static void closeToast()
    {
        lv_obj_add_flag(ui_mask, LV_OBJ_FLAG_HIDDEN);
    }
    static void event_handler(lv_event_t * e)
    {
        lv_event_code_t code = lv_event_get_code(e);
        if(code == LV_EVENT_CLICKED) {
            lv_obj_clear_flag(ui_mask, LV_OBJ_FLAG_HIDDEN);
            if (timer) lv_timer_del(timer);
            timer = lv_timer_create(closeToast, 1000,  NULL); // 设置2s后关闭toast
        }
    }

void page_init(void){
    ui_page = lv_obj_create(NULL);
    lv_obj_remove_style_all(ui_page);
    lv_obj_set_size(ui_page, lv_pct(100), lv_pct(100));
    lv_obj_set_style_bg_color(ui_page, lv_color_hex(0x000000), LV_PART_MAIN);
    lv_obj_set_style_bg_opa(ui_page, 255, LV_PART_MAIN);

    lv_obj_t * ui_main = lv_obj_create(ui_page);
    lv_obj_remove_style_all(ui_main);
    lv_obj_set_size(ui_main, lv_pct(100), LV_SIZE_CONTENT);
    lv_obj_set_y(ui_main, 76);
    // lv_obj_set_flex_flow(ui_main, LV_FLEX_FLOW_COLUMN);
    lv_obj_t * label;

    lv_obj_t * btn1 = lv_btn_create(ui_main);
    lv_obj_add_event_cb(btn1, event_handler, LV_EVENT_ALL, NULL);
    lv_obj_center(btn1);

    label = lv_label_create(btn1);
    lv_label_set_text(label, "Button");
    lv_obj_center(label);

    ui_mask = lv_obj_create(ui_page);
    lv_obj_remove_style_all(ui_mask);
    lv_obj_set_size(ui_mask, lv_pct(100), lv_pct(100));
    lv_obj_set_style_bg_color(ui_mask, lv_color_hex(0x000000), LV_PART_MAIN);
    lv_obj_set_style_bg_opa(ui_mask, 220, LV_PART_MAIN);
    lv_obj_add_flag(ui_mask, LV_OBJ_FLAG_HIDDEN);

    lv_obj_t* ui_toast = lv_obj_create(ui_mask);
    lv_obj_remove_style_all(ui_toast);
    lv_obj_set_size(ui_toast, 120, 40);
    lv_obj_set_style_bg_color(ui_toast, lv_color_hex(0x262626), LV_PART_MAIN);
    lv_obj_set_style_bg_opa(ui_toast, 250, LV_PART_MAIN);
    lv_obj_set_style_radius(ui_toast, 8, LV_PART_MAIN);
    lv_obj_center(ui_toast);

    label = lv_label_create(ui_toast);
    lv_label_set_text(label, "Toast");
    lv_obj_center(label);
    lv_obj_set_style_text_color(label, lv_color_hex(0xFFFFFF), LV_PART_MAIN);
    lv_obj_set_style_text_opa(label, 255, LV_PART_MAIN);
 }

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值