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。

更多相关文章

  1. android应用自定义字体
  2. android xml布局文件属性说明
  3. Android 5.1 API 22 所有sdk文件下载地址
  4. Android新增AppCompatTextView自适应字体大小和文本宽度
  5. Android文件的读写
  6. Android xml资源文件中@、@android:type、@*、?、@+引用写法含义
  7. android 入门xml布局文件--转
  8. Android - 文件读写操作 总结
  9. android中的布局文件

随机推荐

  1. 实现简单的Android的播放视频功能
  2. Android 在屏幕上打印LOG
  3. [转]Android Audio简述
  4. js 判断当前操作系统 ios, android, 电脑
  5. 对话框式activity
  6. 在Android中支持表情
  7. android 竖屏activity跳转横屏activity返
  8. Android ListView在TalkBack下有些项无法
  9. 探讨相对布局的重要特性和属性
  10. Ubuntu 下配置使用Android adb