在?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?的数值设置将不引起屏幕的变化