`
crazier9527
  • 浏览: 994833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)android 多屏幕的支持问题

阅读更多

 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
  • QVGA (240x320), 2.6"-3.0" diagonal
   
Normal screen
  • WQVGA (240x400), 3.2"-3.5" diagonal
  • FWQVGA (240x432), 3.5"-3.8" diagonal
  • HVGA (320x480), 3.0"-3.5" diagonal
  • WVGA (480x800), 3.3"-4.0" diagonal
  • FWVGA (480x854), 3.5"-4.0" diagonal
Large screen  
  • WVGA (480x800), 4.8"-5.5" diagonal
  • FWVGA (480x854), 5.0"-5.8" diagonal
 

 


 

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics