- Typeface.createFromAsset(getContext().getAssets(),"fonts/samplefont.ttf");
- 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 extends Activity
- {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(new SampleView(this));
- }
- private static class SampleView extends View
- {
- private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- private Typeface mFace;
- public SampleView(Context context)
- {
- super(context);
- //实例化自定义字体
- mFace = Typeface.createFromAsset(getContext().getAssets(),"fonts/samplefont.ttf");
- //设置字体大小
- mPaint.setTextSize(32);
- }
- @Override protected void onDraw(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);
- }
- }
- }
- //消除锯齿
- paint.setFlags(Paint.ANTI_ALIAS_FLAG)
- //取得字符串宽度
- paint.measureText()
1、Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace
2、在Android中可以引入其他字体 。
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:Android="http://schemas.android.com/apk/res/android" Android:layout_width="fill_parent" Android:layout_height="fill_parent" > <TableRow> <TextView Android:layout_marginRight="4px" Android:text="sans:" Android:textSize="20sp" > </TextView> <!-- 使用默认的sans字体 --> <TextView Android:id="@+id/sans" Android:text="Hello,World" Android:textSize="20sp" Android:typeface="sans" > </TextView> </TableRow> <TableRow> <TextView Android:layout_marginRight="4px" Android:text="serif:" Android:textSize="20sp" > </TextView> <!-- 使用默认的serifs字体 --> <TextView Android:id="@+id/serif" Android:text="Hello,World" Android:textSize="20sp" Android:typeface="serif" > </TextView> </TableRow> <TableRow> <TextView Android:layout_marginRight="4px" Android:text="monospace:" Android:textSize="20sp" > </TextView> <!-- 使用默认的monospace字体 --> <TextView Android:id="@+id/monospace" Android:text="Hello,World" Android:textSize="20sp" Android:typeface="monospace" > </TextView> </TableRow> <!-- 这里没有设定字体,我们将在Java代码中设定 --> <TableRow> <TextView Android:layout_marginRight="4px" Android:text="custom:" Android:textSize="20sp" > </TextView> <TextView Android:id="@+id/custom" Android:text="Hello,World" Android:textSize="20sp" > </TextView> </TableRow> </TableLayout>// 得到TextView控件对象 TextView textView = (TextView) findViewById(R.id.custom); // 将字体文件保存在assets/fonts/目录下,www.linuxidc.com创建Typeface对象 Typeface typeFace = Typeface.createFromAsset(getAssets(),"fonts/DroidSansThai.ttf"); // 应用字体 textView.setTypeface(typeFace);如果想对整个界面的所有控件都应用自定义字体,可以:
package
arui.blog.csdn.net;
import
android.app.Activity;
import
android.graphics.Typeface;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.TextView;
public
class
FontManager {
public
static
void
changeFonts(ViewGroup root, Activity act) {
Typeface tf = Typeface.createFromAsset(act.getAssets(),
"fonts/xxx.ttf"
);
for
(
int
i =
0
; i < root.getChildCount(); i++) {
View v = root.getChildAt(i);
if
(v
instanceof
TextView) {
((TextView) v).setTypeface(tf);
}
else
if
(v
instanceof
Button) {
((Button) v).setTypeface(tf);
}
else
if
(v
instanceof
EditText) {
((EditText) v).setTypeface(tf);
}
else
if
(v
instanceof
ViewGroup) {
changeFonts((ViewGroup) v, act);
}
}
}
}