Android开发之字体设置

默认字体

Android SDK自带了四种字体:"normal"“monospace",“sans”, “serif”,如下:

 

Android开发之字体设置_第1张图片

字体

 

看这四兄弟长的还是蛮像,我是看不出多大差别。。。

设置方式

1.通过XML文件设置


2.Java代码中设置

    TextView txtNormal = (TextView) findViewById(R.id.txt_normal);
    txtNormal.setTypeface(Typeface.MONOSPACE);

设置第三方字体

Res中使用

右键选择项目的app / res文件夹,然后选择New > Android resource directory。

 

Android开发之字体设置_第2张图片

image.png

Resource type中选择font,File name名为font。

 

Android开发之字体设置_第3张图片

image.png

将字体文件拷贝到font中

 

Android开发之字体设置_第4张图片

image.png

java代码中使用

    TextView txtNormal = (TextView) findViewById(R.id.txt_helvetica);
    Typeface typeface = ResourcesCompat.getFont(this, R.font.helvetica);
    txtNormal.setTypeface(typeface);

Assets中使用

新建Assets及fonts目录,并将字体文件拷贝到fonts目录下

 

拷贝字体

 

在java代码中使用

    TextView txtNormal = (TextView) findViewById(R.id.txt_helvetica);
    Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/helvetica.ttf");
    txtNormal.setTypeface(typeface);

第三方框架全局字体设置

这里推荐一个第三方字体设置库Calligraphy,详细可以点击连接

添加依赖

 compile 'uk.co.chrisjenx:calligraphy:2.3.0'

新建Application

public class BaseApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
            .setDefaultFontPath("fonts/Helvetica.ttf")
            .setFontAttrId(R.attr.fontPath)
            .build()
    );
}

}
在Activity中重写attachBaseContext方法

  @Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

在xml中使用

      

如果fontPath="fonts/Helvetica.ttf"报错,在View上添加 tools:ignore="MissingPrefix”即可。
其他具体功能,详见Calligraphy

你可能感兴趣的:(选择器以及界面UI相关,技术总结,屏幕适配,解析HTML)