Fontawesome的使用(续)

Vue项目中使用fontawesome5 下载fontawesome5,官网地址:fontawesome5 把下载的fontawesome-free-5.11.2-web文件夹复制到src目录下assets目录下 在src目录下main.js中引入css // 导入图标css import './assets/fontawesome-free-5.11.2-web/css/all.min.css' 在组件中使用图标 ... 阅读详情

[勘误]我在我的上篇博客一种可以代替图标的字符集Fontawesome一文中写到Fontawesome字体集在AS中是无法在布局编辑器中直接查看显示效果,这一结论是错误的,今天工作中需求要求有一个字体图标会出现多次,如果采用博客中提到的方式处理,会重复定义许多id,代码重复,因此寻思通过自定义属性为TextView设置typeface,这样可以直接在布局中就可以实现使用fontawesome,岂不快哉!


看右边的小箭头

看需求,是要在所有的条目右边加上一个“右箭头”的字体图标,很显然这些字体图标对应同一个unicode值,沿用之前的方法会造成大量重复代码,所以我想如果可以直接在布局上设置TextView的typeface不是很便捷嘛,撸起袖子加油干~


一、为TextView自定义属性 mytypeface

自定义属性在平时的开发中,还是属于比较常见的需求,这个项目中我是想为TextView设置一个自定义属性mytypeface来在布局中直接指定typeface,从而避免在代码中一个个控件的findViewById设置。刚好复习下自定义控件的具体实现:
1. 自定义属性定义在什么地方
通常来说,自定义属性声明和定义在values/attrs.xml中,如果没有请创建即可,在attrs.xml中有2个重要的节点:declare-styleable/attr ,其中declare-styleable意思是指宣布/定义的意思,需要指出的是其name属性值就是attr属性的集合名称可以随便起,不一定要是我们的自定义控件的名称,而接下来的节点attr自然就是具体的属性名称,如mytypeface.

  • 我的自定义属性的声明文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="MyIconTextView">
        <attr name="mytypeface" format="string"/>
    </declare-styleable>

</resources>

这里,要提一句,attr节点的format属性不是必须的,我这里为什么要定义mytypeface是string类型?这个就要看TextView的源码啦,因为我是想通过在布局中为TextView设置属性自动完成让TextView使用Fontawesome字体,那么我就必须要知道TextView是如何为其设置typeface的。
我们知道:系统的控件属性都是定义在路径sdk\platforms\android-23\data\res\values\attrs.xml中的


typeface在系统attrs.xml中定义

可以看见,在系统属性中,使用enum枚举类型将typeface定义为四个值,分别是normal/sans/serif/monospace。追踪TextView的源码发现如下蛛丝马迹:

是不是设置上typeface啦

具体调用处

看最终调用处,是不是可以把在xml设置的typeface的enum值取出来并进行分支判断从而应用,因此我想其实可以直接自定义属性来避免重复在代码中为TextView设置使用Fontawesome字体。看到这里,你应该知道我为什么要把typeface定义成 string类型,还得猜到我要设置什么样的字符串?纳尼,还没看懂~好吧继续向下看,吼~吼~

2. 自定义属性什么时候使用到(AttributeSet与TypedArray的区别)
在上面其实,我已经分析了,我们在xml中定义的属性是何时被解析出来并使用的,那就是在TextView的构造中:

View构造的特点看出来没,最终调用的是参数最多的构造

最终调用的是参数最多的构造,在构造的参数中有1个参数需要重点解释下:

  • 参数:AttributeSet:
    顾名思义就是指所有被系统或自定义的属性的set集合(当然,实际包含的内容以我们在布局中使用到相关属性),很显然这里面有我们关心的属性,这里是取出属性name及其value的一个方法,但是缺点是如果xml的属性的value不是值而是一个资源引用id,那么取出具体值势必需要进一步解析id,比较麻烦,因此有了TypedArray。
    更细节的内容,建议参考Android 深入理解Android中的自定义属性

3.自定义属性使用需要注意什么问题

  • 使用自定义属性需要注意的是使用namespace,即命名空间,一般可以xmlns:你的命名空间名称,如我的就是xmlns:wx=”http://schemas.android.com/apk/res-auto”
二、自定义MyIconTextView

已经确定好自定义属性,要想使用自定义属性,就必须进行自定义控件,在构造中获取自定义属性并应用到控件上,因为本文基于TextView控件,因此自定义MyIconTextView extends TextView,代码如下:

public class MyIconTextView extends TextView {
    public MyIconTextView(Context context) {
        this(context, null);
    }

    public MyIconTextView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyIconTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyIconTextView);
        String typeface = typedArray.getString(R.styleable.MyIconTextView_mytypeface);
        setTypeface(FontManager.getTypeface(context, typeface), 0);//使用FontManager核心类
        typedArray.recycle();  //注意回收
    }

    @Override
    public void setTypeface(Typeface tf, int style) {
        super.setTypeface(tf, style);
    }
}

这里需要指出的是,如何访问到我们定义在attrs.xml中的自定义属性呢?答案是,通过类TypedArray 实现的,R.styleable.MyIconTextView中所有的attr在R.java中都有映射,要想访问到declare-styleable的子标签attr必须通过R.java实现,因为所有的attr在R.java中以declare-styleable’s name_attr’s name生成了对应的常量,aapt干的。

三、在布局xml中MyIconTextView应用自定义属性mytypeface

以上工作都做完后,就可以自由在布局xml中使用自定义的MyIconTextView并直接引用属性mytypeface,看看下面的布局文件,博主没想到这么做后,布局编辑器竟然可以实时看出字体绘制后显示的图标效果,搜嘎,so good……

<com.zbiti.yuntu.view.MyIconTextView
            android:layout_width="18dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:gravity="center"
            android:text="@string/fa_angle_right"
            android:textSize="16sp"
            wx:mytypeface="fonts/fontawesome-webfont.ttf" />

布局编辑器看来,在写xml时,就已经调用了构造对控件进行了渲染显示啦


布局编辑器渲染

oh~


Font Awesome 4.7.0:图标库的最新更新与应用 Font Awesome是一个广泛使用的开源图标字体库,它通过CSS使得开发者和设计师能方便地在网页中嵌入和管理图标。图标库的图标是矢量图形,可以无限放大而不失真,并且还支持多种颜色和大小的自定义。虽然Font Awesome提供了大量的默认图标样式,但定制化的需求始终存在。开发者可以通过CSS和LESS来扩展和自定义图标,例如:颜色和大小:简单的CSS覆盖可以改变图标的颜色和大小。动画效果:通过CSS动画添加动态效果,使得图标更加生动。添加边框或阴影:通过CSS的。 阅读详情

相关推荐

FontAwesome图标集成至Axure的部件库使用指南

本文还有配套的精品资源,点击获取 简介:FontAwesome是一个包含数千个矢量图标的开源库,支持多种格式,便于设计师和开发者在网站中添加高质量图标。 FontAwesome部件库 是一个专门针对Axure设计的资源库,它将FontAwesome图标集转化为Axure可直接使用的部件,简化了原型设计流程。本文提供了下载、导入、使用FontAwesome部件库...

weixin_33608403的博客 2318

wordpress菜单显示css字体,WordPress导航菜单图标字体插件font awesome 4 menus

用了wordpress后,大伙都不约而同的给菜单用上了图标字体,确实给博客带来了一定的美化效果。不过,在强迫症的眼里,能代码化就尽量不用插件吧!于是将这个插件改造成代码版,顺便精简了基本用不到的shortcode 图标调用功能。在这里,我为大家带来了这两种方式的具体操作方法。一、插件使用方法下载 font-awesome-4-menus这个插件并安装。通过这个网站找到自己喜欢的图标http:/...

weixin_29539581的博客 1141

WPF实战:利用Live Charts实现高性能动态曲线可视化

本文详细介绍了如何在WPF中使用Live Charts实现高性能动态曲线可视化,特别适用于工业监控和金融分析等实时数据场景。通过增量渲染、内存复用和硬件加速等核心技术,Live Charts能够高效处理高频数据更新,显著提升图表流畅度。文章提供了从基础实现到工业级优化的完整解决方案,帮助开发者应对各种性能挑战。

weixin_29189373的博客 407

在amx界面编辑中使用Font Awesome字体

在amx的界面编程中使用图标字体,可以简化界面编辑工作,和使用图片显示一个图标比起来,使用图标字体更容易改变图标的大小、颜色。

sixroom的博客 822

半导体制造中的通孔缺陷与冗余通孔技术解析

通孔(Via)是半导体制造中连接不同金属层的关键结构,其可靠性直接影响芯片良率。随着工艺节点演进至28nm及更先进制程,通孔缺陷导致的良率损失日益显著,主要表现为完全开路和高阻态两种失效模式。冗余通孔技术通过在关键位置增加备用连接,可有效提升芯片可靠性,其实现涉及物理冗余与电气冗余两种方案。该技术在7nm/5nm工艺中已证明可将通孔相关缺陷率降低10-100倍,但面临设计规则复杂性、规模处理效率和动态合规验证等工业化挑战。智能双切通孔插入流程通过动态DRC规则解析、奇偶层级并行处理和增量式验证等创新方法,显

weixin_35982453的博客 383

结构力学本构模型:复合材料模型:复合材料热力学行为技术教程_2024-08-07_06-54-53.Tex

热塑性复合材料是一种由热塑性树脂基体和增强纤维组成的复合材料。与热固性复合材料不同,热塑性复合材料在加热时可以软化,冷却时硬化,这一过程可以重复进行,因此它们具有可回收和可再加工的特性。热塑性树脂,如聚酰胺(尼龙)、聚碳酸酯、聚醚醚酮(PEEK)等,与碳纤维、玻璃纤维等增强材料结合,可以制备出具有高强度、高刚度和良好耐热性的复合材料。热粘弹性理论是研究材料在温度变化和时间依赖性载荷作用下的变形和应力响应。复合材料,由于其独特的微观结构,展现出复杂的热粘弹性行为。

808

16、Font Awesome使用小记

wpf中使用字体图标库

roujian0985的博客 3522

安装Fontawesome4字体图标

字体下载地址:链接: https://pan.baidu.com/s/1zOQ4xZ6lrDE7SWroQisQuQ 密码: a78p 元件库下载地址:链接: https://pan.baidu.com/s/18LSKNnvBtRUpVjaeFGt2fg 密码: tqwj 1.下载字体并解压后 2.进入fonts目录,进行安装,双击如下两个文件进行安装 3.安装界面如下 4.安装完成后,重启Axu...

weixin_33778544的博客 382

HyperLynx(十三)Hyperlynx前放置之对网络的EMC分析

在“Spectrum Analyzer”对话框的“Stimulus”(激励)栏中,设置激励源频率为100MHz,选择“IC modeling”为“Fast-Strong”,并按图所示设置其他选项。显然,在仿真的基频上,它的幅值最大,将鼠标光标置于柱状图上,可以读取其值为64.28mA,这个数值是由选定的驱动芯片决定的。按上图所示的原理图,在接收端增加一个并联的RC负载,再次运行仿真,结果如图所示。在对话框左侧的“Pins”列表中,显示出了已添加电流探针的引脚,可以在此列表中选择所要仿真的目标。...

小幽余生不加糖 4680

文末含资料链接和视频讲解!YOLOv8+RepVGG+QueryDet小目标检测终极指南:从理论到实战,突破遥感图像检测难题

QueryDet(Query Detection)机制代表了目标检测领域的一个重要范式转变。传统的目标检测方法基于anchor或anchor-free的密集预测,需要为图像中的每个可能位置生成预测。而QueryDet采用了稀疏查询的方式,通过少量的可学习查询向量来直接预测目标。 这种设计灵感来源于Transformer架构中的注意力机制。在自然语言处理中,Transformer通过query-key-value机制实现了高效的序列建模。QueryDet将这一思想引入到目标检测中,将检测问题转化为查询匹配问

FJN110的博客 387

在安卓项目中使用FontAwesome图标

一、首先下载和导入FontAwesome 的TrueType 文件到项目。你可以从 https://github.com/FortAwesome/Font-Awesome 上下载FontAwesome 的assets。下载了FontAwesome之后,只需要位于fonts目录的 fontawesome-webfont.ttf。二、 在你的安卓项目中,导航到 app > src > main。

花前月下的细说__AndJun 2551

药物对接仿真软件:HADDOCK_(9).结果分析方法

HADDOCK是一种强大的药物对接仿真工具,通过对生成的输出文件进行详细的分析,我们可以验证仿真结果的可靠性,并为进一步优化药物设计提供依据。常见的分析方法包括解读输出文件、使用可视化工具进行结构分析、评估对接模型的稳定性和准确性等。通过这些步骤,我们可以更全面地了解受体和配体的结合模式,从而提高药物设计的成功率。

kkchenjj的博客 1008

在 uniapp 中使用 fontawesome

在 uniapp 中使用 fontawesome 包括导航栏和页面上

BlackParade的博客 3349

风电功率预测项目技术白皮书:短期、超短期、中长期全尺度算法详解与工程落地

聚焦风电功率预测的时间尺度与算法:短期(0~72h)以XGBoost/LightGBM/CatBoost及深度学习为主,超短期(0~4h)采用ARMA+LSTM,中长期用LightGBM等,并涵盖概率预测、多气象源融合、AI大模型+物理模型混合策略、极端天气应对及工程运维要点。

算法工程师 326

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Qt使用FontAwesome

Qt使用FontAwesome,图标字体

ever__ever的博客 1434

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

在Latex中插入FontAwesome图标

在Latex中插入FontAwesome图标 FontAwesome是一个latex图标库,提供了600+个图标,常用于简历、非正式报告等模板。FontAwesome可通过XELaTeX、LuaLaTeX、PDFLaTeX编译。 调用方式如下: 首先导入fontawesome包 \usepackage{fontawesome} 以插入GitHub图标为例,输入命令\faGithub,便可在文档中插入以下图标: 图标与命令的对应关系见FontAwesome文档,在使用时可通过Ctrl+F的方式搜索关键词,

chandler_scut的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

QT中使用fontawesome-webfont.ttf字体库

QT中使用fontawesome-webfont.ttf字体库 fontawesome-webfont.ttf https://fontawesome.com/ 1、fontawesome-webfont.ttf字体库中包含了很多图标, 每个图标都对应一个编码, 所以我们通过字体编码来加载所需要的图标。 2、字体库的下载地址:http://www.bootcss.com/p/font-awesome/。 下载完成后我们找到fontawesome-webfont.ttf文件, 他是我们需要的字体库,我们可以将

abc 3495

如何在安卓app中使用FontAwesome图标

English orignal:How to Use FontAwesome in an Android App为什么使用FontAwesome图标首先,你不需要担心不同手机上的屏幕分辨率问题。如果你使用png图片,你需要在包里面对每个图标至少包含四种不同的版本。不仅如此,在某些超清屏幕上,你的图标可能会出现颗粒感。这显然是要避免的。但如果使用FontAwesome,你只需包含一个”TTF”文件。其

Cogitate_的专栏 2569

FontAwesome免费图标在winform中的使用

FontAwesome是一套绝佳的图标字体库,可以修改大小、颜色、阴影或者其它任何支持的效果。 我们如何在winform中的使用FontAwesome? 1.进入官网https://fontawesome.dashgame.com/下载font-awesome-4.7.0.zip 找到font-awesome-4.7.0\fonts\fontawesome-webfont.ttf文件,添加到winform项目中 2.添加代码 public class FontAwesome { ///

moondd的博客 2938

WPF 字体图标 FontAwesome 的简单使用

开篇 一个好的应用程序,离不开好看的界面,在应用程序界面设计过程中,图标往往不会离开设计人员的视线。图标的存在形式有很多中:png\jpg\ico\bmp。。。等很多种,但是这些图标都存在一个弊端,他们不是矢量图,不能在不失真的情况下进行缩放等矢量图具备的特点。而字体图标恰好的解决了这个弊端,将图标封装在字体里面,以字体的形式展示,这样图标就可以自由的缩放、更改颜色等。 实现 第一步:下载 ...

YouyoMei的博客 5305

【亲测免费】 FontAwesome.Sharp 使用教程

FontAwesome.Sharp 使用教程 项目介绍 FontAwesome.Sharp 是一个开源项目,旨在将 FontAwesome 图标集成到 .NET 应用程序中。通过这个库,开发者可以轻松地在 Windows Forms、WPF 和 UWP 应用中使用 FontAwesome 图标。该项目提供了简单易用的 API,使得在项目中添加和管理图标变得非常方便。 项目快速启动 安装 首先,你需...

gitblog_01079的博客 1194

Qt使用FontAwesome图标字体库

官网: http://fontawesome.io/中文网: http://www.fontawesome.com.cn/GitHub: https://github.com/FortAwesome/Font-Awesome4.70旧版本使用方法:在解压目录中找到 fonts\fontawesome-webfont.ttf 拷贝出来这个是我们Qt程序使用FontAwesome图标字体库时需要加载的...

小李的博客 3024

WordPress插件 | 在WordPress中使用FontAwesome

WordPress加上FontAwesome,就是这么简单。 在我们推出Zanblog这个WordPress博客主题之后,受到了很多朋友的喜爱与反馈,其中一个问的比较多的就是如何将FontAwesome这个好用的图标组件应用到WordPress中(当然Zanblog已经自带了FontAwesome,不需要另外添加)。 在这篇WordPress教程中,我们就分享一下添加的具体

老K的博客 2284

react中使用fontawesome库

项目需求 ,需要使用Font Awesome小图标库运用到项目中。 使用步骤 安装模块: npm i -S @fortawesome/fontawesome npm i -S @fortawesome/react-fontawesome npm i -S @fortawesome/fontawesome-free-solid App.js引入模块 //图标 import { FontA...

小狮狮的博客 1614

C#项目使用 FontAwesome 图标

文章目录1、Font Awesome介绍2、使用方法1、直接官网点击某个图标,会告诉你这个代码:2、在word文档里面插入特殊符号,选择fontawesome,选择图标后会提示你字符代码。3、添加到Resources 1、Font Awesome介绍 Font Awesome,一套绝佳的图标字体库和CSS框架。常在网页中使用 fontawsome 图标,winform 桌面应用怎么使用fontawsome图标字体呢? fontawsome字体图标官网 http://www.fontawesome.com.c

Clement 4226
上一篇: 一种可以代替图标的字符集Fontawesome
下一篇: 代码维护之反射篇
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值