问题是调用Typeface.createFromAsset().
我已经减少了创建字体工厂的功能,因此每个字体类型调用一次Typeface.createFromAsset().
字体工厂将字体保存在散列映射中,并且可以解决这个问题.
我在这个链接上找到了解决方案并进行了一些调整:
http://www.levinotik.com/2011/09/22/custom-fonts-in-android-can-cause-issues-heres-how-to-fix-it/
这就是我实现它的方式.
public class FontFactory {
private static FontFactory instance = new FontFactory();
private HashMap<String, Typeface> fontMap = new HashMap<String, Typeface>();
private FontFactory() {
}
public static FontFactory getInstance() {
return instance;
}
public Typeface getFont(String font) {
Typeface typeface = fontMap.get(font);
if (typeface == null) {
typeface = Typeface.createFromAsset(MyApplication.getApplicationContext().getResources().getAssets(), "fonts/" + font);
fontMap.put(font, typeface);
}
return typeface;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2677 次 |
最近记录: |