热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android怎么引用ttf字体,非常實用,Android引用ttf圖標字體庫

作為一個Android開發者,自己想做一個app練手,有個比較頭疼的問題就是沒有UI圖標資源~~其實很容易搞定的,下面就來聊聊如何在And

作為一個Android開發者,自己想做一個app練手,有個比較頭疼的問題就是沒有UI圖標資源~~ 其實很容易搞定的,下面就來聊聊如何在Android中應用圖標字體庫,找圖標不再糾結!

fd81fbf8ef38fd0837073279b7700fe4.png

1、點擊左上角菜單 -> Manager Projects 進入管理頁面。

e6d9e419169df28c53cad3c364545fbd.png

2、點擊New Project, 創建一個工程,如First App並點擊Load>

cf1646aa46bd124b43a2ff3a33550fd7.png

3、點擊Add Icon From Libray,去選擇自己喜歡的Library,點擊+Add添加到工程里面。Library有收費的,也有免費的,視情況而定。

bbfd9bb781b01c289f1bdcc5b3ac6250.png

98d98b460af79626499539ac8112c21b.png

4、轉到資源頁面。選擇自己想要下載的圖標,怎么都是灰色的?安啦,后面有驚喜!

c546c469800f965bdeb404a4f80b267f.png

5、點擊右下角Generate Font,生成ttf字體庫。

d29166faaa2ee385e515a6369fa6f328.png

上面四個圖標就是我前面選中的,下面的諸如e911文字就是圖標對應的unicode符號,中文字體也是這么一個道理。點擊download下載字體庫。

24e50710a36c1563331660f5b7050156.png

6、下載完成,解壓。拷貝fonts/icomoon.ttf 到 android-assets/fonts 下面。

ae2899f87ad261f1143e04091c75f350.png

7、應用字體。首先建一個字體“映射”類,反正官方不太推薦用枚舉方式,暫且就用注解吧~~ 打開剛才解壓包里面的demo.html,對應來創建字體映射。

import android.support.annotation.StringDef;

/**

* @author yuyh.

* @date 2016/11/10.

*/

@StringDef({

MDFonts.HOME,

MDFonts.NEWSPAPER,

MDFonts.MUSIC,

MDFonts.PLAY

})

public @interface MDFonts {

String HOME = "\ue902";

String NEWSPAPER = "\ue904";

String MUSIC = "\ue911";

String PLAY = "\ue912";

}

import android.content.Context;

import android.graphics.Typeface;

import android.widget.TextView;

/**

* @author yuyh.

* @date 2016/11/10.

*/

public class MDFontsUtils {

public static Typeface OCTICONS;

/**

* Get octicons typeface

*

* @param context

* @return octicons typeface

*/

public static Typeface getOcticons(final Context context) {

if (OCTICONS == null)

OCTICONS = getTypeface(context, "fonts/icomoon.ttf");

return OCTICONS;

}

/**

* Set octicons typeface on given text view(s)

*

* @param textViews

*/

public static void setOcticons(final TextView... textViews) {

if (textViews == null || textViews.length == 0)

return;

Typeface typeface = getOcticons(textViews[0].getContext());

for (TextView textView : textViews)

textView.setTypeface(typeface);

}

/**

* Get typeface with name

*

* @param context

* @param name

* @return typeface

*/

public static Typeface getTypeface(final Context context, final String name) {

return Typeface.createFromAsset(context.getAssets(), name);

}

}

9、圖標對應是用TextView表示,而不是ImageView。如下:

android:id="@+id/tvMusic"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="10dp"

android:textSize="16dp" />

android:id="@+id/tvHome"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="10dp"

android:textSize="16dp" />

在Java中應用字體。如下:

tvMusic = (TextView) findViewById(R.id.tvMusic);

tvMusic.setText(MDFonts.MUSIC);

tvHome = (TextView) findViewById(R.id.tvHome);

tvHome.setText(MDFonts.HOME);

// 應用字體

MDFontsUtils.setOcticons(tvMusic, tvHome);

run起來,大功告成!

16d485e9884140eab0aff1bff82da476.png

10、你會發現,run起來圖標顏色全是Android默認的灰色,那么怎么更改圖標顏色呢?剛才說了,圖標字體用的是TextView,實際上他跟中文英文字體沒什么兩樣,他本質上還是文字。所以,TextView怎么設置字體大小、字體顏色,這里就對應怎么設置。如下:

tvHome.setTextColor(Color.RED);

tvHome.setTextSize(50);

6b6d7f520054f1cee42a136795e2cd5f.png

哈哈,沒毛病!

當然,也可以把字體符號配置在string.xml

\ue902

// 當然,還需要下面這步來應用設置MDFontsUtils.setOcticons(tvHome);

更多用法大家就自行擴展吧!比如可以自定義一個TextView,直接應用字體,就不需要MDFontsUtils.setOcticons(tvHome); 這步操作了,自己用就可以啦!

感謝閱讀!



推荐阅读
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文整理了Java中org.gwtbootstrap3.client.ui.Icon.addDomHandler()方法的一些代码示例,展示了Icon.ad ... [详细]
  • 使用Flutternewintegration_test进行示例集成测试?回答首先在dev下的p ... [详细]
  • fileuploadJS@sectionscripts{<scriptsrc~Contentjsfileuploadvendorjquery.ui.widget.js ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
author-avatar
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有