Lottie动画动态定位以及缩放
有时候我们需要用Lottie来播放一些,相对与某些位置的非固定动画,这时候就需要给他进行定位缩放了,请看我的方法。
刚开始的时候,我觉得这是一件非常简单的事情,不就是确定一个点,然后不同设备根据这个点的比例来缩放和移动lottie组件就可以了。
但在实际使用中,我发现
lottie组件的大小并不是固定的其本身的px大小,而是会根据不同设备来自动伸缩的,具体怎么伸缩的我不知道。
lottie组件使用setScaleX缩放之后,并不是就整个组件缩小,而是里面的动画缩小,并且居中了。
这就很尴尬了,特别是第二点。
所以,我现在有两个结论
- 组件大小不能根据json文件中的大小而定,需要实际获取
- 缩放之后并不是组件缩放,所以不能单单根据宽高缩放了多少来反向移动,还需要计算其缩放之后又居中带来的移动。
//首先是固定一个点,我这里是金币增加动画以组件位置为点
int[] location = new int[2] ;
iv_coin.getLocationInWindow(location); //获取在当前窗口内的绝对坐标
iv_coin.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标float rightScale = 0.86f;//这里因为美工做的动画留有边距,所以要去掉一点,没有边距直接1.0f
float scale = (float)(location[0])/(float) (animation_view.getWidth()*rightScale);//用目标宽度/组件当前宽度,获得当前缩放比例
if(scale<1)//如果是需要缩小{animation_view.setScaleX(scale);//设置动画缩放比例,用setScale()应该也行animation_view.setScaleY(scale);float nowAnimWidth = (float) animation_view.getWidth()*scale;//获取缩放之后的宽高float nowAnimHeight = (float)animation_view.getHeight()*scale;//无论是不是宽高相等都是需要等比例缩放的,只是可以根据具体情况,看是以宽还是高为先。animation_view.setX((int) (nowAnimWidth-animation_view.getWidth())/2);//设置绝对位置,需要纳入动画居中的情况/2animation_view.setY((int) (nowAnimHeight-animation_view.getHeight())/2+location[1]);}else{animation_view.setX(location[0]-animation_view.getWidth()*rightScale);animation_view.setY(location[1]);}
上面的算法是根据我的那个动画来写的。
我是没有左边距的,因为组件的起始位置就在左上角,0,0,所以如果是其他的动画的话。就需要在我上面算法的基础上将lottie组件的起始位置计算进去。
Lottie动画动态定位以及缩放相关推荐
- lottie 动画_使用After Effects和Lottie制作网络动画而不会损失质量
lottie 动画 A quick getting started guide 快速入门指南 I recently took on a project where the team wanted to ...
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...
- 程序员也想改 Lottie 动画?是的!
一.前言 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,用过都说好.完全解耦开发人员和设计师,让设计师设计的动画,在程序中无缝还原,真是一旦拿 ...
- Android Property Animation属性动画:scale缩放动画(4)
Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...
- android jason动画,Android 动画之Lottie动画使用
Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...
- R语言使用gganimate包和ggforce包可视化动画并动态缩放(zoom)移动动画的内容
R语言使用gganimate包和ggforce包可视化动画并动态缩放(zoom)移动动画的内容 目录 R语言使用gganimate包和ggforce包可视化动画并动态缩放(zoom)移动
- flutter 动画json_Flutter 50: 图解动画小插曲之 Lottie 动画
和尚在一年前整理过一点 Lottie 在 Android 中的应用,现在 Flutter 也有相关的插件帮助我们快速简单的应用场景复杂的 Lottie 动画: 和尚在官网查询之后发现官网推荐了两个开源 ...
- 在VUE中使用Lottie动画
Lottie简介 官方介绍:Lottie is a mobile library for Web, and iOS that parses Adobe After Effects animations ...
- Lottie 动画导出为 GIF/MP4 以及与 QML 集成演示
获取 Lottie 动画文件 lottiefiles 是一个很好的网站, 从上面可以下载到别人分享的 lottie 动画文件. 我们可以下载到多种格式, 下面分别讲解每个格式的下载和适用情景. 下载 ...
最新文章
- esxi vsphere的端口_vSphere Client 6.0 更改 ESXESXi 主机的端口
- 为什么现在大家喜欢用3*3小卷积?
- 恢复删除的Linux文件
- Java Socket 客户端使用指定端口多次连接服务器引发 BindException
- Linux查看swap使用情况小脚本
- python导入模块报错_Python 导入上层目录模块报错
- CSS图片布局 flex(竖着的几张图片改为一排)
- 从程序员到项目经理(五):程序员加油站 -- 不是人人都懂的学习要点
- kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap
- python3调用摄像头_教你如何利用python调用摄像头
- not是什么意思在c语言,为什么在C样式语言中逻辑NOT运算符是“!”而不是“ ~~”?...
- winRAR 破解注册码
- 小米wifi驱动 linux驱动,Centos7-驱动小米WIFI做AP
- 如何解决未能初始化战场服务器,microsoft net framework配置系统未能初始化
- input取消焦点 vue_vue获取input焦点,弹框后自动获取input焦点
- 你和财务自由之间,只差洋哥的这些建议!!!
- html新建站点的操作步骤,如何在服务器上建立站点的方法步骤
- 计算机硬盘容量单位换算,为什么新硬盘容量不对是什么原因?原来是硬盘容量单位换算的问题...
- 2021-07-26记录字节“懂车帝”重庆岗一面(绝对凉)
- Java中「与运算,或运算,异或运算,取反运算。」
热门文章
- 瓦尔机器人智能行李箱_COWAROBOT首款机器人行李箱沪上亮相
- ATE 测试及IC测试原理之 OS测试
- CTF——Web网站备份源码泄露
- php mysql的人事管理系统_PHP人事管理系统 v4.1.8
- 走进未来的工厂:数字孪生车间、虚拟车间和数字化车间的前沿应用
- 玉米油、橄榄油、茶油是对心脑血管最好的油
- 阿里云发布ET医疗大脑,它的野心将不只是医生助手 | 云栖2017深圳
- FR8012HAQ利用ADC实现检测电池电压检测的解决方案
- 图片格式转换软件哪个好?建议收藏这三个方法
- lingo灵敏度分析(LINGO的objective coeffienct range和Righthand side ranges如何调出?)