首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将自定义字体设置为lottie android

将自定义字体设置为lottie android
EN

Stack Overflow用户
提问于 2022-08-31 12:06:21
回答 1查看 141关注 0票数 0

让我说我想用这个动画

https://lottiefiles.com/70883-animation-fade-in-fade-out

但是从我的项目中将字体更改为自定义视图。

上面的截图是我的字体文件夹。但是当我运行应用程序时,它会产生错误。

代码语言:javascript
运行
复制
java.lang.RuntimeException: Font asset not found fonts/Arial.ttf
        at android.graphics.Typeface.createFromAsset(Typeface.java:965)
        at com.airbnb.lottie.manager.FontAssetManager.getFontFamily(FontAssetManager.java:87)
        at com.airbnb.lottie.manager.FontAssetManager.getTypeface(FontAssetManager.java:61)
        at com.airbnb.lottie.LottieDrawable.getTypeface(LottieDrawable.java:1094)
        at com.airbnb.lottie.model.layer.TextLayer.drawTextWithFont(TextLayer.java:238)
        at com.airbnb.lottie.model.layer.TextLayer.drawLayer(TextLayer.java:161)
        at com.airbnb.lottie.model.layer.BaseLayer.draw(BaseLayer.java:239)
        at com.airbnb.lottie.model.layer.CompositionLayer.drawLayer(CompositionLayer.java:120)
        at com.airbnb.lottie.model.layer.BaseLayer.draw(BaseLayer.java:239)
        at com.airbnb.lottie.LottieDrawable.drawWithOriginalAspectRatio(LottieDrawable.java:1247)
        at com.airbnb.lottie.LottieDrawable.drawInternal(LottieDrawable.java:393)
        at com.airbnb.lottie.LottieDrawable.draw(LottieDrawable.java:383)
        at android.widget.ImageView.onDraw(ImageView.java:1436)
        at android.view.View.draw(View.java:22350)
        at android.view.View.updateDisplayListIfDirty(View.java:21226)
        at android.view.View.draw(View.java:22081)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
        at android.view.View.draw(View.java:22353)
        at android.view.View.updateDisplayListIfDirty(View.java:21226)
        at android.view.View.draw(View.java:22081)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
        at android.view.View.updateDisplayListIfDirty(View.java:21217)
        at android.view.View.draw(View.java:22081)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
        at android.view.View.updateDisplayListIfDirty(View.java:21217)
        at android.view.View.draw(View.java:22081)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
        at android.view.View.updateDisplayListIfDirty(View.java:21217)
        at android.view.View.draw(View.java:22081)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
        at android.view.View.updateDisplayListIfDirty(View.java:21217)
        at android.view.View.draw(View.java:22081)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
        at android.view.View.draw(View.java:22353)
        at com.android.internal.policy.DecorView.draw(DecorView.java:806)
        at android.view.View.updateDisplayListIfDirty(View.java:21226)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:559)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:565)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:642)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:4101)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3828)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3099)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
        at android.view.Choreographer.doCallbacks(Choreographer.java:796)
        at android.view.Choreographer.doFrame(Choreographer.java:731)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
2022-08-31 15:03:59.029 11213-11213/com.reeplayer.android.dev E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

下面是一个问题,将定制字体设置为lottie json文件的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-10-12 10:46:08

您可以这样使用,并确保字体的名称是有效的(小写没有空格)

代码语言:javascript
运行
复制
lottieAnimationView.setFontAssetDelegate(object : FontAssetDelegate() {
    override fun fetchFont(fontFamily: String): Typeface {
        return Typeface.createFromAsset(
            context.assets,
            "fonts/avertastd_regular.otf"
        )
    }
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73555662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档