本篇文章解决两个问题:
1. 假如lottie的json文件放到sdcard上,如果使用该文件运行lottie动画
2. 假如lottie的json文件对应的图片资源放到了sdcard,如果如何让lottie使用该图片资源
因为一般我们使用lottie是把json文件还有图片放到系统的assets目录下使用,这种比较简单如图所示:
现在开始说,使用sdcard目录下的json文件的方法:
比如新建一个项目叫com.test,我们把json文件放到 "/data/data/com.test/files/one.json"目录下,然后
File file = new File("/data/data/com.test/files/one.json"); FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } ImageAssetDelegate imageAssetDelegate = new ImageAssetDelegate() { @Override public Bitmap fetchBitmap(LottieImageAsset asset) { Bitmap bitmap = BitmapFactory.decodeFile("/data/data/com.test/files/one/" + asset.getFileName()); return bitmap; } }; mLottieAnimationView.setImageAssetDelegate(imageAssetDelegate); LottieComposition.Factory.fromInputStream(this, fileInputStream, new OnCompositionLoadedListener() { @Override public void onCompositionLoaded(@Nullable LottieComposition composition) { mLottieAnimationView.setComposition(composition); } }); mLottieAnimationView.loop(true); mLottieAnimationView.playAnimation();
这里又两点比较关键:
1. mlottieAnimationView.setcomposition(XXX),这个方法我们首先是找到Lottie的json文件,然后通过FileInputStream的方式,将
该文件载入到内存中,然后读取该流文件,指定lottie的composition文件,这样我们就可以读取手机sdcard目录下的json文件了。
2. mlottieAnimationView.setImageAssetDelegate(XXX),这个方法是指定lottie的动画文件引用的图片资源的路径,我们可以将该
路径指定为手机sdcard的图片路径,这样就可以让lottie引用手机sdcard上的图片资源了。
ok,大家可以自己创建个工程试下是否ok