通过反射机制获得系统字体Size【ActivityManagerNative无法调用问题】
2015-10-21 11:57
567 查看
【反射机制】参考此文【http://blog.csdn.net/coolcoffee168/article/details/5835143】 一
【获取系统字体】参考此文【http://blog.csdn.net/chr8880/article/details/8021237】 二
【参考文】【http://jaymsimusic.iteye.com/blog/781439】 三
在学习中遇到一个问题,需要获取系统字体大小,也就是 【设置-显示-字体大小】中设置的大小,网上搜索通过参考顶部【二】文,得知要用到ActivityManagerNative这个类的方法,但是这个类是hide的,再搜索通过文【三】得知需要用到Java中的反射机制,最后通过参考文【一】学习反射机制得以解决,感谢上面的几篇参考文档,现在记录下来如下:
case R.id.btn_fontSize:
// 获取系统字体大小
try {
Configuration mCurConfig = new Configuration();
// 获取ActivityManagerNative类的对象activityManagerNative
Class<?> activityManagerNative = Class
.forName("android.app.ActivityManagerNative");
/*
* 获得可调用getConfiguration方法的对象oam(调用
getDefault方法得到的东西)
* getMethod:获取AMN类中的getDefault方法
* invoke:通过activityManagerNative对象调用getDefault方法
*/
Object oam = activityManagerNative.getMethod("getDefault")
.invoke(activityManagerNative);
// 获取getConfiguration方法并通过oam对象调用,得到
config对象
Object config =
oam.getClass().getMethod("getConfiguration")
.invoke(oam);
mCurConfig.updateFrom((Configuration) config);
fontSizeTv.setText(mCurConfig.fontScale + "");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
咕噜咕噜哈哈哈
【获取系统字体】参考此文【http://blog.csdn.net/chr8880/article/details/8021237】 二
【参考文】【http://jaymsimusic.iteye.com/blog/781439】 三
在学习中遇到一个问题,需要获取系统字体大小,也就是 【设置-显示-字体大小】中设置的大小,网上搜索通过参考顶部【二】文,得知要用到ActivityManagerNative这个类的方法,但是这个类是hide的,再搜索通过文【三】得知需要用到Java中的反射机制,最后通过参考文【一】学习反射机制得以解决,感谢上面的几篇参考文档,现在记录下来如下:
case R.id.btn_fontSize:
// 获取系统字体大小
try {
Configuration mCurConfig = new Configuration();
// 获取ActivityManagerNative类的对象activityManagerNative
Class<?> activityManagerNative = Class
.forName("android.app.ActivityManagerNative");
/*
* 获得可调用getConfiguration方法的对象oam(调用
getDefault方法得到的东西)
* getMethod:获取AMN类中的getDefault方法
* invoke:通过activityManagerNative对象调用getDefault方法
*/
Object oam = activityManagerNative.getMethod("getDefault")
.invoke(activityManagerNative);
// 获取getConfiguration方法并通过oam对象调用,得到
config对象
Object config =
oam.getClass().getMethod("getConfiguration")
.invoke(oam);
mCurConfig.updateFrom((Configuration) config);
fontSizeTv.setText(mCurConfig.fontScale + "");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
咕噜咕噜哈哈哈
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories