原理
FontAwesome 图标集背后的思想非常简单,图标被视为字符(character)。你选择列表中的一个图标,记下它的Unicode的字符,在TextView中使用它告诉安卓使用FontAwesome字体来渲染。
你可以在下面的链接中找到所需要的图标。
添加依赖
在build.gradle添加依赖,这样Android Studio自动帮你下载依赖包。
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:design:23.0.0'
//android-iconify
compile 'com.joanzapata.iconify:android-iconify-fontawesome:2.1.1' // (v4.5)
compile 'com.joanzapata.iconify:android-iconify-entypo:2.1.1' // (v3,2015)
compile 'com.joanzapata.iconify:android-iconify-typicons:2.1.1' // (v2.0.7)
compile 'com.joanzapata.iconify:android-iconify-material:2.1.1' // (v2.0.0)
compile 'com.joanzapata.iconify:android-iconify-material-community:2.1.1' // (v1.2.65)
compile 'com.joanzapata.iconify:android-iconify-meteocons:2.1.1' // (latest)
compile 'com.joanzapata.iconify:android-iconify-weathericons:2.1.1' // (v2.0)
compile 'com.joanzapata.iconify:android-iconify-simplelineicons:2.1.1' // (v1.0.0)
compile 'com.joanzapata.iconify:android-iconify-ionicons:2.1.1' // (v2.0.1)
}
加载使用
在Android view中要使用图标,需要在activity的中onCreate()中加载:
package com.example.fengge.shuttlebus;
import android.app.TabActivity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;
import com.joanzapata.iconify.IconDrawable;
import com.joanzapata.iconify.Iconify;
import com.joanzapata.iconify.fonts.EntypoModule;
import com.joanzapata.iconify.fonts.FontAwesomeIcons;
import com.joanzapata.iconify.fonts.FontAwesomeModule;
import com.joanzapata.iconify.fonts.IoniconsModule;
import com.joanzapata.iconify.fonts.MaterialCommunityModule;
import com.joanzapata.iconify.fonts.MaterialModule;
import com.joanzapata.iconify.fonts.MeteoconsModule;
import com.joanzapata.iconify.fonts.SimpleLineIconsModule;
import com.joanzapata.iconify.fonts.TypiconsModule;
import com.joanzapata.iconify.fonts.WeathericonsModule;
public class MainActivity extends TabActivity implements TabHost.OnTabChangeListener {
public static MainActivity mTabActivityInstance;
private TabHost tabHost;
private Resources res;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.home_tab);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Iconify
.with(new FontAwesomeModule())
.with(new EntypoModule())
.with(new TypiconsModule())
.with(new MaterialModule())
.with(new MaterialCommunityModule())
.with(new MeteoconsModule())
.with(new WeathericonsModule())
.with(new SimpleLineIconsModule())
.with(new IoniconsModule());
tabHost = getTabHost();
res = getResources();
TabHost.TabSpec spec;
// setTitle(res.getText(R.string.app_name));
mTabActivityInstance=this;
//加载底部Tab布局
LinearLayout tab1 = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.action_item, null);
ImageView icon1 = (ImageView) tab1.findViewById(R.id.icon);
// icon1.setBackgroundResource(R.drawable.home36);
icon1.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_home)
.colorRes(android.R.color.white)
.actionBarSize());
TextView title1 = (TextView) tab1.findViewById(R.id.title);
title1.setText(res.getText(R.string.activity_home_tab_name));
title1.setTextColor(Color.rgb(255, 255, 255));
LinearLayout tab2 = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.action_item, null);
ImageView icon2 = (ImageView) tab2.findViewById(R.id.icon);
// icon2.setBackgroundResource(android.R.drawable.ic_menu_search);
icon2.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_search)
.colorRes(android.R.color.white)
.actionBarSize());
TextView title2 = (TextView) tab2.findViewById(R.id.title);
title2.setText(res.getText(R.string.activity_search_tab_name));
title2.setTextColor(Color.rgb(255, 255, 255));
LinearLayout tab3 = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.action_item, null);
ImageView icon3 = (ImageView) tab3.findViewById(R.id.icon);
icon3.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_tasks)
.colorRes(android.R.color.white)
.actionBarSize());
TextView title3 = (TextView) tab3.findViewById(R.id.title);
title3.setText("登记");
title3.setTextColor(Color.rgb(255, 255, 255));
LinearLayout useInfoTab = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.action_item, null);
ImageView userIcon = (ImageView) useInfoTab.findViewById(R.id.icon);
userIcon.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_user)
.colorRes(android.R.color.white)
.actionBarSize());
TextView userTitle = (TextView) useInfoTab.findViewById(R.id.title);
userTitle.setText(res.getText(R.string.activity_user_tab_name));
userTitle.setTextColor(Color.rgb(255, 255, 255));
// 加载TabSpec
tabHost.setup(getLocalActivityManager());
spec = tabHost.newTabSpec("Home")
.setIndicator(tab1)
.setContent(new Intent(this, HomeActivity.class));
tabHost.addTab(spec);
spec = tabHost.newTabSpec("Register")
.setIndicator(tab3)
.setContent(new Intent(this, BookingTicketActivity.class));
tabHost.addTab(spec);
spec = tabHost.newTabSpec("Search")
.setIndicator(tab2)
.setContent(new Intent(this, SearchActivity.class));
tabHost.addTab(spec);
// me
spec = tabHost.newTabSpec("UseInfo")
.setIndicator(useInfoTab)
.setContent(new Intent(this, UserInfoActivity.class));
tabHost.addTab(spec);
TabWidget tw = tabHost.getTabWidget();
tw.setBackgroundResource(android.R.drawable.screen_background_dark);
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
processTabChanged(tabId);
}
});
tabHost.setCurrentTab(0);
processTabChanged("Home");
}
public void processTabChanged(String tabId) {
clearTabBackgroundColor();
View currentTabView = tabHost.getCurrentTabView();
ImageView icon = (ImageView) currentTabView.findViewById(R.id.icon);
TextView title = (TextView) currentTabView.findViewById(R.id.title);
title.setTextColor(getResources().getColor(android.R.color.holo_blue_bright));
Log.v("tabId", tabId);
if (tabId.equalsIgnoreCase("Home")) {
icon.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_home)
.colorRes(android.R.color.holo_blue_bright)
.actionBarSize());
} else if (tabId.equalsIgnoreCase("Search")) {
icon.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_search)
.colorRes(android.R.color.holo_blue_bright)
.actionBarSize());
} else if (tabId.equalsIgnoreCase("Register")) {
icon.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_tasks)
.colorRes(android.R.color.holo_blue_bright)
.actionBarSize());
} else {
icon.setImageDrawable(new IconDrawable(this, FontAwesomeIcons.fa_user)
.colorRes(android.R.color.holo_blue_bright)
.actionBarSize());
}
}
private void clearTabBackgroundColor() {
int tabCount = tabHost.getTabWidget().getTabCount();
FontAwesomeIcons[] iconses = new FontAwesomeIcons[]{FontAwesomeIcons.fa_home, FontAwesomeIcons.fa_tasks, FontAwesomeIcons.fa_search, FontAwesomeIcons.fa_user};
for (int i = 0; i < tabCount; i++) {
ImageView icon = (ImageView)tabHost.getTabWidget().getChildTabViewAt(i).findViewById(R.id.icon);
icon.setImageDrawable(new IconDrawable(this, iconses[i])
.colorRes(android.R.color.white)
.actionBarSize());
TextView title = (TextView) tabHost.getTabWidget().getChildTabViewAt(i).findViewById(R.id.title);
title.setTextColor(getResources().getColor(android.R.color.white));
}
}
@Override
public void onTabChanged(String tabId) {
Log.v("onTabChanged", tabId);
}
}