对于SVG,安卓可以试用vector可以引入到drawable里,就可以直接相当于图片使用,但是这样做会造成颜色控制困难,导致效率并不高。所以可以直接将值封装成字体包的形式,直接设置textColor就好了。想变红就不会变绿。
Iconfont目的在使用SVG的时候引入字体包,如果再项目中引用纯色图片,使用SVG会达到一个高效的目的,长话短说,直接开始说,怎么用。
这里,讲解的是阿里巴巴矢量库里的iconfont。
百度搜索—-iconfont 会出来阿里巴巴矢量库的链接哦,注册,登录,然后创建项目。
好,我们上传了我们需要的SVG后,并且下载了生成好的压缩包,我们预览一下。
现在对我们有用的,是ttf文件,还有unicode.html文件,这2个,一个是主文件,另外一个,知识为了让你去知道,内部字体的编码,以及编码之前的命名。我们现在打开unicode.html,我使用的是editplus。直接查看的源代码,你也可以用记事本打开。
如果直接使用的话,你也可以参考阿里巴巴的文档,是相当简单的。并且也是很好用的。
下面的链接指向阿里巴巴的帮助文档
http://www.iconfont.cn/plus/help/detail?helptype=code
如果你有更多的需求。比如将之以drawble的形式导出,或者在imageview中使用字体包,或者使用一些三方的字体包的话。那么可以考虑引入下关于svg的插件。这里介绍的是Android-Iconics
https://github.com/mikepenz/Android-Iconics
这里有英文的文档及项目的demo。如果你嫌看英文文档累。那么,你就慢慢的听我说吧。
如果你不需要google这些标准的iconfont,而直接使用自己的icon。。那么你只需要引入
compile ‘com.mikepenz:iconics-core:2.8.1@aar’ 就够了
首先把ttf文件放到下图的位置
然后上我的配置文件吧
public class MyIcon implements ITypeface {
private static final String TTF_FILE = "iconfont.ttf";
private static Typeface typeface = null;
private static HashMap<String, Character> mChars;
@Override
public IIcon getIcon(String key) {
return Icon.valueOf(key);
}
@Override
public HashMap<String, Character> getCharacters() {
if (mChars == null) {
HashMap<String, Character> aChars = new HashMap<String, Character>();
for (Icon v : Icon.values()) {
aChars.put(v.name(), v.character);
}
mChars = aChars;
}
return mChars;
}
@Override
public String getMappingPrefix() {
return "con";
}