Lottie动画动态定位以及缩放
来源:互联网 发布:淘宝网服装女装秋装 编辑:程序博客网 时间:2024/06/02 01:09
有时候我们需要用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.0ffloat 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);//设置绝对位置,需要纳入动画居中的情况/2 animation_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组件的起始位置计算进去。
阅读全文
1 0
- Lottie动画动态定位以及缩放
- AE制作json文件格式动画以及lottie开源库的使用
- 开源App动画Lottie
- android--Airbnb 动画库Lottie
- Lottie安卓开源动画库使用
- Lottie安卓开源动画库使用
- Lottie安卓开源动画库使用
- Lottie安卓开源动画库使用
- Lottie-移动动画效果框架
- Android Lottie动画库介绍
- Android•Lottie 动画库填坑记
- iOS 动画实战之Lottie动画
- Lottie
- Lottie
- Lottie开源动画库使用教程
- Lottie- 让Android动画实现更简单
- Lottie实现app首次进入动画
- Lottie for Android 开源动画
- 微信小程序开发之网络请求(POST请求)
- Psr(psr1+psr2+psr3)
- itextpdf为pdf文件添加目录(可跳转)
- CTF中Crypty(密码类)入门必看
- Odoo10在win10下部署
- Lottie动画动态定位以及缩放
- Fragment懒加载机制
- RandomAccessFile
- elasticsearch之Document APIs【Get API】
- 小程序tabBar添加
- 正则表达式(足够用了)
- 创建对象的方法
- MySQL日期时间函数
- Spring之IOC快速入门(一)