Kotlin Android Lottie加载assets下JSON动画setAnimation标红报错
报错原因
编译器报红的核心原因是 参数类型不匹配:assets.open("failanimation.json")的返回值是InputStream类型,但Lottie的LottieAnimationView的setAnimation方法没有定义接收InputStream入参的重载版本,自然无法通过编译。setAnimation常用的合法入参类型只有这几类:
- raw目录下的动画资源ID(Int类型)
- assets目录内的动画文件名(String类型)
- 预加载完成的
LottieComposition实例 - 用于解析json的
JsonReader实例
修复方法
加载assets目录下的Lottie json文件不需要手动调用assets.open打开文件流,直接把文件名作为参数传入setAnimation即可,Lottie内部会自动完成assets文件的读取、解析逻辑,修正后的代码:
binding.animationView.setAnimation("failanimation.json")
如果你的Lottie版本较旧不支持直接传assets文件名,可以先把输入流转为字符串再调用setAnimationFromJson方法加载,但绝大多数主流Lottie版本都支持直接传文件名的最简写法。
额外提醒:传入的文件名需要和assets目录下的实际文件名完全一致(包括后缀、大小写),否则运行时会抛出文件不存在异常。
内容的提问来源于stack exchange,提问作者GHULAM JILANI JANJUA
相关产品推荐
相关产品推荐

