FontAwesome 在Android中的使用

本篇文章来记录下FontAweSome 在Android开发中的使用

效果

下载FontAweSome字体

  首先,要去下载fontAweSome字体。百度一下就可以找到,如果你找不到,请点击这里下

在工程中使用

将下载好的.ttf文件放入assets中

布局

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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ll_container"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
android:id="@+id/tv_hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/fa_info"
android:textColor="#009688"
android:textSize="100sp" />
<TextView
android:id="@+id/tv_poo"
android:layout_gravity="center"
android:text="@string/fa_chart"
android:textColor="#DAA520"
android:textSize="40sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</LinearLayout>

  可以看到布局文件中使用的TextView引用的外部string.可以是strings.xml文件也可以是你再values文件夹中新建的.xml文件。
至于这个字符串怎么找的,可以去fontawesome的图标网上找到对应图标的字符串。

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="fa_chart">&#xf201;</string>
<string name="fa_info">&#xf2b9;</string>
</resources>

代码中:

1
2
3
4
5
Typeface font = Typeface.createFromAsset(getAssets(),"fontawesome-webfont.ttf");
TextView textView= (TextView) findViewById(R.id.tv_hello);
textView.setTypeface(font);
TextView tvPoo = findViewById(R.id.tv_poo);
FontManager.fontIcon(tvPoo,this);

可以这样写。
但是如果控件比较多的话,那么就稍微有些麻烦。这里通过FontManager类来统一设置

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
/**
* Created by Kevin on 2018/7/9.
* <p>
* Blog:http://student9128.top/
* CSDN:https://blog.csdn.net/student9128
* <p/>
*/
public class FontManager {
public static void fontIcon(View v, Context context) {
Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fontawesome-webfont" +
".ttf");
if (v instanceof ViewGroup) {
for (int i=0;i<((ViewGroup) v).getChildCount();i++) {
View child = ((ViewGroup) v).getChildAt(i);
fontIcon(child,context);
}
} else if (v instanceof TextView) {
((TextView) v).setTypeface(typeface);
} else if (v instanceof Button) {
((Button) v).setTypeface(typeface);
} else if (v instanceof EditText) {
((EditText) v).setTypeface(typeface);
}
}
}

使用方法:

1
2
LinearLayout llContainer = findViewById(R.id.ll_container);
FontManager.fontIcon(llContainer,this);