LVGL8学习之扩展当前主题(Extending the current theme)

这篇博客介绍了如何在LVGL图形库中创建并应用新的主题。通过定义和初始化样式,然后在现有主题基础上添加新样式,实现了按钮背景颜色和边框的定制。`new_theme_apply_cb`函数用于在对象上应用新样式,`new_theme_init_and_set`函数用于设置和显示新主题。最终,通过示例展示了如何创建两个按钮,分别使用原始主题和新主题,突出展示了主题切换的效果。
摘要由CSDN通过智能技术生成

这一篇来学习一下如何扩展当前主题,还是通过codeblock来模拟代码的运行,代码如下:

static lv_style_t g_style_btn;

/*当已经添加基本主题的样式添加新样式时,调用次函数*/
static void new_theme_apply_cb(lv_theme_t * th, lv_obj_t * obj)
{
    LV_UNUSED(th);

    if(lv_obj_check_type(obj, &lv_btn_class))
    {
        lv_obj_add_style(obj, &g_style_btn, 0);
    }
}

static void new_theme_init_and_set(void)
{
    /*初始化样式*/
    lv_style_init(&g_style_btn);
    lv_style_set_bg_color(&g_style_btn, lv_palette_main(LV_PALETTE_GREEN));
    lv_style_set_border_color(&g_style_btn, lv_palette_darken(LV_PALETTE_GREEN, 3));
    lv_style_set_border_width(&g_style_btn, 3);

    /*通过当前主题初始化新主题*/
    lv_theme_t * th_act = lv_disp_get_theme(NULL);
    static lv_theme_t th_new;
    th_new = *th_act;

    /*设置父主题和新主题的样式适播放回调函数*/
    lv_theme_set_parent(&th_new, th_act);
    lv_theme_set_apply_cb(&th_new, new_theme_apply_cb);

    /*显示新主题*/
    lv_disp_set_theme(NULL, &th_new);
}


void lv_theme_change_test()
{
    lv_obj_t * btn1 = NULL;
    lv_obj_t * btn2 = NULL;
    lv_obj_t * label = NULL;

    btn1 = lv_btn_create(lv_scr_act());
    if (btn1 != NULL)
    {
        lv_obj_align(btn1, LV_ALIGN_TOP_MID, 0, 20);

        label = lv_label_create(btn1);
        if (label != NULL)
        {
            lv_label_set_text(label, "Original theme");
        }
    }

    new_theme_init_and_set();

    btn2 = lv_btn_create(lv_scr_act());
    if (btn2 != NULL)
    {
        lv_obj_align(btn2, LV_ALIGN_BOTTOM_MID, 0, -20);

        label = lv_label_create(btn2);
        if (label != NULL)
        {
            lv_label_set_text(label, "New theme");
        }
    }
}

运行结果:

 

Extending the Linear Models with R》是一本讲述如何在R语言中拓展线性模型的教材。课后练习是对所学内容进行巩固和深入理解的重要环节。 在《Extending the Linear Models with R》中,我们学习了如何使用R语言进行线性回归分析,以及如何通过拓展线性模型来应对更复杂的数据分析问题。课后练习的目的是帮助我们加深对这些知识的理解和应用能力。 课后练习可能会包括以下几个方面的内容: 1. 数据准备和预处理:练习可能要求我们先对原始数据进行清洗和处理,例如去除缺失数据、处理异常值等。 2. 线性回归建模:练习可能会要求我们根据给定的数据集,使用R语言中的函数或包来拟合线性回归模型,并输出模型的参数估计结果和统计量。 3. 模型评估和诊断:练习可能会要求我们对拟合的线性模型进行评估和诊断,例如计算残差和离群值、绘制残差图等。 4. 拓展线性模型:练习可能会要求我们使用R语言中的拓展线性模型方法,如广义线性模型(GLM)、岭回归(Ridge Regression)、lasso回归等,来处理更复杂的数据分析问题。 在完成课后练习时,我们需要结合课本中的知识和R语言的使用技巧,灵活运用各种函数和包来解决问题。同时,我们也可以通过查阅R语言的帮助文档、在线资源和交流社区等来获得更多的学习和解决问题的支持。 通过课后练习,我们可以更好地掌握R语言中拓展线性模型的应用技巧,提升数据分析的能力,并为将来在实际问题中应用线性模型提供基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值