这个事情的原理是这样的:Android系统官方是不支持修改系统默认字体的,所有能够修改的情况都是OEM产商修改了framework层的代码,同时集成了高权限的预安装应用服务。
怎么做的呢?
其实很简单:修改android.content.res.Configuration类,Configuration类保存系统级别影响所有的Activity View显示的设置。如果Configuration类有改变,则会自动重新启动所有的Activity。
比方说,可以加一个String fontPath或者Typeface typeface属性。(官方默认的只有fontSize)
添加的属性对于外部应用而言是不可见的,因为外部普通应用只能基于官方的Android SDK编译。解决方法是通过Java动态反射调用。
那么,外部应用初始启动时如何获取当前的Configuration对象实例呢?
很简单:Activity(Context) --> getResources()得到Resources对象 --> getConfiguration():OK。