英文原版:Android O Working With Fonts
  Android O 首次引入一个新特性:允许开发者将字体作为资源在XML文件中使用。Android O同样提供了可以获取系统字体信息并生成文件描述的机制。
   Fonts in XML
  Android O允许开发者通过将font文件添加到res/font文件夹的方式绑定字体资源。这些字体会被编译进R文件中并且在Android Studio中自动生效。开发者可以通过使用@font/myfont或者 R.font.myfont的方式使用字体资源。
   在Android studio中通过下面的步骤将字体添加为资源:
   1.在res文件夹上右键,New > Android resource directory。
   2.在Resource type 列表中选择font,点击ok。

   3.将字体文件添加到font文件夹。下面的文件夹结果将生成R.font.dancing_script, R.font.lobster, and R.font.typo_graphica。

  4.双击字体文件可以在编辑器中预览字体。
  Creating a font family 
  1.新建font resource文件,输入名字。
  2.打开新建的font文件,在每一个font节点中都写入字体文件(@font/my_font),weight和style:

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"><font
        android:fontStyle="normal"android:fontWeight="400"android:font="@font/lobster_regular" /><font
        android:fontStyle="italic"android:fontWeight="400"android:font="@font/lobster_italic" />
</font-family>

  Using fonts in XML layouts
  开发者可以很方便的在TextView或者styles中使用字体,在TextVie或者styles中使用字体需要fontFamily 属性。
  为TextView设置字体需要做下面的步骤:
  a.打开XML文件,使用fontFamily 属性调用字体文件:

<TextView
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:fontFamily="@font/lobster"/>

  b.打开属性窗口为TestView设置字体:
  选择一个View打开属性窗口(属性窗口只有在design editor打开是才可用,开发者需要确保选择的是design editor)。
  展开textAppearance 属性,从fontFamily列表中选择字体。

  Android studio中的布局预览,开发者可用预览在TextView中设置的字体:

  Adding fonts to style
  打开styles.xml,使用fontFamily 属性引入字体文件:

<style name="customfontstyle" parent="@android:style/TextAppearance.Small"><item name="android:fontFamily">@font/lobster</item>
</style>

  Using fonts programmatically
  开发者可以通过使用getFont(int)方法获取字体信息,开发者需要将需要获取的字体资源的id传递给这个方法。getFont(int)方法返回一个Typeface对象。开发者可以使用Typeface.create(typeface, style)方法指导styles。

Typeface typeface = getResources().getFont(R.font.myfont);
textView.setTypeface(typeface);

   Retrieving system fonts
   fonts.xml文件记录了所有预装在设备中的字体和他们的细节,比如family name, weight, 和style。目前为止,Android还没有公共API去获取这些系统字体的数据。因此一些应用直接在fonts.xml文件中找到这些系统字体并将他们替换成自己的字体而不是使用他们。Android O提供了新的将fonts.xml文件中的信息公开的API,并且为这些字体文件提供了FileDescriptor对象。新的API是:

FontManager.getSystemFonts(): 提供与系统相关的字体信息,提供FileDescriptor
FontConfig: 包含所有和字体信息相关的数据结构

  Accessing APIs from your app
  通过下面的方法使用新的API:

FontManager fontManager = context.getSystemService(FontManager.class);
FontConfig systemFontsData = fontManager.getSystemFonts();
//FontConfig 类包含了所以定义在font families中的数据,对每一个在font families中的字体来说,他们的细节包括weight 和style。这个类同样提供了对字体文件的开放的file descriptor,一旦结束使用他们,调用者需要确保关闭给定的 file descriptors。

Android O Working With Fonts相关推荐

  1. android如何导入活动,关于android:如何将活动值传递给另一个活动(Kotlin)

    我是Kotlin的新手,我正在尝试为我的应用进行设置活动,我希望该活动将其价值传递给其他活动. 我尝试了不同的代码,但没有一个起作用,我尝试制作一个共享的首选项文件,但我不知道如何编写代码 要清楚,我 ...

  2. android xml黑体字_Android开发之字体设置

    默认字体 Android SDK自带了四种字体:"normal""monospace","sans", "serif", ...

  3. android 字体编程,Android编程之Calligraphy:Android 自定义字体库

    Calligraphy是android 自定义字体库 添加依赖 Download from Maven Central (.jar) OR Java dependencies { compile 'u ...

  4. Android系统上部署usb打印机

    Android系统上部署usb打印机 一.综述 android系统现多用于手持设备,为手机等设备应用提供了很好的系统级支持.但对于PC机常用的打印功能,android到目前并不支持,也没有打印机厂家专 ...

  5. 你知道这个C#开发跨平台APP的样例介绍开源项目吗?

    站长英文太差就不翻译了,大家看效果图,都是使用Xamarin.Forms开发的开源移动App介绍,感兴趣的可以访问Github和Gitee仓库看看,下载对应的App项目研究. Github:https ...

  6. web自定义字体引用与资源压缩

    在工程的static文件中新建fonts文件夹并将下载好的web字体文件夹以字体名称为名放入fonts文件夹下,目录结构如下图: 本文使用的这个炒鸡丑的英文字体为AhsanCalligraphyReg ...

  7. MTK Android4.0.3 ICS 添加缅甸语Myanmar

    最近几个项目需要添加缅甸语,借助网络资源,同时结合自身实践,成功添加缅甸语,现分享经验如下. 一. 前期工作: 准备Myanmar字库,下载地址:http://www.myordbok.com/mya ...

  8. 植物大战僵尸破产版--cocos studio

    采用Cocos引擎cocos studio开发 平台为Android,开发语言为C++: 时间: 2020.4.29-5.14 游戏说明 这是一款具有策略性的游戏.背景是僵尸入侵你的家,你需要用具有攻 ...

  9. Android系统system文件夹结构的说明 \system下的app、lib、bin、etc、fonts、framework

    \system\app 这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件.在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是/data/文件夹中 \s ...

最新文章

  1. 试试这款针对JAVA应用的开源防火墙!
  2. ArcGIS Server 9.2 on Solaris/Linux 安装可能出现的问题
  3. 以下描述中不属于python语言控制结构的是_高中信息技术《Python语言》模块试卷...
  4. CF2B The least round way(贪心+动规)
  5. [数据库]---mysql数据库 使用binlog+canal或binlake进行数据库的复制
  6. CentOS6.4之Linux软件包管理
  7. 网络技术 几项技术!
  8. 转:Android应用开发性能优化完全分析
  9. 拓端tecdat|R语言基于线性回归的资本资产定价模型(CAPM)
  10. 机房巡检知识点(一)
  11. Topaz Plugins Bundle 2018 for Mac(PS插件滤镜特效包)
  12. Java基础--数值和字符串
  13. PCAN-USB FD选型使用比较
  14. 返款接口教程,转账到支付宝账户开通方法
  15. Python爬虫-安某某客新房和二手房
  16. 《可转债投资魔法书》:魔法般教会你可转债
  17. Python中print换行问题
  18. 腾讯要建超级大脑,用三张网实现AI in All万物互联
  19. 从win+ubuntu双系统安装到ubuntu环境配置和美化
  20. 推荐一款臭虫药,很有效,亲测。

热门文章

  1. GPU编程优化篇-姜雪伟-专题视频课程
  2. 电脑wifi连接受限
  3. php mail方法_php邮件发送的两种方式
  4. unity hub版本管理工具 中文包 及入门指北
  5. 支付宝小程序上传图片my.uploadFile
  6. 如何为数据中心综合布线选择合适的MPO连接器芯数?
  7. 在linux关闭防火墙命令,linux关闭防火墙命令
  8. 5G+高精度定位应用测试报告
  9. 从星座文化走红背后,看其发展新前景
  10. HTML字体 font和链接