我在Android中使用.ttf字体自定义TextView
,使用:
Typeface handType = Typeface.createFromAsset ( getContext().getAssets(), "fonts/JOURNAL.TTF");
问题是,当它进入编辑模式时,字符不会像默认的内置字体那样立即出现在屏幕上,但是它们需要一些时间来渲染,短暂但足以让它感觉迟钝。
是否有任何技术(缓存等)可以帮助我立即呈现字体?
同时注意到延迟因字体而异,并且字体复杂性似乎变得最差
答案 0 :(得分:1)
您可以尝试使用工厂。这真的更好,因为我们不会每次都分配字体。
import java.util.HashMap;
import android.content.Context;
import android.graphics.Typeface;
import android.util.Log;
public class FontFactory {
private static FontFactory instance;
private HashMap<String, Typeface> fontMap = new HashMap<String, Typeface>();
private Context context;
private FontFactory(Context context) {
this.context = context.getApplicationContext();
}
public static FontFactory getInstance(Context context) {
if(instance == null){
return instance = new FontFactory(context);
} else {
return instance;
}
}
public Typeface getFont(String font) {
Typeface typeface = fontMap.get(font);
if (typeface == null) {
try {
typeface = Typeface.createFromAsset(context.getResources().getAssets(), "fonts/" + font);
fontMap.put(font, typeface);
} catch (Exception e) {
Log.e("FontFactory", "Could not get typeface: " + e.getMessage() + " with name: " + font);
return null;
}
}
return typeface;
}
}