我可以在Canvas中使用哪些字体用于文本,如何获得粗体样式?

时间:2013-06-06 10:50:31

标签: android

我在画布中使用这样的文字:

paintTextTime.setAntiAlias(true);
paintTextTime.setColor(Color.WHITE);
paintTextTime.setTextSize(60);
canvas.drawText(stringPlayTime, 220, 180, paintTextTime);

我的问题是如何知道我可以使用哪种字体以及如何将字体样式设置为粗体?

3 个答案:

答案 0 :(得分:3)

您可以通过加载新的TypeFace轻松更改字体。您可以将任何TTF字体放在您的资源文件夹中并使用以下命令加载它:

Typeface.createFromAsset(context.getAssets(), "myfont.ttf");

我建议您将加载的字体缓存到prevent memory leaks on older Android versions

public class FontCache {

    private static Hashtable<String, Typeface> fontCache = new Hashtable<String, Typeface>();

    public static Typeface get(String name, Context context) {
        Typeface tf = fontCache.get(name);
        if(tf == null) {
            try {
                tf = Typeface.createFromAsset(context.getAssets(), name);
            }
            catch (Exception e) {
                return null;
            }
            fontCache.put(name, tf);
        }
        return tf;
    }
}

并像这样使用它:

Typeface tf = FontCache.get(context, "myfont.ttf");
Paint paint = new Paint();
paint.setTypeface(tf);
canvas.drawText("Lorem ipsum", 0, 0, paint);

答案 1 :(得分:1)

Google android typefaceThis是第一个结果,很可能是您正在寻找的。

答案 2 :(得分:0)

您可以使用以下代码

Typeface tf = Typeface.create("Helvetica",Typeface.BOLD);

Paint paint = new Paint();

paint.setTypeface(tf);

canvas.drawText("Sample text in bold Helvetica",0,0,paint);