Android中density如何设置
来源:http://android.tgbus.com/Android/tutorial/201103/347176.shtml
在新建模拟器的时候设置hw.lcd.density=180,是没有任何作用的,系统会有个判断,去规为标准:
代码位置:
git://android.git.kernel.org/platform/external/qemu.git?android?hw-lcd.c
(顺便说一个很好的android原码查找方法:http://www.google.com/codesearch)
void hwLcd_setBootProperty(int density)
{
char temp[8];
/* map density to one of our three values for now */
if (density < (LCD_DENSITY_MIN + LCD_DENSITY_DEFAULT)/2)
density = LCD_DENSITY_MIN;
else if (density < (LCD_DENSITY_DEFAULT + LCD_DENSITY_MAX)/2)
density = LCD_DENSITY_DEFAULT;
else
density = LCD_DENSITY_MAX;
snprintf(temp, sizeof temp, "%d", density);
boot_property_add("qemu.sf.lcd_density", temp);
}
所以我们只要输入的不是120,160,240,她都会归到在这三个数值里。
经过几经尝试终于有了结果
一.每个硬件厂商都会有自己的硬件配置文件,会把硬件的信息记载到里边,有个大虾叫我这样改:
1、修改 default.prop 文件,添加 ro.sf.lcd_density=180 一行,转到 <android_src>/out/target/product/generic/root 目录下
$ cd <android_src>/out/target/product/generic/root
$ cat >> default.prop << EOF
ro.sf.lcd_density=180
EOF
2、重新制作 ramdisk.img:
$ cpio -o -H newc -O ramdisk.img.1 < list
$ gzip -c ramdisk.img.1 > ramdisk.img
3、测试:
用模拟器加载新的 ramdisk.img :
$ emulator -avd <avd_name> -ramdisk ramdisk.img &
二.修改源码默认值160,这种方法会有效果的:
具体修改源码中test_froyo/external/qemu/android/hw-lcd.h文件的160为所要的density值
例如:改为180
#defineLCD_DENSITY_DEFAULT160==》#defineLCD_DENSITY_DEFAULT180
然后保存,编译源码,网上方法介绍的很多,这里就不赘诉了。
编好后,在test_froyo/out/host/linux-x86/bin下的emulator文件,
拷到sdk/tools/emulator,覆盖即可
注意:新的emulator默认的density是你自己设置的值(本文为180),最好保存一下原有的emulator,以便日后恢复。
更多相关文章
- 更改android锁屏方向
- Android: android sensors, HAL范例
- android中调试之日志
- android 5.0多用户支持
- ndk下使用sqlite
- android系统权限关机重启
- android MediaPlayer出现RuntimeException: failure code: -38崩
- Android(安卓)横屏时禁止输入法全屏
- 通话距离感应实现源码