在android项目中使用FontAwesome字体

在android项目中使用FontAweSome图标集,可以方便的适配各种屏幕分辨率,不必在各种不同分辨率文件夹中新建资源文件。使用字体是一种很巧妙的方法,把图像以字体的方式呈现,这样以前设置为android:background的属性,现在只需要设置android:text就可一搞定,而且还可一适配不同的分辨率。

在XML文件中设置字体时,只需要指定android:typeface属性即可,但是 这个值只支持系统内置的几种字体。

导入FontAwesome字体,需要在项目中导入第三方字体。方式是在assets目录中新建一个fonts目录,然后将我们需要的ttf文件导入即可。以FontAwesome为例,git clone FontAwesome的地址为https://github.com/FortAwesome/Font-Awesome.git  ,下载之后在提取fonts目录下的fontawesome-webfont.ttf文件拷贝到fonts目录中。

建立一个帮助类:

1 public class FontManager {
2     public static final String root = "fonts/";
3     public static final String FONTAWESOME = root + "fontawesome-webfont.ttf";
4
5     public static Typeface getTypeFace(Context context, String font) {
6         return Typeface.createFromAsset(context.getAssets(), font);
7     }
8
9 }

布局文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:id="@+id/root"
 7     tools:context=".MainActivity">
 8
 9     <LinearLayout
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:layout_alignParentBottom="true"
13         android:orientation="horizontal">
14
15         <TextView
16             android:id="@+id/tv1"
17             android:layout_width="0dp"
18             android:layout_height="45dp"
19             android:layout_weight="1"
20             android:gravity="center"
21             android:textColor="#00BFFF"
22             android:textSize="22sp"
23             android:typeface="monospace"
24             android:text="@string/ambulance"/>
25
26         <TextView
27             android:id="@+id/tv2"
28             android:layout_width="0dp"
29             android:layout_height="45dp"
30             android:layout_weight="1"
31             android:gravity="center"
32             android:textSize="22sp"
33             android:textColor="#87CEFA"
34             android:text="@string/bicycle"/>
35
36         <TextView
37             android:id="@+id/tv3"
38             android:layout_width="0dp"
39             android:layout_height="45dp"
40             android:layout_weight="1"
41             android:gravity="center"
42             android:textSize="22sp"
43             android:textColor="#00CED1"
44             android:text="@string/bus"/>
45         <TextView
46             android:id="@+id/tv4"
47             android:layout_width="0dp"
48             android:layout_height="45dp"
49             android:layout_weight="1"
50             android:gravity="center"
51             android:textSize="22sp"
52             android:textColor="#CD5C5C"
53             android:text="@string/train"/>
54     </LinearLayout>
55 </RelativeLayout>

strings.xml:

1 <resources>
2     <string name="app_name">FontAwesomeMotion</string>
3     <string name="ambulance"></string>
4     <string name="bus"></string>
5     <string name="bicycle"></string>
6     <string name="train"></string>
7 </resources>

在strings.xml的资源文件中,这样资源string,代表了不同的图标。可以通过 http://fortawesome.github.io/Font-Awesome/cheatsheet/  查询具体的图标。

 1 package com.app.motiongear.fontawesomemotion;
 2
 3 import android.graphics.Typeface;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.RelativeLayout;
 8 import android.widget.TextView;
 9
10 import com.app.motiongear.utils.FontManager;
11
12 import java.lang.reflect.Type;
13
14 public class MainActivity extends AppCompatActivity {
15
16     RelativeLayout mContainer;
17
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         final Typeface tf = FontManager.getTypeFace(this, FontManager.FONTAWESOME);
23         mContainer = (RelativeLayout) this.findViewById(R.id.root);
24         for (int i = 0; i < mContainer.getChildCount(); i++) {
25             View currentView = mContainer.getChildAt(i);
26             if (currentView instanceof TextView) {
27                 ((TextView) currentView).setTypeface(tf);
28             }
29         }
30
31     }
32 }

实际的显示效果如下:

时间: 2024-12-15 03:24:26

在android项目中使用FontAwesome字体的相关文章

Android 项目中文件夹的说明与作用(转)

(转自:http://blog.csdn.net/goodshot/article/details/11529731) Android 项目中文件夹的作用 1. src:存放所有的*.java源程序. 2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3. assets:可以存放项目一些较大的资源文件,例如:图片.音乐.字体等. 4. res:可以存放项目中所有的资源文件,例如:图片(*.png.*.jpg).文本等. 5. res\drawable

Android项目中使用类似菊花的Dialog

Android项目中使用类似菊花的Dialog 效果图一: 项目中使用的效果图二: 1.首先定义动画文件 <?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/loading2"

android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

1.下载工具 xstream 下载最新版本地址: https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/ 下载完成后 把jar包导入到自己的android项目中 2.asset 文件夹 下的 aa.xml 文件 <?xml version="1.0" encoding="UTF-8"?><product>    <name>

Android第4坑:Android项目中使用lambda表达式

Android项目中使用lambda表达式或Java8新特性,需要在app/build.gradle中添加如下配置 android { ... defaultConfig { ... jackOptions.enabled = true } compileOptions{ sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_8 targetCompatibility org.gradle.api.JavaVersion.VERSION

Android项目中自定义顶部标题栏

Android项目中自定义顶部标题栏 下面给大家详细介绍android中自定义顶部标题栏的思路及实现方式 先来图:     思路及实现步骤 1.定义标题栏布局 2.自定义TitleActivity控制标题栏按钮监听 3.在TitleActivity中实现标题栏以下内容切换 首先定义标题栏 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/

Android 项目中执行java的main方法

Android 项目中执行java的main方法 导语 今日,在android项目中写了一个工具类,为了简单测试一下输出,就只直接在类中加上了main方法,于是问题来了: 解决方法是网上找到了,已经解决了,在此记录一下. 右击项目名,调出Properties窗口,打开Run/Debug Settings 标签,右边即列出了这个项目中含有main方法的所有java类,双击你要允许的java类:

Android项目中gen文件下R文件无法生成的解决的方法

帮一个网友解决R文件无法生成的问题,搜集了些材料特整理例如以下,刚開始学习的人參考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen文件夹无法更新,或者gen文件夹下的R.JAVA文件无法生成 1.gen文件夹的用处 android gen文件夹下的R.java并非由用户创建,而是androidproject本身将android的资源进行自己主动"编号"(ID)值. 2.gen文件夹下R文件无法更新/生成的原因 1)res文件夹下的layout下的xml文件名

Android项目中的R文件丢失

Android项目中的R文件丢失恢复的方法如下: (1).修改xml文件命名中的大写字母 (2).选中项目,点击 Project - Clean , 清理一下项目: (3).从别的工程中拷贝一份R文件过来,然后string.xml里随便改动一下,也可更新R文件. (4).右击你的工程(项目)-->Properties-->Android --> 选择相应的target 然后 点击 apply 即可.

Android项目中JNI技术生成并调用.so动态库实现详解

生成 jni方式有两种:一种是通过SWIG从C++代码生成过度的java代码:另一种是通过javah的方式从java代码自动生成过度的C++代码.两种方式下的步骤流程正好相反. 第一种方式:由于需要配置SWIG环境,有点麻烦了,所以往往大家不采用这个途径,参照博文http://my.oschina.net/liusicong/blog/314162. 第二种方式:javah的方式则通过shell指令就可以完成整个流程,该过程大概包括以下步骤: 编写 Java 代码.我们将从编写 Java 类开始