您的位置:首页 > 移动开发 > Android开发

Android中屏幕适配问题

2013-08-01 23:06 218 查看
4种常见的分辨率:

1、VGA:最早其实是IBM计算机的一种显示标准,最后逐渐的演变,成了640×480这个分辨率的代名词,也是现在绝大多数分辨率的基准。

2、QVGA:就是Quarter VGA的简称,意思是VGA分辨率的四分之一,这是目前最为常见的手机屏幕分辨率,竖向的就是240×320像素,横向的就是320×240像素。目前绝大多数的手机都采用这种分辨率。

3、HVGA:代表的意思是Half-size VGA,意思是VGA分辨率的一半,为480×320像素,宽高比为3:2。目前这种分辨率的屏幕大多用于PDA,当然iPhone和第一款Google手机——T-Mobile G1也都是采用这种分辨率,黑莓也有手机采用HVGA分辨率的屏幕。

4、WVGA:Wide VGA,分辨率分为854×480像素和800×480像素两种。由于目前很多网页的宽度都是800像素,所以这种分辨率通常用于PDA或者高端智能手机,方便用户浏览网页。

 

屏幕的适配通常需要注意如下的几个细节:

第一:在xml代码的布局文件中,请尽量使用相对布局或者是线性布局的方式。这在一定的程度上可以解决屏幕适配的问题。在这里并不推荐使用绝对布局。

第二:在xml文件的单位规定时,请尽量的使用dip或者是sp,而不要使用px。因为不同设备有不同的显示效果,这个和设备硬 件有关,一般我们为了支持
WVGA、HVGA 和 QVGA 推荐使用这个,不依赖像素.

第三:为不同分辨率提供不同的布局文件。(文件夹中的布局文件名称要相同

layout-320x240    320 (大分辨率) 要写在前面,(240)小分辨率写在后面

layout-480x320     480 (大分辨率) 要写在前面,(320)小分辨率写在后面

drawable-hdpi
该图片即适用于横屏,也适用于竖屏
drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹中的资源
drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源

第四:自android2.0开始之后drawable文件被三个文件夹drawable-hdpi,drawable-mdpi,drawable-ldpi三个文件夹所取代。关于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)

    系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
  在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片,对不同的屏幕提供合适大小的图片。

第五:在AndroidManifest.xml文件的元素如下添加子元素

       <supports-screens android:largeScreens="true"
                                      android:normalScreens="true"

                                      android:anyDensity="true"
                                      android:smallScreens="true">
        </supports-screens>
       
以上是为我们的屏幕设置多分辨率支持(更准确的说是适配大、中、小三种密度)。       android:anyDensity="true" ,这一句对整个的屏幕都起着十分重要的作用,值为true,我们的应用程序当安装在不同密度的手机上时,程序会分别加载hdpi,mdpi,ldpi文件夹中的资源。
android:anyDensity="false",则应用会将大小密度转变成中密度,从而去加载mdpi中的资源。这里同样,当android:anyDensity="false",则应用会去加载mdpi中的资源。如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源。如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有对应的图片资源,那么系统会加载drawable-mdpi文件夹中的资源

 

获取屏幕密度:

DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int densityDpi = metric.densityDpi;  //
屏幕密度DPI(120 / 160 / 240)
 

结果测试:

使用AVD Manager创建多个不同大小的模拟器,进行测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: