实现效果

开关打开 左上角标签进入停止时有回弹效果 overshoot

开关关闭 标签退出速度由慢到快

几个主要函数

//   /**
// * Set the start and end values of an animation 设置动画的起始值
// * @param a         pointer to an initialized `lv_anim_t` variable
// * @param start     the start value 初始位置
// * @param end       the end value    结束位置
// */
//static inline void lv_anim_set_values(lv_anim_t * a, int32_t start, int32_t end)

lv_anim_set_exec_cb(&a, anim_x_cb);//执行动画

//**

// * Set the path (curve) of the animation. //设置动画的路径(曲线)
// * @param a         pointer to an initialized `lv_anim_t` variable //动画对象
// * @param path_cb a function to set the current value of the animation.是设置动画当前值的函数 我理解为动画的执行效果
// */
//static inline void lv_anim_set_path_cb(lv_anim_t * a, lv_anim_path_cb_t path_cb)

动画使用

lv_anim_t a;
        lv_anim_init(&a);
        lv_anim_set_var(&a, label);
        lv_anim_set_values(&a, lv_obj_get_x(label), -lv_obj_get_width(label));//开关关闭状态坐标(100)
        lv_anim_set_time(&a, 500);
        lv_anim_set_exec_cb(&a, anim_x_cb);
        lv_anim_set_path_cb(&a, lv_anim_path_ease_in);//ease_in 由慢到快,ease——out相反
        lv_anim_start(&a);

static void anim_x_cb(void * var, int32_t v)
{
    lv_obj_set_x(var, v);//设置对象的x坐标位置
}

源码


static void anim_x_cb(void * var, int32_t v)
{lv_obj_set_x(var, v);//设置对象的x坐标位置
}
static void sw_event_cb(lv_event_t * e)
{lv_obj_t * sw = lv_event_get_target(e);// 获取目标对象lv_obj_t * label = lv_event_get_user_data(e);// 获取用户传递的自定义参数if(lv_obj_has_state(sw, LV_STATE_CHECKED)){lv_anim_t a;lv_anim_init(&a);lv_anim_set_var(&a, label);//设置要设置动画的变量lv_anim_set_values(&a, lv_obj_get_x(label), 100);//   /**
// * Set the start and end values of an animation 设置动画的起始值
// * @param a         pointer to an initialized `lv_anim_t` variable
// * @param start     the start value 初始位置
// * @param end       the end value    结束位置
// */
//static inline void lv_anim_set_values(lv_anim_t * a, int32_t start, int32_t end)lv_anim_set_time(&a, 500);//动画持续时间lv_anim_set_exec_cb(&a, anim_x_cb);//**// * Set the path (curve) of the animation. //设置动画的路径(曲线)
// * @param a         pointer to an initialized `lv_anim_t` variable //动画对象
// * @param path_cb a function to set the current value of the animation.是设置动画当前值的函数 我理解为动画的执行效果
// */
//static inline void lv_anim_set_path_cb(lv_anim_t * a, lv_anim_path_cb_t path_cb)lv_anim_set_path_cb(&a, lv_anim_path_overshoot);//overshoot 有个回弹效果 进入,开关打开状态lv_anim_start(&a);}else{lv_anim_t a;lv_anim_init(&a);lv_anim_set_var(&a, label);lv_anim_set_values(&a, lv_obj_get_x(label), -lv_obj_get_width(label));//开关关闭状态坐标(100)lv_anim_set_time(&a, 500);lv_anim_set_exec_cb(&a, anim_x_cb);lv_anim_set_path_cb(&a, lv_anim_path_ease_in);//ease_in 由慢到快,ease——out相反lv_anim_start(&a);}
}
/**
* Start animation on an event
*/
void lv_example_anim_1(void)
{lv_obj_t * label = lv_label_create(lv_scr_act());//在当前屏幕创建标签 -- 该实例有动画的对象lv_label_set_text(label, "Hello animations!");lv_obj_set_pos(label, 100, 10);//初始坐标(100,10)lv_obj_t * sw = lv_switch_create(lv_scr_act());lv_obj_center(sw);lv_obj_add_state(sw, LV_STATE_CHECKED);lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, label);
}

LVGL学习——初识动画 lv_anim_t相关推荐

  1. 【LVGL学习笔记】(二) 基础概念

    LVGL全程LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库.并且配合LVGL模拟器,可以在电脑对界面进行编辑显示,测试通过后再移植进嵌入式设备中,实现高效的项目开发. LVG ...

  2. iOS学习——核心动画之Layer基础

    iOS学习--核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...

  3. 学习UE4动画蓝图:实现双脚贴地

    目标 在上一篇博客<学习UE4动画蓝图:配置脚部IK>中,IK功能解决了"脚部陷入地下"的问题,但是还是有"脚部悬空"的问题.<[UE4蓝图] ...

  4. 系统学习iOS动画之六:3D动画

    本文是我学习<iOS Animations by Tutorials> 笔记中的一篇. 文中详细代码都放在我的Github上 andyRon/LearniOSAnimations. 到目前 ...

  5. kotlin设置按钮不可点击_3dmax渲染720全景效果图动画流程,学习VR动画不可错过的必备知识...

    3dmax渲染720全景效果图动画流程,学习VR动画不可错过的必备知识 7 20全景效果图是这几年全国兴起的一门小技术,是适应快速.立体.多方位看图的一个重要方法.今天我就来说一下,制作720全景动画 ...

  6. [0 to 0.5]从零开始学习Android动画知识(下)

    [0 to 0.5]从零开始学习Android动画知识(下) 矢量动画(Scalable Vector Graphics) 不同于前面的为控件做动画效果的方法,矢量动画则是为图形做出动画效果 矢量图 ...

  7. 如何高效的学习Android动画

    前言 本篇文章就是在知乎回答的一个问题,这里记录下,以后看到我博客的朋友也可以看到. 曾经也同楼主一样,对Android中的动画不是很清楚,什么帧,Tween,属性等等,很多知识,也很琐碎,后来觉得动 ...

  8. 高效学习Android动画

    当时系统学习Android动画还有一部分原因:将来成为一个android组件开发工程师,如果想做出一些高性能,nice的动画就必须对动画的基础知识有深入的理解,因此就打算系统的学习一下.经过一段时间的 ...

  9. 系统学习iOS动画之七:其它类型的动画

    本文是我学习<iOS Animations by Tutorials> 笔记中的一篇. 文中详细代码都放在我的Github上 andyRon/LearniOSAnimations. 前面学 ...

最新文章

  1. spoj Balanced Numbers(数位dp)
  2. leetcode 233 number of digit one
  3. 使用Windows Server2012或R2 DHCP故障转移群集需要注意的几点
  4. Oracle原理:11g的体系结构
  5. 抓取从源地址为10.0.0.111主机访问目标主机10.0.0.222的80/tcp端口的流量?
  6. 服务器标配 SSH 协议,你了解多少?
  7. [Yii Framework] spl_autoload_register 导致加载顺序冲突
  8. 在单节点和多节点上的Hadoop设置
  9. PHP中不错的类的调用方法
  10. MAC-VBox-Centos6.6安装增强功能
  11. 英语版计算机教室规章制度,计算机教室规章制度
  12. java html判断,青岛HTML5入门应怎么判断?
  13. gluoncv 目标检测,训练自己的数据集
  14. 宋宝华:公元1024年Linux内核的尘封往事
  15. dns服务器怎么优化,SmartDNS 高性能本地DNS服务器,优化网速
  16. 无人驾驶全家桶:机场“人货场”的改造之路
  17. 关于Anaconda(Miniconda)虚拟环境中的包的问题pkgs
  18. mysql查询使用qq邮箱注册_Spring Boot实现qq邮箱验证码注册和登录验证功能
  19. SQL中的WHILE循环使用
  20. 大数据之linux网络,主机名配置

热门文章

  1. “躲不开”的科技革命,第一季:远离舒适区!
  2. 10.业余无线电术语
  3. (转载)SAP第三方销售实现方法
  4. 关于ONVIF协议你不得不知的6个常见问题
  5. PAT_甲级 简单模拟
  6. 遗传算法 python 简书_基于DEAP库的Python进化算法从入门到入土—(二)简单遗传算法实现...
  7. VMware9虚拟机和Fedora12安装-实现Windows和Linux文件共享
  8. Andrej Karpathy读博建议和写论文的方法
  9. 圆形标定板_自己改的,圆形标定板,opencv标定代码
  10. 华为修改优先级命令_华为LTE重选参数命令简介