设置自定义字体

时间:2014-02-25 03:39:33

标签: android fonts

我正在尝试为我的游戏设置自定义字体,但我真的不知道如何。我现在选择字体的方式是使用这种方法

    public void loadFont() {
    font = FontFactory.createStroke(activity.getFontManager(), activity.getTextureManager(), 256, 256, Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD), 50,
            true, Color.WHITE_ABGR_PACKED_INT, 2, Color.BLACK_ABGR_PACKED_INT);
    font.load();
}

其中“Typeface.SANS_SERIF”是字体

如果您知道如何从资源文件夹加载字体,请帮助我吗?谢谢

* *我正在使用AndEngine-GLES2-AnchorCenter

4 个答案:

答案 0 :(得分:2)

yourfont.ttfyourfont.otf添加到Assets的{​​{1}}中并加载自定义字体,例如

Project

答案 1 :(得分:2)

我明白了。这是代码

public void loadFont() {
        font = FontFactory.createStroke(activity.getFontManager(), activity.getTextureManager(), 256, 256, Typeface.create(Typeface.createFromAsset(activity.getAssets(), "fonts/CUSTOMFONTNAME.ttf"), Typeface.BOLD), 50,
                true, Color.TRANSPARENT_ABGR_PACKED_INT, 2, Color.BLACK_ABGR_PACKED_INT);
        font.load();

答案 2 :(得分:0)

嗨,请这样做

   public void loadFont() {
            font = FontFactory.createStroke(activity.getFontManager(), activity.getTextureManager(), 256, 256, Typeface.create(Typeface.createFromAsset(activity.getAssets(), "fonts/CUSTOMFONTNAME.ttf"), Typeface.BOLD), 50,
                    true, Color.TRANSPARENT_ABGR_PACKED_INT, 2, Color.BLACK_ABGR_PACKED_INT);
            font.load();}

如果有任何文本视图而不是

TextView text = (TextView) findViewById(R.id.custom_font);
    Typeface font = Typeface.createFromAsset(getAssets(), "yourfont.ttf");
    text.setTypeface(font);

旁边访问我的博客http://upadhyayjiteshandroid.blogspot.in/2012/12/android-customfont.html并以这种方式执行

Programaticaaly你可以这样做,你可以为每个TextView,Button等创建子类,并在构造函数中应用自定义字体:

public class BrandTextView extends TextView {

      public BrandTextView(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);
      }
     public BrandTextView(Context context, AttributeSet attrs) {
          super(context, attrs);
      }
     public BrandTextView(Context context) {
          super(context);
     }
     public void setTypeface(Typeface tf, int style) {
           if (style == Typeface.BOLD) {
                super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont_Bold.ttf"));
            } else {
               super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont.ttf"));
            }
      }
 }

然后只使用自定义视图而不是标准视图(即BrandTextView而不是TextView)。

<com.your.package.BrandTextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="View with custom font"/>
<com.your.package.BrandTextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textStyle="bold"
         android:text="View with custom font and bold typeface"/>

在你的main.xml中使用这些,你可以使用它们

另一种可能的方式也可以如下

FontHelper.applyFont(context, findViewById(R.id.activity_root), "fonts/YourCustomFont.ttf");

where applyFont method acn be written as follows

public static void applyFont(final Context context, final View root, final String fontName) {
        try {
            if (root instanceof ViewGroup) {
                ViewGroup viewGroup = (ViewGroup) root;
                for (int i = 0; i < viewGroup.getChildCount(); i++)
                    applyFont(context, viewGroup.getChildAt(i), fontName);
            } else if (root instanceof TextView)
                ((TextView) root).setTypeface(Typeface.createFromAsset(context.getAssets(), fontName));
        } catch (Exception e) {
            Log.e(TAG, String.format("Error occured when trying to apply %s font for %s view", fontName, root));
            e.printStackTrace();
        }
    }

请访问以便更好地理解http://vision-apps.blogspot.in/2012/02/android-better-way-to-apply-custom-font.html

答案 3 :(得分:0)

在Andengine-GLES2中,您可以在onCreateResources()中使用自定义字体:

    FontFactory.setAssetBasePath("font/");
    final ITexture fontTexture = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR);

    this.mFont = FontFactory.createFromAsset(this.getFontManager(), fontTexture, activity.getAssets(), "your_font_name.ttf", 40, true, android.graphics.Color.BLACK);       
    this.mFont.load();

您可以这样使用“Typeface.SANS_SERIF”字体:

    this.mFont = FontFactory.create(this.getFontManager(), this.getTextureManager(), 256, 256, Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL), 32);
    this.mFont.load();