整个应用程序的Roboto字体

时间:2013-11-20 12:03:11

标签: android performance typeface

我正在尝试使用Roboto Typeface进行整个应用程序。创建字体对象并将其应用于所有需要的字段,但由于每个TextView上的字段数量增加了findViewId(),因此Button会降低性能。 我正在尝试进行配置,因为他们大多数建议在互联网上,但我无法使用Roboto。我认为“sans-serif-light”没有得到承认。

请建议采用哪种方法。

1 个答案:

答案 0 :(得分:0)

创建一个类

public class CustomTextView extends TextView {
static Typeface Roboto_Bold = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Bold.ttf");
static Typeface Roboto_Regular = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Regular.ttf");

并在构造函数中添加以下代码,在整个应用程序中使用CustomTextView而不是TextView

try {
    int style = getTypeface().getStyle();
    if (style == (Typeface.BOLD)) {
      isBold = true;
    }
 } catch (Exception e) {
    e.printStackTrace();
}
if (isBold)
      this.setTypeface(Roboto_Bold);
else
       this.setTypeface(Roboto_Regular);

-----更新,

我最近发现自定义字体将以大量内存消耗存储在本机内存中。因此,在自定义TextView类中创建字体将在很大程度上填充本机内存(在我的情况下为300 Mb)取决于创建TextView实例的数量。

因此,最好创建一个TextView引用的静态字体对象,从而减少内存消耗(在我的情况下为20 Mb)

如果你有多个使用字体的自定义视图,请考虑全局静态字体