您的位置:首页 > 移动开发 > Android开发

安卓中如何使用iconfont字体图标

2017-03-01 16:44 946 查看

先来说一下字体图标的优缺点吧~

优点:

1. 可以高度自定义图标的样式(包括大小和颜色),对于个人开发者尤其适用

2. 可以减少项目和安装包的大小(特别你的项目中有很多图片icon时,效果将是M级)

3. 几乎可以忽略屏幕大小和分辨率,做到更好的适配

4. 使用简单

……

缺点:

1. 只能是一些简单的icon,不能代替如背景图、9图等资源

2. 一些需要文字说明的icon,图片资源将会是更好的选择

3. 对设计的要求更高,不同icon可能拥有不同的边距,这时要切换icon时还要设置大小

4. 由于边距的存在可能存在无法填满控件的情况

5. 无法在Android studio中进行实时预览

iconfont对于客户端应用来说有很多便捷:

1、自由变化大小

2、自由修改颜色

3、可以添加一些视觉效果如:阴影、旋转、透明度。

4、比单位的图片更节省资源


操作步骤

第一步:.首先去http://www.iconfont.cn/图标库选择自己要用的图标下载,下载后得到个压缩文件并解压,最后得到一个压缩文件,解压后得到如下文件,其实我们需要的只有两个,就是我框出的那两个文件



有一些不是你下载,你不知道unicode的图标可以下载 Fontlab stadio 这个软件去查看对应的unicode
第二步:打开 res/values/strings.xml,添加
string 值;
<string name="icon"></string>
第三步:打开 activity_main.xml,添加 string 值到 TextView:在这里你可以调整图标的大小,颜色
<TextView
android:id="@+id/text"
android:textColor="@color/colorPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/icon" />


第四步:在MainActivity为 TextView 指定字体图标
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Typeface iconfont = Typeface.createFromAsset(getAssets(), "iconfont/iconfont.ttf");
TextView textview = (TextView)findViewById(R.id.text);
textview.setTypeface(iconfont);
}


效果如下图所示: 图标原来是灰色,这里我指定了是蓝色



就是这么简单完事。但是我们发现在activity代码中setTypeface很没有必要。因为我们整个应用有很多页面都需要设置字体图标时,这样设置会有很多,垃圾代码产生。这时我们可以用一个简单的自定义view去继承TextView就解决问题,代码如下

public class IconView extends TextView {
public IconView(Context context) {
super(context);

}

public IconView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}

private void initView(Context context) {
Typeface typeface = Typeface.createFromAsset(context.getAssets(),"iconfont.ttf");
setTypeface(typeface);
}
然后在布局文件中使用这个自定义View即可
<com.example.wpschen.myapplication.IconView
android:id="@+id/text"
android:textSize="20sp"
android:textColor="@color/colorPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/icon" />


最后提一个我遇到的小问题,最开始我下载的图标的unicode是󡔗 总共是8位数,但每次一运行就崩溃,会报这样的错误
03-01 17:12:41.020 4970-4970/com.example.wpschen.myapplication E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
03-01 17:12:41.055 4970-4970/com.example.wpschen.myapplication E/dalvikvm: VM aborting
03-01 17:12:41.055 4970-4970/com.example.wpschen.myapplication A/libc: Fatal signal 6 (SIGABRT) at 0x0000136a (code=-6), thread 4970 (n.myapplication)


最后又换了一个图标资源,unicode是常见的7位数,这样才得以解决,但至于8位数unicode的为什么造成崩溃,百度好多也没有什么好的解决办法,如果你看到这里,你也可以去尝试解决一下然后告诉我阿~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android iconfont