有时候我们需要用Lottie来播放一些,相对与某些位置的非固定动画,这时候就需要给他进行定位缩放了,请看我的方法。

刚开始的时候,我觉得这是一件非常简单的事情,不就是确定一个点,然后不同设备根据这个点的比例来缩放和移动lottie组件就可以了。

但在实际使用中,我发现

  1. lottie组件的大小并不是固定的其本身的px大小,而是会根据不同设备来自动伸缩的,具体怎么伸缩的我不知道。

  2. lottie组件使用setScaleX缩放之后,并不是就整个组件缩小,而是里面的动画缩小,并且居中了。

这就很尴尬了,特别是第二点。

所以,我现在有两个结论

  1. 组件大小不能根据json文件中的大小而定,需要实际获取
  2. 缩放之后并不是组件缩放,所以不能单单根据宽高缩放了多少来反向移动,还需要计算其缩放之后又居中带来的移动。
//首先是固定一个点,我这里是金币增加动画以组件位置为点
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动画动态定位以及缩放相关推荐

  1. lottie 动画_使用After Effects和Lottie制作网络动画而不会损失质量

    lottie 动画 A quick getting started guide 快速入门指南 I recently took on a project where the team wanted to ...

  2. 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

    Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...

  3. 程序员也想改 Lottie 动画?是的!

    一.前言 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,用过都说好.完全解耦开发人员和设计师,让设计师设计的动画,在程序中无缝还原,真是一旦拿 ...

  4. Android Property Animation属性动画:scale缩放动画(4)

     Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...

  5. android jason动画,Android 动画之Lottie动画使用

    Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...

  6. R语言使用gganimate包和ggforce包可视化动画并动态缩放(zoom)移动动画的内容

    R语言使用gganimate包和ggforce包可视化动画并动态缩放(zoom)移动动画的内容 目录 R语言使用gganimate包和ggforce包可视化动画并动态缩放(zoom)移动

  7. flutter 动画json_Flutter 50: 图解动画小插曲之 Lottie 动画

    和尚在一年前整理过一点 Lottie 在 Android 中的应用,现在 Flutter 也有相关的插件帮助我们快速简单的应用场景复杂的 Lottie 动画: 和尚在官网查询之后发现官网推荐了两个开源 ...

  8. 在VUE中使用Lottie动画

    Lottie简介 官方介绍:Lottie is a mobile library for Web, and iOS that parses Adobe After Effects animations ...

  9. Lottie 动画导出为 GIF/MP4 以及与 QML 集成演示

    获取 Lottie 动画文件 lottiefiles 是一个很好的网站, 从上面可以下载到别人分享的 lottie 动画文件. 我们可以下载到多种格式, 下面分别讲解每个格式的下载和适用情景. 下载 ...

最新文章

  1. esxi vsphere的端口_vSphere Client 6.0 更改 ESXESXi 主机的端口
  2. 为什么现在大家喜欢用3*3小卷积?
  3. 恢复删除的Linux文件
  4. Java Socket 客户端使用指定端口多次连接服务器引发 BindException
  5. Linux查看swap使用情况小脚本
  6. python导入模块报错_Python 导入上层目录模块报错
  7. CSS图片布局 flex(竖着的几张图片改为一排)
  8. 从程序员到项目经理(五):程序员加油站 -- 不是人人都懂的学习要点
  9. kali Linux Web 渗透测试视频教程— 第六课 网络扫描-nmap与zmap
  10. python3调用摄像头_教你如何利用python调用摄像头
  11. not是什么意思在c语言,为什么在C样式语言中逻辑NOT运算符是“!”而不是“ ~~”?...
  12. winRAR 破解注册码
  13. 小米wifi驱动 linux驱动,Centos7-驱动小米WIFI做AP
  14. 如何解决未能初始化战场服务器,microsoft net framework配置系统未能初始化
  15. input取消焦点 vue_vue获取input焦点,弹框后自动获取input焦点
  16. 你和财务自由之间,只差洋哥的这些建议!!!
  17. html新建站点的操作步骤,如何在服务器上建立站点的方法步骤
  18. 计算机硬盘容量单位换算,为什么新硬盘容量不对是什么原因?原来是硬盘容量单位换算的问题...
  19. 2021-07-26记录字节“懂车帝”重庆岗一面(绝对凉)
  20. Java中「与运算,或运算,异或运算,取反运算。」

热门文章

  1. 瓦尔机器人智能行李箱_COWAROBOT首款机器人行李箱沪上亮相
  2. ATE 测试及IC测试原理之 OS测试
  3. CTF——Web网站备份源码泄露
  4. php mysql的人事管理系统_PHP人事管理系统 v4.1.8
  5. 走进未来的工厂:数字孪生车间、虚拟车间和数字化车间的前沿应用
  6. 玉米油、橄榄油、茶油是对心脑血管最好的油
  7. 阿里云发布ET医疗大脑,它的野心将不只是医生助手 | 云栖2017深圳
  8. FR8012HAQ利用ADC实现检测电池电压检测的解决方案
  9. 图片格式转换软件哪个好?建议收藏这三个方法
  10. lingo灵敏度分析(LINGO的objective coeffienct range和Righthand side ranges如何调出?)