Android字体工作原理
android字体由android 2D图形引擎skia实现,并在Zygote的Preloading classes中对系统字体进行load。
相关涉及到:
android的启动过程
ZygoteInit.java中的preloadClasses方法,对
/framework/base/preloaded-classes文件里面的类一一加载
Class.forName("android.graphics.Typeface");
Class.forName()会加载类到DVM(JVM),同时加载static代码块。
( java中class.forName和classLoader都可用来对类进行加载。前者除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。而classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。Class.forName(name, initialize, loader)带参函数也可控制是否加载static块。并且只有调用了newInstance()方法采用调用构造函数,创建类的对象 )
static {
DEFAULT = create((String)null, 0);
DEFAULT_BOLD = create((String)null, Typeface.BOLD);
SANS_SERIF = create("sans-serif", 0);
SERIF = create("serif", 0);
MONOSPACE = create("monospace", 0);
sDefaults = new Typeface[] {
DEFAULT,
DEFAULT_BOLD,
create((String)null, Typeface.ITALIC),
create((String)null, Typeface.BOLD_ITALIC),
};
public static Typeface create(String familyName, int style) {
return new Typeface(nativeCreate(familyName, style));
}
nativeCreate()是jni方法的实现在(**.java里的jni一般名字也是**.cpp)
文件有:Typeface.cpp和skFontHost_android.cpp,其中后者是skia针对android平台字体实现的port。
分享到:
相关推荐
Android字体大小自适应不同分辨率的解决办法 今天有人问我,Android系统不同分辨率,不同大小的手机,字体大小怎么去适应呢?其实字体的适应和图片的适应是一个道理的。 一、原理如下: 假设需要适应320×240,480...
1.2.1 准备工作 1.2.2 windows系统下的搭建过程 1.2.3 linux系统下的搭建过程 1.3 常见问题汇总 1.4 使用本书的配套实例 1.5 小结 第2章 android开发必备 2.1 android体系结构 2.1.1 各种库和android运行环境 2.1.2 ...
《android高级编程》首先简要介绍android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前android 1.0 sdk编写定制移动程序所需的知识,还...
> 这里有原理解析! 使用 主要的使用流程就是输入文字,然后设置一些动画的属性,还有画笔特效,最后启动就行了。想要自己控制绘画的进度也可以,详情见下面。 Gradle compile 'com.yanzhikai:TextPathView:0.1.3'...
Android系统的字体包路径为手机存储\system\font 其中三个字体包分别对应的字体如下: DroidSans.ttf 系统默认英文字体 DroidSans-Bold.ttf 系统默认英文粗字体 DroidSansFallback.ttf 系统默认中文字体 工具/原料
4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——...
4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——...
4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——...
4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——...
4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示...
核心代码在Utils.java,用文字代替像素块形成图片的算法原理如下: 1.根据原图片的大小和字体的大小创建一张空白图片 2.把原图片按字体的大小分成若干块,取每一块的像素的颜色的平均值 3.将指定文本以得到的平均...
适用于Android开发人员的轻量级库,可简化您使用XML资源的方式,尤其是在您严格遵循Google材料设计原则的情况下。 该库主要涉及XML资源。 例如,由原理定义的颜色或可由4dp整除的尺寸大小。 指南在这里。 。 话题 ...
在小米的开机动画和一些欢迎界面中, 我们经常看到这种闪闪发光的流光字体。看起来很炫酷,其实实现原理相当简单,我们只需要写自定义控件继承TextView,然后使用渲染器Gradient设置颜色渐变和Paint的setShadowLayer...
传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作。 然而,由于HTML5的W3C标准规范还未制定,安卓系统中类...
功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可...