美文网首页
Android 加载本地Lottie zip文件无法展示问题

Android 加载本地Lottie zip文件无法展示问题

作者: 赐我一死 | 来源:发表于2021-11-04 21:53 被阅读0次

             最近做了不少动效,免不了要和Lottie打交道,然后UI同学更新了一版本Lottie,当图片放在压缩包中时ios无法展示,当图片压缩成base64码放入data.json文件时android无法展示了,android端加载本地zip lottie使用的是LottieCompositionFactory.fromZipStreamSync() 。

           通过源码得知,首先通过流读取zip中文件,主要是

     1、读取data.json 动效数据解析成Composition,

     2、 png等类型图片等放入Map

     3、接着将Map中的bitmap设置给Compostion中的imageAsset

     4、检查Compostion中的imageAsset都已经设置了bitmap

    所以将图片转成base64直接在data.json中使用,然后压缩成zip下发是无法展示Lottie动效的,因为fromZipStreamSync() 方法内部只读zip包中的图片。在进行第4步时发现Compostion中的imageAsset没有bitmap数据就直接结束了

           后来又想到,同时也在zip包中放png图片就可以解决了,但是源码中解析data.json的时候,如果图片是base64会将那串很长的base64作为图片的名字,所以在对对比zip包中图片名字和Compostion中的imageAsset.fileName,我将图片命名为那串base64时失败了,应该是里面的特殊字符导致,还有那串base64很长很长。

          所以建议分端下发 ios可以用含有base64的zip,android则使用不含有base64的; 活着android端判断下如果只有data.json则解压后直接加载json文件

    相关文章

      网友评论

          本文标题:Android 加载本地Lottie zip文件无法展示问题

          本文链接:https://www.haomeiwen.com/subject/zpzkzltx.html