当前位置:   article > 正文

Android神技之 使用SVG以及自定义IconFont字体库_android svga嵌入文字

android svga嵌入文字

Android神技之 使用SVG以及自定义IconFont字体库

简介

Google在Android 5.X中增加了对SVG矢量图形的支持。

SVG是什么
  1. SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
  2. SVG用来定义用于网络的基于矢量的图形
  3. SVG使用 XML 格式定义图形
  4. SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失
  5. SVG 是万维网联盟的标准
  6. SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体
特点
  • 图片放大N倍,图片也不会模糊 ,放大不会失真
Bitmap和SVG的区别

Bitmap(位图)通过在每个像素点上存储色彩信息来表达图像,而SVG是一个绘图标准。与Bitmap对比,svg最大特点是放大不会失真,而且Bitmap需要为不同分辨率设计多套图标,而矢量图不需要。

SVG学习–VectorDrawable的使用
svg矢量图绘制以及转换为Android可用的VectorDrawable资源
如何将SVG转换成VectorDrawable XML资源
svg转换为VectorDrawable 工具

目前找了这么多工具,并没有找到xml转化为VectorDrawable的工具,目前只能通过Android SVG to VectorDrawable这个工具将SVG的图标转化为VectorDrawable的xml文件,后复制该xml文件到AS的drawable的文件夹。

每一个SVG图片需要在AS的drawable里面生成这样一个xml文件,这样只有一套,但是文件太多,因此只需要将PNG合在一个字体里面。

Android中使用iconfont图标
  1. 从iconfont平台选择使用到的图标,并下载到本地;复制字体文件到assets目录
  2. 打开下载下来的文件,并在目录中打开demo.html,找到图标相对应的HTML实体字符码
  3. 打开res/values/string.xml,添加string值:<string name="icon_erweima">&#xe642;</string>
  4. 打开activity_main.xml,添加string值到TextView:
  5. 为TextView指定文字

    Typeface typeface=Typeface.createFromAsset(getAssets(),"iconfont.ttf");
    TextView textView= (TextView) findViewById(R.id.text_icon);
    textView.setTypeface(typeface);

步骤

1、登录到阿里iconfont图标库,选择所需要的图标,添加入库

string.xml文件的string节点的name的值,注意需要将分号“;”也复制过去


注意图标名中间不能用横杠“-”而要用下划线“_”

自定义字体库

尽管上面减小了APP的大小,虽然可以封装起来,但是还是很麻烦。GitHub上已经有大神封装了这样的一个库Android-Iconics ,所以只需要在AS中添加以来就可以使用;使用这个图标库中的图标可以在不同的尺寸,颜色,分辨率场景中使用。

*尽管已经存在了这样一个iconfont库,但是本身这个库就存在很多问题,在实际GitHub上的介绍,存在诸多bug,有许多的坑,实际开发中需要多加验证,或者咨询该库的作者Mike Penz,而且作者也多次和更多开发者进行互动在这里
*

关于Android-Iconics 开源库介绍的使用,可以参考这里震惊!Icon使用极其简单? Android-Iconics 开源库介绍Android-Iconics 开源库的使用 IconFont在Android中的使用,这些网友的解读尽管不是全部正确,但是也可以参考开阔思路。

注意事项:
  1. 使用Android-Iconics 需要注意该开源库一共提供我们了12个依赖库,每一个依赖库的图标icon前缀都和依赖库一一对应。如果找不到,或者报错,很有可能是icon前缀拼写错误或者是你自定义的依赖库。

    • Google Material Design Icons
      “gmd”
      ORIGINAL by Google compile 'com.mikepenz:google-material-typeface:+.original@aar'

    • Material Design Iconic Font
      “gmi”
      Google Material Iconic compile 'com.mikepenz:material-design-iconic-typeface:+@aar'

    • Fontawesome
      “faw”
      compile 'com.mikepenz:fontawesome-typeface:+@aar'

    • Meteocons
      “met”
      compile 'com.mikepenz:meteocons-typeface:+@aar'

    • Octicons
      “oct”
      compile 'com.mikepenz:octicons-typeface:+@aar'

    • Community Material
      “cmd”
      compile 'com.mikepenz:community-material-typeface:+@aar'

    • Weather Icons
      “wic”
      compile 'com.mikepenz:weather-icons-typeface:+@aar'

    • Typeicons
      “typ”
      compile 'com.mikepenz:typeicons-typeface:+@aar'

    • Entypo
      “ent”
      compile 'com.mikepenz:entypo-typeface:+@aar'

    • Devicon
      “dev”
      compile 'com.mikepenz:devicon-typeface:+@aar'

    • Foundation Icons
      “fou”
      compile 'com.mikepenz:foundation-icons-typeface:+@aar'

    • Ionicons
      “ion”
      compile 'com.mikepenz:ionicons-typeface:+@aar'

2、添加依赖库后,在普通控件上使用图标,一定要在onCreate方法里面且在super.onCreate()之前加上LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate()));

3、图标库可以作为一个drawable也可以在XML文件使用占位符赋值。引用时一定要和依赖库中对应的字体库中枚举类icon中的图标名一致,比如依赖了Ionicons ,这个图标库引用时就要和Ionicons这个类中枚举类icon的图标名一致。图标名可以通过Ionicons 这个网站,点击图标就可以获得图标名,如下图

自定义字体库

以上综述,也是对自定义字体库的注解,
1. 将从阿里图标网上的图标添加到购物车,后添加到一个项目,下载到本地的文件中的ttf格式字体文件复制到AS的assets文件下
2. 需要建立自己的自定义字体库类比如public class MyIconFont implements ITypeface ,实现这个接口ITypeface,重写其中的方法,以及创建枚举类public enum Icon implements IIcon 可以将依赖库Ionicons 中的Ionicons这个类中重写的方法以及枚举类和其他需要的复制过去,但是记得修改以及复制过去导致的包的问题。

实现ITypeface接口需要重写的方法中重要的是getMappingPrefix()、getIcons()、getTypeface()这3个方法

3、 创建好自己的字体类MyIconFont,后需要创建一个MyApplication继承于Application这个类并且在清单文件添加这个MyApplication

4、下图是需要注意的地方

自建字体类中的枚举类中的注意点

自建字体类中的注意点

项目demo下载地址这里

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/404756
推荐阅读
相关标签
  

闽ICP备14008679号