Android中Lottie加载本地资源动画字体和设置文本和图片

1.初始化本地zip文件
LottieCompositionFactory.fromZipStream(
                ZipInputStream(FileInputStream("/storage/emulated/0/Android/data/packageName/files/test.zip")),
                "test"
            )
                .addListener {
                     testLottieAnimationView.setComposition(it)
                     testLottieAnimationView.playAnimation()
                }

2.加载本地字体资源
        testLottieAnimationView.setFontAssetDelegate(object : FontAssetDelegate() {
            override fun fetchFont(fontFamily: String?): Typeface {
                return Typeface.createFromFile("/storage/emulated/0/Android/data/packageName/files/Hei.ttf")
            }

            override fun getFontPath(fontFamily: String?): String {
                return "/storage/emulated/0/Android/data/packageName/files/Hei.ttf"
            }
        })
3.设置Lottie动画中的文本 替换对应的key

这个key是设计那边指定好的 具体是什么可以问一下

  val  textDelegate = TextDelegate(testLottieAnimationView)
  textDelegate.setText("key", "要设置的文本")
  
4.设置Lottie动画中图片
testLottieAnimationView.updateBitmap( "key", bitmap)

其中bitmap可以自己转

上诉加载网络图片的时候会遇到一个崩溃问题
后续修改如下

 private fun loadImage(url: String,key:String) {
        Glide.with(this)
            .asBitmap()
            .override(110, 110)
            .apply(RequestOptions.bitmapTransform(CircleCrop()))
            .load(url)
            .into(object:CustomTarget<Bitmap>(){
                override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                    lottieAnimationView.addValueCallback(KeyPath(key), LottieProperty.IMAGE,object:LottieValueCallback<Bitmap>(){
                        override fun getValue(frameInfo: LottieFrameInfo<Bitmap>?): Bitmap {
                            return resource
                        }
                    })
                }

                override fun onLoadCleared(placeholder: Drawable?) {}
            })
    }


 loadImage("url1","key1")
 loadImage("url2","key2")
 lottieStartPK.visibility = View.VISIBLE
 lottieStartPK.playAnimation()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Lottie是一个用于Android、iOS和Web的开源库,它可以加载和渲染Adobe After Effects动画导出的JSON文件。使用Lottie,开发者可以轻松地将复杂的动画效果集成到自己的应用程序,而无需编写复杂的动画代码。要加载JSON动画,只需将JSON文件放置在assets文件夹,并使用LottieAnimationView加载即可。Lottie还提供了许多自定义属性,可以让开发者更好地控制动画的行为和外观。 ### 回答2: Android Lottie是由Airbnb开源的一个动画库,可用于加载和渲染Adobe After Effects创建的Lottie动画文件,这些动画文件存储为JSON格式。与传统的GIF、WebP和MP4格式相比,Lottie动画文件更小,可缩放并且无损失,是完美的UI动画解决方案。 下面是一个简单的步骤,让您轻松加载JSON动画文件: 1. 在您的Android项目添加依赖项:添加以下dependency到您的build.gradle文件。 dependencies { implementation 'com.airbnb.android:lottie:3.4.1' } 2.将Lottie动画文件放在assets文件夹:将动画JSON文件放在您的Android项目的assets文件夹下。 3. 在布局文件添加LottieView:在布局文件添加LottieView并设置宽度和高度。您可以使用app:lottie_file指定动画的文件名。例如以下代码: <com.airbnb.lottie.LottieAnimationView android:id="@+id/animation_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:lottie_file="your_animation.json" /> 4. 在Activity加载动画:在您的Activity的onCreate方法加载动画文件,并开始播放动画LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view); animationView.setAnimation("your_animation.json"); animationView.loop(true); animationView.playAnimation(); 通过上述步骤,您就能够成功地加载JSON动画文件,并将其渲染在您的Android appLottie提供了许多自定义属性,以及可在运行时访问的API,可以让您在呈现动画时,获得更多的自由度和控制权限。 ### 回答3: Android Lottie是一个用于渲染矢量动画的库,由Airbnb开源。该库可以加载由Adobe After Effects导出的json文件,并将其渲染为原生Android视图动画效果。Lottie使用了高效而轻量级的渲染引擎来实现这一点,从而为开发人员提供了一种快速而简便的方式来实现优秀的矢量动画效果。 为了加载json动画,首先我们需要在项目引入Lottie库,这可以通过在build.gradle文件添加以下依赖项来完成: ``` implementation 'com.airbnb.android:lottie:3.6.1' ``` 完成之后,我们可以在布局文件添加一个LottieAnimationView视图,并在java代码使用以下代码加载json动画: ``` LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animationView); animationView.setAnimation("your_animation.json"); animationView.playAnimation(); ``` 在这里,我们将LottieAnimationView的文件名设置为“your_animation.json”,但是您应该将其替换为实际的json文件名。 此外,Lottie也提供了其他一些方法和属性,可用于与动画交互和控制。例如,您可以使用以下方法暂停和恢复动画: ``` animationView.pauseAnimation(); animationView.resumeAnimation(); ``` 还可以使用以下方法将动画设置为循环播放: ``` animationView.setRepeatMode(LottieDrawable.RESTART); animationView.setRepeatCount(LottieDrawable.INFINITE); ``` 总的来说,Lottie是一种简单而有力的工具,可以帮助我们在Android应用程序实现高质量的矢量动画效果。通过加载json文件并使用LottieAnimationView视图,我们可以轻松地将动画集成到我们的应用程序。同时,Lottie还提供了一系列方法和属性,使我们可以对动画进行精细的控制和交互,以生成更加生动和有趣的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值