lvgl设置自定义的动画效果

要在lvgl里制作简单的动画效果,在网上很容易搜得到。

lv_anim_t anim_logo_img;

lv_anim_init(&anim_logo_img);

。。。

lv_anim_set_exec_cb(&anim_logo_img, (lv_anim_exec_xcb_t)lv_img_set_zoom);

这一行是把执行函数给到动画对象,这个执行函数就是lv_img_set_zoom,也就是缩放函数。它能够使得对象在起止值之间进行缩放。他是lvgl提供的函数之一。

但是要怎么自己来一段执行函数呢?

那就得看到lv_anim_t结构体

typedef struct _lv_anim_t {

    void * var;                          /**<Variable to animate*/

    lv_anim_exec_xcb_t exec_cb;          /**< Function to execute to animate*/

    。。。

这个exec_cb就是执行函数,他的前缀是lv_anim_exec_xcb_t,也就是

typedef void (*lv_anim_exec_xcb_t)(void *, int32_t);

说明我们要自己写这个执行函数的时候,需要两个传参,一个是空指针指向某一个obj对象,另一个是32位变量,是一个数值。

这个数值介于起止值之间。

(设置动画对象的函数:    lv_anim_set_var(&anim_logo_img, &logo_img);)

(设置起止值的函数:    lv_anim_set_values(&anim_logo_img, 0, 100);)

执行函数不断的被运行,他的传参就介于起止值之间,这样就达到了动画的不断变化的效果。

所以,我们依样画葫芦:

void lv_anim_cb(void* logo_img, int32_t mid_val);

定义这么一个函数,再在函数中填充自己想要的效果,如:

{

lv_obj_set_width(logo_img, mid_val);

}

就可以简单的将对象拉宽或者缩短啦。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVGL(Light and Versatile Graphics Library)是一个开源的GUI库,可用于嵌入式系统。它提供了丰富的功能和易于使用的API,可以帮助开发者快速构建用户界面。在LVGL中,可以通过自定义控件来扩展其功能。下面是关于如何自定义一个雷达控件的说明。 首先,为了实现雷达控件,我们需要绘制一个圆形的背景。可以使用LVGL的绘图函数来绘制一个圆和外部的圆环。可以设置一些属性,如颜色、线宽等。 其次,为了实现雷达效果,需要在圆形的背景上绘制多个射线。可以使用LVGL的直线绘图函数来绘制这些射线。可以设置不同的角度和长度,来实现雷达扫描的效果。 然后,在绘制射线的同时,可以在每个射线的末端绘制一个小圆点,用于表示目标。可以根据具体需求设置小圆点的颜色和大小。 另外,为了使雷达控件更加实用,可以通过添加一些交互功能来增加其灵活性。可以通过触摸屏等输入设备来实现交互,例如点击某个小圆点可以显示详细信息。 最后,在绘制完成后,可以在LVGL的主循环中更新雷达控件,使其实时更新显示。可以通过修改射线的角度和长度,以及小圆点的位置来实现动画效果。 总结起来,自定义雷达控件需要使用LVGL的绘图函数来绘制背景、射线和小圆点,并添加交互功能来增加灵活性。通过不断更新控件的显示内容,可以实现雷达扫描效果动画效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值