热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Android中正确使用字体图标(iconfont)的方法

IconFont字体不仅仅流行于Web开发,在移动开发中也渐渐的使用的范围更广泛。这篇文章主要介绍了在Android开发中使用iconfont的代码和方法。对大家学习使用iconfont有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。

字体图标

字体图标是指将图标做成字体文件(.ttf),从而代替传统的png等图标资源。

使用字体图标的优点和缺点分别为:

优点:

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

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

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

      4. 使用简单

      ……

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

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

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

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

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

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

      1、自由变化大小

      2、自由修改颜色

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

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

正常的添加方案

第一步:复制字体文件到项目 assets 目录;

 

第二步:打开 iconfont 目录中的 demo.html,找到图标相对应的 HTML 实体字符码;

第三步:打开 res/values/strings.xml,添加 string 值;

 手机

第四步:打开 activity_main.xml,添加 string 值到 TextView:

第五步:为 TextView 指定文字:

import android.graphics.Typeface;

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.like);
  textview.setTypeface(iconfont);
}

设置完效果如下

 

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

public class IconFontTextview extends TextView {  
  public IconFontTextview(Context context) {    
    super(context);    
     init(context);  
  }  

  public IconFontTextview(Context context, AttributeSet attrs) {  
     super(context, attrs);   
     init(context);  
  }  

  public IconFontTextview(Context context, AttributeSet attrs, int defStyleAttr) {    
     super(context, attrs, defStyleAttr);    
     init(context);  
  }    
   private void init(Context context){    
      Typeface icOnfont= Typeface.createFromAsset(context.getAssets(), "iconfont/iconfont.ttf");   
      setTypeface(iconfont); 
 }
}

然后就是改一下我们布局文件

其他textview的属性还是正常使用,解决

总结

如你所见,使用字体图标可以高度自定义图标的大小和颜色,对于个人开发者来说是一个特别好的消息,再也不用在找图标时考虑颜色和大小了。以上就是在Android中正确使用字体图标(iconfont)的方法,希望这篇文章对各位Android开发者们能有所帮助,如果有疑问大家可以留言交流。谢谢大家低的支持。


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
author-avatar
蓝颜知己Alice
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有