Android 字体库详解
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中自带提供给我们的只有四种:
normal,sans,monospace,serif。
下面分别是对应的效果
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 字体库详解相关推荐
- Android中字体使用的单位是,Android移动APP设计字体规范详解
之前25学堂专门分享和讨论了ios上面的移动APP设计字体规范和设计字体运用. 如: 等等优秀的移动APP字体博文.看完之后,大家肯定有所收获!而今天25学堂阅读了设计达人上面的一篇关于Android ...
- Android系统目录结构详解
Android系统基于linux内核.JAVA应用,算是一个小巧精致的系统.虽是开源,但不像Linux一般庞大,娇小可亲,于是国内厂商纷纷开发出自己基于Android的操作系统.在此呼吁各大厂商眼光放 ...
- Android Studio 插件开发详解二:工具类
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...
- Android Studio 插件开发详解一:入门练手
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...
- 《Java和Android开发实战详解》——1.2节Java基础知识
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- Android 动画框架详解,第 1 部分
2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...
- 《Java和Android开发实战详解》——2.2节构建Java应用程序
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- Android之canvas详解
首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...
- 《Android游戏开发详解》一2.9 类
本节书摘来异步社区<Android游戏开发详解>一书中的第2章,第2.9节,作者: [美]Jonathan S. Harbour 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区 ...
最新文章
- 记一次大规模数据迁移和加密
- mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
- Visual Studio 2008 可扩展性开发(三):Add-In运行机制解析(下)
- 为什么要学习 Markdown?究竟有什么用?怎么用?
- linux网络管理技术,linux网络管理 一
- 【ValueError: Target is multiclass but average=‘binary‘. Please choose another average setting, one 】
- laravel admin 根绝model创建控制器路由命令
- Martin Odersky Scala编程公开课 第一周作业
- ionic打包中的那些坑
- 设计模式之GOF23装饰模式
- 图的遍历之深度优先搜索和广度优先搜索
- STEAM 自动安装时提示C++ 安装不了等问题
- 新加坡10月新人扎堆结婚,只要生娃政府就发3000新币
- opencv光线补偿_教你了解摄像机的背光补偿
- 超市用监控摄像头多大角的_小型超市如何安装监控摄像头以防止商品被偷
- [强化学习一]隐马尔可夫基本概念
- 第一章:Vue3.0+Openlayers+Cesium创建二三维联动项目
- 快速排序的优化——枢轴数的选择
- 使用Jobs之创建jobs
- 每日一道 LeetCode (36):相交链表
热门文章
- 文科生的反击——新书《你能做任何工作:“无用”的自由技艺的惊人力量》解读
- Windows nginx + rtmp 流媒体服务器搭建(uniapp可用)
- php如何实现文字闪动,Javascrip实现文字跳动特效
- 通过调用Exiftool可以提取文件名的信息, 设置媒体文件的TagInfo相关信息
- SAP ML 物料分类账详解(含取消激活物料帐方法)
- 关于hash哈希以及为什么python中dict和set的key必须为不可变对象
- 1月12号-课堂讲义和代码
- 浅谈曲面参数化---顾险峰(老顾谈几何)
- 破解XXX游戏驱动保护过程总结
- 学拳录.第1势 预备势