因为实习的公司还有本身的一个项目都对图标有着各类各样的需求,除了个性话的图标之外,咱们的项目每每还须要一些简单的图标来显得不是那么单调。可是传统的引用Icon操做起来过于麻烦,须要考虑图标过多直接引用的内存过大问题,图标的尺寸和颜色每每也不可以自定义,为此,咱们借鉴Web前端的经验,考虑使用字体图标;前端
源代码在文章最后有下载连接,不用分就可下载。android
什么是字体图标呢?git
字体相信你们都懂,Windows下的ttf文件就是咱们最多见的字体文件,经过应用字体图标,咱们在text中输出特定的字符时字体文件就会将其解析成特定的图标。github
在这里我以fontAwesome字体图标为例作一个示例,固然,能用的字体图标也不止此一种,你们能够用这种方法使用本身须要的字体图标库:web
一,咱们首先在Github上的FontAwesome项目下下载fontawesome-webfont.ttf文件,这是咱们后面要用的字体文件:ide
项目地址:https://github.com/FortAwesome/Font-Awesome字体
咱们能够在FontAwesome的网站上查看其包含的图标:网站
网站地址:http://fortawesome.github.io/Font-Awesome/this
将fontawesome-webfont.ttf文件复制到项目的assets目录中一边使用.net
二,为了让图标不单单只是在TextView中使用,咱们但愿可以将FontIcon变成Drawable类型的对象,这样咱们就能够更加灵活的使用了;
将FontIcon转成Drawable有一个开源项目支持 项目地址:https://github.com/shamanland/fonticon
使用方法: 首先在程序的入口(我这个程序是在Application类中)初始化:
public class App extends Application { @Override public void onCreate() { super.onCreate(); FontIconTypefaceHolder.init(getAssets(), "fontawesome-webfont.ttf"); } }
完成以后咱们定义一个名为font-icon的XML文件引用字符图标:
<font-icon xmlns:android="http://schemas.android.com/apk/res-auto" android:text="@string/fa_star" android:textSize="64dp" android:textColor="#0099cc" />
这里咱们用了Font Awesome中的Star图标,图标对应的String在项目源码的String source文件中
在MainActivity中解析FontIcon成Drawable类型,而后将其应用到一个ImageView上
ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Drawable icon = FontIconDrawable.inflate(this, R.xml.font_icon); imageView=(ImageView)findViewById(R.id.image); imageView.setImageDrawable(icon); }
至此,一个简单的FontIcon引用就完成了,你能够将其应用到任何可使用Drawable的控件中,也能够自由改变其尺寸和颜色
示例的效果:
在项目中的效果:
内存使用状况: