android中可能会遇到修改字体的情况,虽然说需求比较少,但是偶尔还会遇到

可以使用三方框架来帮助我们简单做到

api "uk.co.chrisjenx:calligraphy:2.2.0"

在style文件中添加一个字体的style

fonts/Roboto-Thin.ttf

我app中的main/assert/fonts/Roboto-hin.ttf    放置字体文件

AS集成这个框架,在activity的  attachBaseContext(Context newBase)方法中添加我们修改后的字体的context

protected void attachBaseContext(Context newBase) {

super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));

}

为什么要在attachBaseContext中添加呢?  我们都知道activity中是有context的,但是context是怎么来的呢?

activity的构造方法是无参构造,所以不是通过构造方法传递的吗?

activity的集成流程  context(抽象类) -> ContextWrapper(实现了context的所有方法,service的父类) -> ContextThemeWrapper(带主体的context) -> activity

再看下activity的启动流程  :    activity启动是先执行了  attach方法   下面才回去执行onCreate   如果我们想把一些初始化放到最高的优先级,可以放在 attachBaseContext中。

private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {

Activity activity = null;

try {

java.lang.ClassLoader cl = r.packageInfo.getClassLoader();

activity = mInstrumentation.newActivity(

cl, component.getClassName(), r.intent);

} catch (Exception e) {

}

try {

if (activity != null) {

ContextImpl appContext = new ContextImpl();

appContext.init(r.packageInfo, r.token, this);

appContext.setOuterContext(activity);

CharSequence title = r.activityInfo.loadLabel(appContext.getPackageManager());

Configuration config = new Configuration(mCompatConfiguration);

activity.attach(appContext, this, getInstrumentation(), r.token,

r.ident, app, r.intent, r.activityInfo, title, r.parent,

r.embeddedID, r.lastNonConfigurationInstances, config);

attachBaseContext到底干了什么呢?  代码其实很简单,就是把context赋值给activity,所以我们在把newbase添加了字体,所以activity的context,都会有我们的字体效果。

需要注意一点,就是每一个界面都有一个context,所以建议写一个baseActivity,直接继承。

protected void attachBaseContext(Context base) {

if (mBase != null) {

throw new IllegalStateException("Base context already set");

}

mBase = base;

}

android 怎么获取app 字体颜色,android app 修改字体相关推荐

  1. android布局黑色字体颜色,Android 沉浸式状态栏-字体颜色与背景颜色修改实现与兼容...

    沉浸式状态栏究其根本就是将布局内容延伸到状态栏中,让状态栏覆盖在布局上或者隐藏. 实现 首先,要修改状态栏android版本至少要在4.4以上,并且在4.4是不能让状态栏透明的,只能达到一种半透明的阴 ...

  2. html字体颜色 html中设置字体颜色代码 字体颜色获取

    html字体颜色 html中设置字体颜色代码 字体颜色获取 html字体颜色设置更改,html设置字体颜色代码方法有哪些 DIVCSS5为大家介绍在html中设置字体颜色方法,字体颜色修改方法,字体颜 ...

  3. java如何设置控制台打印的字体颜色、背景、字体样式(idea设置打印字体样式)工具类 - 附插件方式

    效果: 设置控制台打印字体颜色.背景.字体样式,java工具类 package org.dxl.log;import java.util.Arrays;/*** 在控制台按照传入格式输出 ** @au ...

  4. CKEditor5 功能追加,自定义设置:段落对齐,字体颜色,背景色,字体大小等配置添加

    CKEditor5 功能追加 CKEditor5的安装详见官网: https://ckeditor.com/ckeditor-5/demo/ 如上图所示:ckeditor5只默认了字体加粗,斜体,加入 ...

  5. HTML设置超链接字体颜色和点击后的字体颜色

    CSS为一些特殊效果准备了特定的工具,我们称之为"伪类".其中有几项是我们经常用到的,下面我们就详细介绍一下经常用于定义链接样式的四个伪类 定义链接样式  CSS为一些特殊效果准备 ...

  6. html css超链接字体颜色,css如何定义字体颜色

    css定义字体颜色的方法:1.在文字所在标签中直接使用css样式设置颜色即可.2.在文字所在标签中使用id或class引入css字体颜色样式. css设置字体颜色的方法: 1.标签内设置CSS字体颜色 ...

  7. android 怎么获取app 字体颜色,Android APP使用自定义字体实现方法

    android系统内置字体 android 系统本身内置了一些字体,可以在程序中使用,并且支持在xml配置textView的时候进行修改字体的样式.支持字段为android:textStyle ,an ...

  8. android notification设置不同字体颜色,Android Notification自定义通知样式你要知道的事...

    本文将根据个人经验对Notification做个总结,以供参考! 什么是通知(Notification) 通知是一个可以在应用程序正常的用户界面之外显示给用户的消息. 通知发出时,它首先出现在状态栏的 ...

  9. android布局黑色字体颜色,Android开发之FloatingActionButton悬浮按钮基本使用、字体、颜色用法示例...

    本文实例讲述了Android开发之FloatingActionButton悬浮按钮基本使用.字体.颜色用法.分享给大家供大家参考,具体如下: 这里主要讲: FloatingActionsMenu自定义 ...

最新文章

  1. Docker核心技术之容器详解
  2. java swing 架构_Java Swing1 基本框架
  3. 091023 T GIX4 项目中的 智能部署 和 智能客户端
  4. 有没有必要把机器学习算法自己实现一遍?
  5. .Net桌面程序的旗舰--参加亚控科技组态王7.0发布有感
  6. 用 Parity 发送 ERC20 Token
  7. 内部类(闭包与回调)
  8. xcode 连接 github 进行代码版本控制
  9. P5008-[yLOI2018]锦鲤抄【tarjan】
  10. macos安装urar具体步骤_【2019】macOS重装系统出现“准备安装时出错“?
  11. 从Java到C++——常量的使用规则
  12. python pyecharts 折线图_Python数据可视化之pyecharts实现各种图表
  13. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_03-自定义查询页面-前端...
  14. 计算机vfp系统,计算机等级考试VFP教程:第一章数据库系统
  15. 主成分分析在SPSS上的实现与结果分析——基于SPSS实验报告
  16. cadence ~ PCB排版 必要流程
  17. “铭赛科技”科创板IPO:“机器人王国梦”价值几何?
  18. 学Linux高性能Web集群,看这本书就够了
  19. 从零开始搭建terraria(泰拉瑞亚)服务器
  20. ios13短信如何转移到android,iOS13加入全新数据迁移功能,无需网络也能转移旧手机数据...

热门文章

  1. 装mysql最后一步没响应_解决MySQL安装到最后一步未响应的三种方法
  2. web版本 开源压测工具_siege--Web性能压测工具
  3. python中的引用怎么理解_python 引用和对象理解
  4. mysql把游标数据存入表中_mysql数据库怎么使用游标
  5. delphi 中如果不进行 closehandle 会怎么样_心理学:当你迷茫了,请坚持做三件事,你的未来会越来越好...
  6. vue v-if判断数组元素的值_Vue项目上线做的一些基本优化
  7. DAHDI与Zaptel
  8. Wince6 Eboot中加入开机画面
  9. ashx连接mysql_对C#中的web访问mysql数据库的一些知识点进行了整理归纳总结
  10. php vo 遍历,thinkPHP简单遍历数组方法分析