首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android EditText中使用自定义字体时,如何提高性能?

在Android EditText中使用自定义字体时,如何提高性能?
EN

Stack Overflow用户
提问于 2011-12-02 22:56:01
回答 1查看 1.2K关注 0票数 0

我正在使用.ttf字体在安卓系统中自定义一个TextView,使用:

代码语言:javascript
运行
复制
Typeface handType = Typeface.createFromAsset ( getContext().getAssets(), "fonts/JOURNAL.TTF");

问题是,当它进入编辑模式时,字符不会像默认的内置字体那样立即出现在屏幕上,但它们需要一段时间才能呈现,虽然简短,但足以让人感觉迟钝。

有没有什么技术(缓存等)可以帮助我即时渲染字体?

我还注意到,延迟因字体而异,并且似乎随着字体复杂性的增加而变得最差

EN

回答 1

Stack Overflow用户

发布于 2013-11-15 17:17:00

您可以尝试使用工厂。这真的更好,因为我们不会每次都分配字体。

代码语言:javascript
运行
复制
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;
}

}

要点:https://gist.github.com/odemolliens/4d5ff5630b6317397956

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8358162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档