Android 使用自定义字体

来源:互联网 发布:java 开发平台 开源 编辑:程序博客网 时间:2024/05/16 11:48

要在其他平台实现自定义字体可谓是相当的麻烦,但是在Android平台就很简单了。

首先将自定义字体放到“assets”下面被实例化之后再使用,字体文件如下图所示。

在程序中通过如下方式实例化自定义字体:

?
1
Typeface.createFromAsset(getContext().getAssets(),"fonts/samplefont.ttf");

下面是Android默认字体和自定义字体的绘制效果:

源代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.yarin.android.Typefaces;    
     
import android.app.Activity;    
import android.content.Context;    
import android.graphics.Canvas;    
import android.graphics.Color;    
import android.graphics.Paint;    
import android.graphics.Typeface;    
import android.os.Bundle;    
import android.view.View;    
     
public class Typefaces extendsActivity    
{    
    /** Called when the activity is first created. */   
    @Override   
    publicvoid onCreate(Bundle savedInstanceState)    
    {    
        super.onCreate(savedInstanceState);    
              
        setContentView(newSampleView(this));    
    }    
          
    privatestatic class SampleView extends View     
    {    
        privatePaint    mPaint = newPaint(Paint.ANTI_ALIAS_FLAG);    
        privateTypeface mFace;    
              
        publicSampleView(Context context)     
        {    
            super(context);    
            //实例化自定义字体    
            mFace = Typeface.createFromAsset(getContext().getAssets(),"fonts/samplefont.ttf");    
            //设置字体大小    
            mPaint.setTextSize(32);    
        }    
              
        @Overrideprotected voidonDraw(Canvas canvas)     
        {    
            canvas.drawColor(Color.WHITE);    
            //绘制默认字体    
            mPaint.setTypeface(null);    
            canvas.drawText("Default:abcdefg",10, 100, mPaint);    
            //绘制自定义字体    
            mPaint.setTypeface(mFace);    
            canvas.drawText("Custom:abcdefg",10, 200, mPaint);    
        }    
    }    
}

好了,就这么简单就实现了自定义字体。

下面是两个非常有用的方法,在这里备份一下:

1
2
3
4
//消除锯齿    
paint.setFlags(Paint.ANTI_ALIAS_FLAG)    
//取得字符串宽度    
paint.measureText()
0 0
原创粉丝点击