android分辨率适配总结

本文总结了Android屏幕适配的相关知识,包括分辨率、像素密度(DPI)的概念和计算公式,以及如何根据手机屏幕分类进行适配。重点讨论了布局文件和图片资源的处理策略,建议主要考虑布局适应性,避免为每种屏幕大小和密度提供单独资源。还提到了XML布局的最佳实践,如使用Wrap_content和DIP,并提供了AndroidManifest.xml中<supports-screens>元素的配置示例。此外,列举了常见分辨率,如QVGA、HVGA、WVGA等,以及在实际开发中的注意事项和调试方法。
摘要由CSDN通过智能技术生成
1.  物理尺寸:就是所说的几寸的屏幕,代表屏幕对角线的长度,比如3.5寸、3.7寸、4寸、7寸等。

        分辨率:是屏幕总共能显示的像素数,通常我们都说几百×几百,比如240*320,320*480,480*800等

      像素密度(DPI):DPI的全称是dots per inch,每英寸点数.

   这三个参数,任两个确定后,第三个量就是确定了。公式为:某边的分辨率(总像素数)= 该边物理尺寸(单位是英寸) × 像素密度。

   比如一个3.5寸的屏幕,分辨率为480×800,那么密度为开方(480^2+800^2)/3.5约等于为194。屏幕大小和屏幕像素密度是可以独立的,不是说一个5寸屏的密度就一定是hdpi。

 

 2. 手机屏幕分类

  按密度分为:低密度(ldpi),中密度(ndpi),高密度(hdpi),超高密度(xhdpi)。

   按尺寸分为: small,normal, large, and xlarge

.

3.到底要考虑布局,还是考虑图片,或者两者同时考虑由应用决定。我个人觉得,一般布局要考虑得多一些。如果应用有很多图片,而且对现实细腻程度要求很高,才考虑图片。

4.但是,所谓考虑多屏幕适应,并非要为没每种屏幕大小提供一个布局文件,也并非要为每种屏幕密度提供一套位图,按大的分类提供就可以了。(如果要那样做也没错,但将付出巨大的维护代价)

     例如,一般为所有尺寸是normal的屏幕提供一套布局,尽管normal里又分很多种(看 图5),但一般android都能很好的适应。也可以为所有密度是hdpi的屏幕提供一套图片,尽管hdpi也分很多种(看 图5),但一般android都能很好的适应。

   另外一方面,即使按大的分类考虑布局文件,也并非要为每个布局文件都创建多个版本。只有布局文件中用数值定义了控件大小(无论你用的单位是px还是dip),才需要考虑写多个布局文件。如果是用fill_parent,wrap-contents等方式则用一个布局文件就可以了,把它放在layout目录里。

5.注意:实际开发中,为了适合多屏幕,又减少维护量。mdpi,hdpi内一般要放东西,ldpi则可放可不放。当要用到ldpi时,它从hdpi里去取并缩放。效果也不错。

6.QVGA  HVGA  WVGA
       QVGA

      中VGA的四分之一尺寸,亦即在液晶屏幕(LCD)上输出的分辨率是240×320像素。QVGA支持屏幕旋转,可以开发出相应的程序,以显示旋转90°、180°、270°屏幕位置。由HandEra公司发布。多用于手持/移动设备。

 WVGA
    即“Wide VGA” 。其分辩率为800×480象素。是扩大了VGA(640×480)的分辨率。应用于PDA和手机等,因为很多网页的宽度都是800,所以WVGA的屏幕会更加适和于浏览网页,可以说是未来手持设备的分辨率的大趋势。

HVGA  即“Half-size VGA”。是VGA的一半,分辨率为(480*320),(3:2宽高比),它是用于各种各样的PDA设备,首手机屏幕VGA QVGA HVGA WVGA区别,一般手机液晶屏幕都是TFT材质,VGA WVGA QVGA HVGE XGA只是表示屏幕分辨率只,是个代号和材质没关系。

    分辨率对照表:
代号 分辨率 代号 分辨率 
QVGA 320*240像素 WQVGA 400*240像素 
HVGA 320*480像素 VGA 640*480像素 
WVGA 800*480像素 XGA 1024*480像素

7. 多屏幕适应黄金法则

  1.XMLLayout中最好控件大小最好用Wrap_content, fill_parent。

  2.如果必须使用数字来到定义控件大小,最好用DIP。文字大小用sp

   3.不要用px定义控件,文字大小。

   4.不要用绝对布局

   5.为不同密度手机,提供不同分辨率图片,如果你发现一套图片在另外一种密度的手机上表现都还不错,就不需要    为那种密度提供额外的图片。

   6.用模拟器测试不同分辨率

   7.需要注意的地方,以上设置适用于android3.2以下的版本。

8.

9.我在实际开发中,一般先按照WVGA标准,480*800,normalscreen,240dpi,3.5寸建立一个模拟器。布局文件目录先只建layout一个,图片也先放到drawable-hdpi下,然后在上面调试UI。觉得没问题了,才建立其他尺寸和密度的模拟器来看效果,只对需要调整的部分重新设计布局文件和图片,并放到合适的目录下。

10.

在AndroidManifest.xml中提供新的一个元素<supports-screens>用于支持多屏幕机制。

<supports-screens

         Android:largeScreens="true"  是否支持大屏

         Android:normalScreens="true"  是否支持中屏

         Android:smallScreens="true"  是否支持小屏

         Android:anyDensity="true"    是否支持多种不同密度

/>

11.320X480  现在最主流的低端安卓机都是这个分辨率.

       480X800  现在最主流的中高端安卓智能机的分辨率,包括 windows phone也是这个分辨率

       480X854  这个是WFVGA,是480X800的加长版

       1280X800  现在巨屏用了这个分辨率

           1280X720  传说中的HD,也是现在各品牌主流旗舰机型的分辨率,而且屏幕都很大

12.java代码中设置宽高度

    也许很多人会反对这种方法,因为即使是官方也是推荐使用xml的方式写布局。不过我们在这不会像Swing那样写那么多麻烦的布局代码,因为我们只是在代码中重新设定控件的宽高度而已,其他属性依然是交给xml布局文件的。这个方法其实是我跟同事偷学来的,虽然我不赞成这样的方法,但他确确实实也是解决屏幕自适应问题的方案之一,而且它没我想象的那么复杂,其实很简单。
    首先我们要做的是获取当前屏幕的宽高度,因为这个在后面要用到
    我们可以写两个静态变量用来保存当前屏幕的宽高度:
public class Constant {
        public static int displayWidth;  //屏幕宽度
        public static int displayHeight; //屏幕高度
}

然后在第一个Activity启动的时候,获取这两个值

 

            DisplayMetrics displayMetrics = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
                Constant.displayWidth = displayMetrics.widthPixels;
                Constant.displayHeight = displayMetrics.heightPixels;

 

 布局代码我们可以全都统一写成wrap-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值