Android Icon-fonts:像文字一样操作图标

Android Icon-fonts:像文字一样操作图标_第1张图片
IconFonts

在Android手机上,每种字体实际上就是一套图片,每个图片由一个个点阵组成,并赋予一个对应的Unicode编码。同样的道理,我们可以把一些常用的图标也制作成字体格式,分配Unicode编码,并像使用文字一样的使用这些图标,这就是Icon fonts的用法,这种方法经常被用于前端开发中。

相比于使用Drawable对象,Icon fonts有如下优点:

  1. 不再需要制作存储不同分辨率的drawables,图形资源的大小降低一个数量级
  2. 可以方便的对icon-fonts进行缩放,改变颜色,改变大小(比如点击前和点击后),添加阴影和光晕等效果

使用效果如下,看起来就像操作一个图标,实际上是在操作一个文本,而且我们不需要存储不同尺寸和不同颜色的图标。

Android Icon-fonts:像文字一样操作图标_第2张图片
IconFont使用效果

Icon fonts用法也很简单,分四步:

  1. 将图标生成SVG文件,并将SVG文件转换成字体文件,格式为ttf,同时每个图标对应一个Unicode码,如下图。可以在这个网站进行转换,同时上面有一些做好的图标可以用:https://icomoon.io/app/#/select

    Android Icon-fonts:像文字一样操作图标_第3张图片
    各种各样的Icon
    Android Icon-fonts:像文字一样操作图标_第4张图片
    Icon对应的Unicode
  2. 将生成的ttf字体文件放到assets文件夹


    Android Icon-fonts:像文字一样操作图标_第5张图片
    assets文件夹
  3. 在strings.xml中给每个icon-font命名,对应的value就是该Icon的Unicode


    Android Icon-fonts:像文字一样操作图标_第6张图片
    String xml
  4. 使用Typeface.createFromAsset加载字体文件,通过setTypeface给TextView设置字体,然后就可以像文字一样给它设置颜色,大小等属性了

Typeface font = Typeface.createFromAsset(getAssets(), "icomoon.ttf");
cameraTV.setTypeface(font);
cameraTV.setText(R.string.ic_camera);
cameraTV.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30);
cameraTV.setTextColor(getResources().getColor(R.color.yellow));

Done

你可能感兴趣的:(Android Icon-fonts:像文字一样操作图标)