2. 代码中把Density设置为默认的Density,也就是当前,机器中的Density。那如何设置这个Density。同样在这个类最下面,找到系统获取Density的方法:
而如何给系统设置Density,就在./device/eshion/f101/init.rc,添加setprop ro.sf.lcd_density 240.
3. 更改系统像素是在./framework/core/java/android/content/res/CompatibilityInfo.java下:
eg:
1.DisplayMetrics.java中
系统定义了3个等级的density,分别是low-120,medium-160,high-240
2.customize\customer_cfg\t600a\res\system.prop里
ro.sf.lcd_density = 240
3.trunk\customize\customer_cfg\t600a\res\u-boot下sp8810.h:根据 lcd 分辨率确定需要的宏
#if defined(CONFIG_SP6820G_RTL_HL) // HVGA
#define CONFIG_LCD_HVGA 1
//#define CONFIG_LCD_WVGA 1
#else
//#define CONFIG_LCD_HVGA 1
#define CONFIG_LCD_WVGA 1
#endif
=======================================================================================================
Android 适配不同分辨率&hdpi、mdpi、ldpi&横屏竖屏
一:不同的layout
Android手机屏幕大小不一,有480×320, 640×360, 800×480.怎样才能让App自动适应不同的屏幕呢?
其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640×360,layout-800×480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。
二:hdpi、mdpi、ldpi
在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480×800),FWVGA (480×854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320×480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240×320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。
三:横屏竖屏
以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。
还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。
要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:
在AndroidManifest.xml里面配置一下就可以了。加入这一行android:screenOrientation=”landscape”。
例如(landscape是横向,portrait是纵向):
WVGA = 800 * 480; WVGA2 = 768 * 480; FWVGA = 854 * 480; DVGA = 960 * 640; PAL = 576 * 520; NTSC = 486 * 440; SVGA = 800 * 600;
WSVGA [...]