android字体的工作原理
来源:互联网 发布:ubuntu下载安装jdk 编辑:程序博客网 时间:2024/05/16 05:17
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 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字体工作原理
- android字体工作原理
- Android字体工作原理
- Android字体工作原理与应用
- text——Android字体工作原理
- 浏览器的工作原理-android
- Android VierPager的工作原理
- android的Handler工作原理
- Android view的工作原理
- Android AsyncTask 的工作原理
- Android View的工作原理
- android View的工作原理
- Android-View 的工作原理
- Android App的工作原理
- Android View 的工作原理
- android View的工作原理
- Android ViewPager的工作原理
- IActivityManager ,ActivityManagerNative,ActivityManagerService之间如何进行工作
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- 进入recovery模式玩玩
- superuser 拒绝shell获得最高权限
- view.invalidate()原理
- android字体的工作原理
- android的启动过程(代码)
- ActivityThread-activity启动分析
- Android中JNI编程的那些事儿
- ubuntu最近使用到的
- ZOJ 2481 Unique Ascending Array
- ubuntu增加启动运行脚本
- adb shell error: 问题
- ubuntu开机挂在分区