LVGL学习——初识动画 lv_anim_t
实现效果
开关打开 左上角标签进入停止时有回弹效果 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相关推荐
- 【LVGL学习笔记】(二) 基础概念
LVGL全程LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库.并且配合LVGL模拟器,可以在电脑对界面进行编辑显示,测试通过后再移植进嵌入式设备中,实现高效的项目开发. LVG ...
- iOS学习——核心动画之Layer基础
iOS学习--核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...
- 学习UE4动画蓝图:实现双脚贴地
目标 在上一篇博客<学习UE4动画蓝图:配置脚部IK>中,IK功能解决了"脚部陷入地下"的问题,但是还是有"脚部悬空"的问题.<[UE4蓝图] ...
- 系统学习iOS动画之六:3D动画
本文是我学习<iOS Animations by Tutorials> 笔记中的一篇. 文中详细代码都放在我的Github上 andyRon/LearniOSAnimations. 到目前 ...
- kotlin设置按钮不可点击_3dmax渲染720全景效果图动画流程,学习VR动画不可错过的必备知识...
3dmax渲染720全景效果图动画流程,学习VR动画不可错过的必备知识 7 20全景效果图是这几年全国兴起的一门小技术,是适应快速.立体.多方位看图的一个重要方法.今天我就来说一下,制作720全景动画 ...
- [0 to 0.5]从零开始学习Android动画知识(下)
[0 to 0.5]从零开始学习Android动画知识(下) 矢量动画(Scalable Vector Graphics) 不同于前面的为控件做动画效果的方法,矢量动画则是为图形做出动画效果 矢量图 ...
- 如何高效的学习Android动画
前言 本篇文章就是在知乎回答的一个问题,这里记录下,以后看到我博客的朋友也可以看到. 曾经也同楼主一样,对Android中的动画不是很清楚,什么帧,Tween,属性等等,很多知识,也很琐碎,后来觉得动 ...
- 高效学习Android动画
当时系统学习Android动画还有一部分原因:将来成为一个android组件开发工程师,如果想做出一些高性能,nice的动画就必须对动画的基础知识有深入的理解,因此就打算系统的学习一下.经过一段时间的 ...
- 系统学习iOS动画之七:其它类型的动画
本文是我学习<iOS Animations by Tutorials> 笔记中的一篇. 文中详细代码都放在我的Github上 andyRon/LearniOSAnimations. 前面学 ...
最新文章
- spoj Balanced Numbers(数位dp)
- leetcode 233 number of digit one
- 使用Windows Server2012或R2 DHCP故障转移群集需要注意的几点
- Oracle原理:11g的体系结构
- 抓取从源地址为10.0.0.111主机访问目标主机10.0.0.222的80/tcp端口的流量?
- 服务器标配 SSH 协议,你了解多少?
- [Yii Framework] spl_autoload_register 导致加载顺序冲突
- 在单节点和多节点上的Hadoop设置
- PHP中不错的类的调用方法
- MAC-VBox-Centos6.6安装增强功能
- 英语版计算机教室规章制度,计算机教室规章制度
- java html判断,青岛HTML5入门应怎么判断?
- gluoncv 目标检测,训练自己的数据集
- 宋宝华:公元1024年Linux内核的尘封往事
- dns服务器怎么优化,SmartDNS 高性能本地DNS服务器,优化网速
- 无人驾驶全家桶:机场“人货场”的改造之路
- 关于Anaconda(Miniconda)虚拟环境中的包的问题pkgs
- mysql查询使用qq邮箱注册_Spring Boot实现qq邮箱验证码注册和登录验证功能
- SQL中的WHILE循环使用
- 大数据之linux网络,主机名配置
热门文章
- “躲不开”的科技革命,第一季:远离舒适区!
- 10.业余无线电术语
- (转载)SAP第三方销售实现方法
- 关于ONVIF协议你不得不知的6个常见问题
- PAT_甲级 简单模拟
- 遗传算法 python 简书_基于DEAP库的Python进化算法从入门到入土—(二)简单遗传算法实现...
- VMware9虚拟机和Fedora12安装-实现Windows和Linux文件共享
- Andrej Karpathy读博建议和写论文的方法
- 圆形标定板_自己改的,圆形标定板,opencv标定代码
- 华为修改优先级命令_华为LTE重选参数命令简介