睡眠助理项目里添加了今日诗词(今日诗词开放接口)显示。为了达到显示效果,应用内设置方正舒体字体。 今天记录一下集成今日诗词的过程及设置字体的方案。 集成今日诗词直接根据接口文档进行即可,由于我进行Android应用开发,所以参考“安卓 SDK”。 通过Gradle方式,首先添加依赖:
implementation 'com.jinrishici:android-sdk:1.5'
然后再Application中进行初始化:
//今日诗词初始化
JinrishiciFactory.init(getAppContext());
最后在Activity中调用接口获取诗词数据:
JinrishiciClient client = JinrishiciClient.getInstance();
client.getOneSentenceBackground(new JinrishiciCallback() {
@Override
public void done(PoetySentence poetySentence) {
DataBean dataBean = poetySentence.getData();
if(dataBean != null) {
String shici = poetySentence.getData().getContent();
if (!TextUtils.isEmpty(shici)) {
// 遇见逗号换行显示
shici = shici.replaceAll(",|,", ",\n");
mTvJinRiShiCi.setText(shici);
}
}
}
@Override
public void error(JinrishiciRuntimeException e) {
Log.d("111111", "error: code = " + e.getCode() + " message = " + e.getMessage());
}
});
实际调用中,发现有两点需要注意: 1.获取诗词需要联网,所以需要添加网络权限。 2.实际使用发现调试模式功能正常,但是打出正式包时无法显示,且没有错误信息。经定位发现是没有添加混淆配置:
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.jinrishici.sdk.android.model.** { *; }
这样今日诗词配置就完成了。
下面研究一下配置自定义字体,我们以方正舒体(FZSTK.TTF)为例。 首先下载字体文件(.TTF)。若是Windows系统,也可以到系统查询相关文件,字体文件路径在:C:\Windows\Fonts 然后将字体放在项目中assets资源路径下,可以在assets内新建一个fonts资源文件夹,将字体文件放到该路径下。 最后为TextView设置字体显示:
mTvJinRiShiCi = (TextView)headerView.findViewById(R.id.tv_nav_header_jinrishici);
//从asset 读取字体
AssetManager mgr = getAssets();
Typeface tf = Typeface.createFromAsset(mgr, "fonts/FZSTK.TTF");//仿宋
mTvJinRiShiCi.setTypeface(tf);
这样,字体设置就完成了。
诗词及字体效果参考睡眠助理项目。
网友评论