android 自带的有字体库,在xml中可以设置,当然代码中自不必说。

1:xml使用

    <TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:padding="5dp"android:text="Typeface.createFromAsset"android:textColor="#333"android:textSize="18sp"android:typeface="sans" />

使用的是typeface这个属性,android中自带提供给我们的只有四种:
normalsansmonospaceserif
下面分别是对应的效果

2:代码实现

Typeface.create(String familyName, int style);

创建一个给定名字和指定样式的字体实例

Typeface.create(Typeface family, int style);

创建与指定的现有字体最匹配的字体对象

Typeface.createFromAsset(AssetManager mgr, String path)

从指定的字体数据创建一个新的字体。

Typeface.createFromFile(@Nullable File file)
Typeface.createFromFile(String path)

根据文件或者路径创建新的字体。

3:自定义样式的textview

另外附上简单的自定义textview用来实现assets下字体的:


public class CommonTextView extends AppCompatTextView {private int typefaceStr;private Context context;public CommonTextView(Context context) {this(context, null);}public CommonTextView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public CommonTextView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);this.context = context;init(context, attrs, defStyleAttr);}public void init(Context context, AttributeSet attrs, int defStyleAttr) {TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CommonTextView, defStyleAttr, 0);if (typedArray != null)typefaceStr = typedArray.getInt(R.styleable.CommonTextView_typeface, MEDIUM);typedArray.recycle();setTypefaceStr();}public void setTypefaceStr() {Typeface typeFace;if (typefaceStr == BOLD) {typeFace = Typeface.createFromAsset(context.getAssets(), "fonts/Bold.ttf");setTypeface(typeFace);} else if (typefaceStr == MEDIUM) {typeFace = Typeface.createFromAsset(context.getAssets(), "fonts/Medium.ttf");setTypeface(typeFace);} else if (typefaceStr == HEAVY) {typeFace = Typeface.createFromAsset(context.getAssets(), "fonts/Heavy.ttf");setTypeface(typeFace);} else if (typefaceStr == LIGHT) {typeFace = Typeface.createFromAsset(context.getAssets(), "fonts/Light.ttf");setTypeface(typeFace);} else if (typefaceStr == BOOK) {typeFace = Typeface.createFromAsset(context.getAssets(), "fonts/Book.ttf");setTypeface(typeFace);} else {}}class TypeFaceEnum {static final int BOLD = 0;static final int MEDIUM = 1;static final int HEAVY = 2;static final int BOOK = 3;static final int LIGHT = 4;static final int NORMAL = 5;}}

attrs样式如下:

 <declare-styleable name="CommonTextView"><attr name="typeface" format="enum"><enum name="bold" value="0" /><enum name="medium" value="1" /><enum name="heavy" value="2" /><enum name="book" value="3" /><enum name="light" value="4" /><enum name="normal" value="5" /></attr></declare-styleable>

最后是使用方式:

 <xxx.CommonTextViewandroid:id="@+id/tv_type"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:padding="5dp"android:text="Typeface.createFromAsset"android:textColor="#333"android:textSize="18sp"app:typeface="light" />

Android 字体库详解相关推荐

  1. Android中字体使用的单位是,Android移动APP设计字体规范详解

    之前25学堂专门分享和讨论了ios上面的移动APP设计字体规范和设计字体运用. 如: 等等优秀的移动APP字体博文.看完之后,大家肯定有所收获!而今天25学堂阅读了设计达人上面的一篇关于Android ...

  2. Android系统目录结构详解

    Android系统基于linux内核.JAVA应用,算是一个小巧精致的系统.虽是开源,但不像Linux一般庞大,娇小可亲,于是国内厂商纷纷开发出自己基于Android的操作系统.在此呼吁各大厂商眼光放 ...

  3. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  4. Android Studio 插件开发详解一:入门练手

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  5. 《Java和Android开发实战详解》——1.2节Java基础知识

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. Android 动画框架详解,第 1 部分

    2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...

  7. 《Java和Android开发实战详解》——2.2节构建Java应用程序

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  8. Android之canvas详解

    首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...

  9. 《Android游戏开发详解》一2.9 类

    本节书摘来异步社区<Android游戏开发详解>一书中的第2章,第2.9节,作者: [美]Jonathan S. Harbour 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区 ...

最新文章

  1. 记一次大规模数据迁移和加密
  2. mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
  3. Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(下)
  4. 为什么要学习 Markdown?究竟有什么用?怎么用?
  5. linux网络管理技术,linux网络管理 一
  6. 【ValueError: Target is multiclass but average=‘binary‘. Please choose another average setting, one 】
  7. laravel admin 根绝model创建控制器路由命令
  8. Martin Odersky Scala编程公开课 第一周作业
  9. ionic打包中的那些坑
  10. 设计模式之GOF23装饰模式
  11. 图的遍历之深度优先搜索和广度优先搜索
  12. STEAM 自动安装时提示C++ 安装不了等问题
  13. 新加坡10月新人扎堆结婚,只要生娃政府就发3000新币
  14. opencv光线补偿_教你了解摄像机的背光补偿
  15. 超市用监控摄像头多大角的_小型超市如何安装监控摄像头以防止商品被偷
  16. [强化学习一]隐马尔可夫基本概念
  17. 第一章:Vue3.0+Openlayers+Cesium创建二三维联动项目
  18. 快速排序的优化——枢轴数的选择
  19. 使用Jobs之创建jobs
  20. 每日一道 LeetCode (36):相交链表

热门文章

  1. 文科生的反击——新书《你能做任何工作:“无用”的自由技艺的惊人力量》解读
  2. Windows nginx + rtmp 流媒体服务器搭建(uniapp可用)
  3. php如何实现文字闪动,Javascrip实现文字跳动特效
  4. 通过调用Exiftool可以提取文件名的信息, 设置媒体文件的TagInfo相关信息
  5. SAP ML 物料分类账详解(含取消激活物料帐方法)
  6. 关于hash哈希以及为什么python中dict和set的key必须为不可变对象
  7. 1月12号-课堂讲义和代码
  8. 浅谈曲面参数化---顾险峰(老顾谈几何)
  9. 破解XXX游戏驱动保护过程总结
  10. 学拳录.第1势 预备势