滚动(scroll)操作的应用

说明

        滚动(scroll)

        在LVGL中,滚动的工作原理非常简单,如果对象超出父对象内容区域(即无填充大小),则父对象的空间变为可滚动,任何对象都可滚动。

        滚动条为对象的一个部件,通过LV_PART_SCROLLBAR可以看出。

        实验

        在默认屏幕中创建按钮时,按钮与屏幕为父子关系。

        但是创建组(group)时,lv_group_create()的入口参数为void,即组没有父对象,通过lv_group_add_obj()函数使其它控件建立组关系,其它控件的父对象仍未屏幕。

        使用组(group)时,需要使用滚动(scroll)这一动作,例如一组按钮出现时,需要手动滑动,使需要的显示的按钮排在第一位。

效果一:一组按钮的显示

效果二:一组按钮按照手动滚动的位置显示

代码实现

void lv_100ask_demo_course_2_1_1(void)
{
    lv_group_t *g = lv_group_create();
    lv_indev_set_group(lv_win32_encoder_device_object,g);

    //创建btn1
    lv_obj_t *btn1 = lv_btn_create(lv_scr_act());
    lv_obj_align(btn1,LV_ALIGN_CENTER,0,-50);
    lv_obj_set_size(btn1,200,80);
    lv_obj_t *label1 = lv_label_create(btn1);
    lv_label_set_text(label1,"01");
    lv_obj_align_to(label1,btn1,LV_ALIGN_CENTER,0,0);

    //创建btn2
    lv_obj_t *btn2 = lv_btn_create(lv_scr_act());
    lv_obj_align_to(btn2,btn1,LV_ALIGN_OUT_BOTTOM_LEFT,0,10);
    lv_obj_set_size(btn2,200,80);
    lv_obj_t *label2 = lv_label_create(btn2);
    lv_label_set_text(label2,"02");
    lv_obj_align_to(label2,btn2,LV_ALIGN_CENTER,0,0);

    //创建btn3
    lv_obj_t *btn3 = lv_btn_create(lv_scr_act());
    lv_obj_align_to(btn3,btn2,LV_ALIGN_OUT_BOTTOM_LEFT,0,10);
    lv_obj_set_size(btn3,200,80);
    lv_obj_t *label3 = lv_label_create(btn3);
    lv_label_set_text(label3,"03");
    lv_obj_align_to(label3,btn3,LV_ALIGN_CENTER,0,0);

    //创建btn4
    lv_obj_t *btn4 = lv_btn_create(lv_scr_act());
    lv_obj_align_to(btn4,btn3,LV_ALIGN_OUT_BOTTOM_LEFT,0,10);
    lv_obj_set_size(btn4,200,80);
    lv_obj_t *label4 = lv_label_create(btn4);
    lv_label_set_text(label4,"04");
    lv_obj_align_to(label4,btn4,LV_ALIGN_CENTER,0,0);

    lv_group_add_obj(g,btn1);
    lv_group_add_obj(g,btn2);
    lv_group_add_obj(g,btn3);
    lv_group_add_obj(g,btn4);

    //注意组合与按钮不存在父子关系
    lv_coord_t y = lv_obj_get_y(btn2);
    lv_obj_scroll_to_y(lv_obj_get_parent(btn2),y,LV_ANIM_ON);  //开启后,能够看到滚动动画
    lv_obj_scroll_to_y(lv_scr_act(),y,LV_ANIM_ON);  //按钮的父对象为当前屏幕
}

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡姆图拉夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值