在 android 中分为 small, normal, large 3 个大小的屏幕, density 分为 240,160, 120 3 个层次。分辨率有 1024*600 , 320*480 , 480*800 等等。
什么是分辨率:
是整个屏是多少点, 比如 800x480 ,它是软件的显示单位。
什么是 density :
density 表示每英寸有多少个显示点 ( 逻辑值 ) ,它的单位是 dpi : dot per inch ,通常屏幕大时, density 就大,屏幕小时, density 就小。
如表 1 android 如何区分屏幕的大小:
Low density (120), ldpi | Medium density (160), mdpi | High density (240), hdpi | |
Small screen |
| ||
Normal screen |
|
|
|
Large screen |
|
(表 1 )
android 如何支持多屏幕 :
不管对大屏幕和中等屏幕来说如果 android:anyDensity="false" ,android:normalScreens (或 largescreen ) ="false" ,Android 都会把320*480 160(density) 作为基准屏幕绘画 , 假如我们面对 1024*600 ,240(density) 且 android:anyDensity="false",android: largescreen=”ture”, 那么为了显示 160density 的效果,分辨率必须降低 , 降低的比例为 240/160=1.5 即 683*400 160(density) ( 由上面分辨率和 density 的定义可以知道 ) 。
当 android:anyDensity="false",android:largescreen=”false” 时 , 会画出 320*480 , 160(density) 的图像出来,因为 320*480 160(density) 不会填满整个屏幕,所以多出的地方会被填以黑色。至于比例是多少 我个人认为在 1024*600 240 上长和宽为 1024/240=4.2 和 600/240 =2.5 ,而 320*480 160(density) 上长和宽为 480/160=3 和 320/160=2 ;很明显没有填满。
当 android:anyDensity="true" android , largescreen=”false” 时,很明显会由 320*480 , 160(density) 的画面上 *1.5 变成 480*720 , 240(density) 的画面。
当屏幕为 normalScreens 时,且 normalScreens=”false” 则屏幕不变。而屏幕的分辨率只是和 density 相关 ( 因为基准屏幕就是 normalscreens) 。即分辨率的比例为 240/160 或 160/160 (具体看当前屏幕的 density )。
当屏幕为 smallscreen 时, android:smallScreens 和 android:anyDensity 的数值设置将不引起屏幕的变化