Android第三方启动页库自定义字体无法修改问题求助
问题汇总
- 项目以启动页为初始Activity,初次使用AwesomeSplashScreen库时,
titleFont属性要求传入String类型参数,无法适配本地Int类型的字体资源ID、Typeface对象,尝试将资源转字符串传入始终报assets目录相关错误 - AwesomeSplashScreen发布时间较早,遵循旧版Android开发规范要求字体存放于assets目录,手动新建assets目录放入字体后问题仍未解决
- 更换Splashy库时遇到依赖兼容问题:
- 引入
implementation 'com.github.rahuldange09:Splashy:v1.1.0'可正常运行,但无修改字体的开放接口 - 引入
implementation 'com.rbddevs.splashy:splashy:1.3.0'时无法识别、导入Splashy类,完全无法使用
- 引入
解决方案
方案1:继续使用AwesomeSplashScreen的正确字体配置
注意:该库的字体读取逻辑固定从应用assets目录读取文件,不支持res/font目录下的字体资源,按以下步骤配置即可生效:
- 确认assets目录层级正确:在对应业务模块的
src/main/路径下新建assets文件夹,与java、res目录同级,不要建在res目录或其他子目录下 - 将目标字体文件(如
title_font.ttf)直接放在assets根目录,若要新建子目录存放,传入属性值时要补全子目录路径,容易出错不推荐 - 配置
titleFont时直接传入字体文件名字符串即可,无需额外加路径前缀,参考代码:
AwesomeSplashScreen.Builder(this) .title("应用名称") .titleFont("title_font.ttf") // 其余启动页配置(背景色、logo、动画时长、跳转目标页等) .show()
如果仍报assets相关错误,逐一排查:字体文件名大小写是否和实际一致、文件后缀是否填写正确(不要把otf误写为ttf)、assets目录是否在正确的模块路径下。
方案2:修复Splashy 1.3.0版本依赖问题并配置自定义字体
1.3.0版本无法识别类的核心原因是未配置对应maven仓库,按以下步骤处理:
- 先在项目级
settings.gradle(旧版Android Studio项目为项目级build.gradle)的repositories配置块中添加jitpack仓库配置,同步gradle后即可正常导入Splashy类 - 该版本支持直接传入Typeface对象设置字体,不需要将字体放到assets目录,直接引用res/font下的字体资源即可,参考代码:
val customTypeface = ResourcesCompat.getFont(this, R.font.app_title_font) Splashy(this) .setTitle("应用名称") .setTitleTypeface(customTypeface) // 其余启动页配置 .show()
方案3:无依赖原生实现(推荐)
如果第三方库兼容成本过高,直接用原生API实现启动页即可,代码量极低且完全可控,不会出现版本兼容、接口缺失问题:
- 新建一个空Activity作为启动入口Activity,布局中放置logo控件、标题TextView,TextView直接通过
android:fontFamily="@font/app_title_font"属性引用res/font目录下的字体资源,不需要额外写代码加载字体 - 给启动页加2-3秒的延时逻辑,时间到后跳转到主Activity并finish掉启动页即可,所有样式、动画、字体都可以直接通过布局或原生API配置,没有限制。
内容的提问来源于stack exchange,提问作者Mahmoud Reda
相关产品推荐
相关产品推荐

