Android屏幕适配

一:Android中的一些术语:

  1:Screen Size 屏幕尺寸:实际的物理尺寸,以屏幕的对角线为准;

屏幕尺寸分为:small,normal,large,xlarge分别表示小,中,大,超大屏

  2:Resolution 分辨率:在屏幕上的像素总数,在支持多个屏幕时,应用程序不直接与分辨率相关,应用程序应该只与屏幕大小和密度相关。

  3:Density 屏幕密度:表示单位面积内的像素个数,通常用dpi为单位,即每英寸多少个像素点,屏幕密度分为:ldpi,mdpi,hdpi,xhdpi,它们的标准值分别是:120dpi,160dpi,240dpi,320dpi;

Android中常见的一些单位:

    px(像素):屏幕上的点,绝对长度,与硬件相关。

    in(英寸):长度单位。

    mm(毫米):长度单位。

    pt(磅):1/72英寸,point。

    dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。

    dip:Density-independent pixel,同dp相同。

    sp:Android中标准的表示字体的大小;

屏幕尺寸界线 : 屏幕的尺寸是按照dp计算的, dp越大, 尺寸越大;

   small(小屏) : 最少 320dp * 426dp;

   normal(普通) : 最少 320dp * 470dp;

   large(大屏) : 最少 480dp * 640dp;

   xlarge(超大) : 最少 720dp * 960dp;yi

Android屏幕适配

二:布局文件layout自适应;

 Android系统根据屏幕物理尺寸的大小,准备了5套布局,来适应各种大小的布局不失真问题,

    layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),

    layout-small(屏幕尺寸小于3英寸左右的布局);

    layout-normal(屏幕尺寸小于4.5英寸左右);

    layout-large(4英寸-7英寸之间);

    layout-xlarge(7-10英寸之间)

三:Drawable文件自适应;

    Android根据dip值,准备了5套图片资源,用来适应不同大小的手机;

  • res/drawable-xhdpi:超高分辨率的图片,至少960 X 720;

  • res/drawable-hdpi:高分辨率的图片,如WVGA(480 X 800)、FWVGA(480 X 854);

  • res/drawable-mdpi:中等分辨率的图片,如HVGA(320 X 480);

  • res/drawable-ldpi:低分辨率的图片;如QVGA(240 X 320);

  • res/drawable:主要存放xml文件和分辨率要求低的图片;

四:value

    Android在资源文件values用文件名的方式提供了限定符可以帮助我们判断上述情况,限定符(mdpi,tvdpi,hdpi)可以帮助我们判断屏幕密度,限定符(land,port)可以帮助我们区分屏幕横竖屏状态,而限定符(1024x600...)可以适配计算虚拟键或者不计算虚拟键的屏幕;

  • values

  • values-hdpi

  • values-land-hdpi-1024x552

  • values-land-hdpi-1024x600

  • values-land-hdpi-1280x800

  • values-land-mdpi-1024x552

  • values-land-mdpi-1024x600

  • values-land-mdpi-1024x720

  • values-land-mdpi-1280x800

  • values-land-tdpi-1280x720

  • values-mdip

  • values-hdpi

  • values-port-hdpi-1024x600

  • values-port-hdpi-1280x800

  • values-port-mdpi-1024x552

  • values-port-mdpi-1024x600

  • values-port-mdpi-1024x720

  • values-port-mdpi-1280x800

  • values-port-tdpi-1280x720

注意1:

        分辨率限定符的匹配是向下匹配,如果没有values-land-mdpi-1024x552,比如,分辨率values-land-mdpi-1024x600的屏幕,当rom不把虚拟键计算到屏幕尺寸时,实际显示的屏幕应该是values-land-mdpi-1024x552,无法适配到values-land-mdpi-1024x600,那这样就可能适配到下一级,比如values-land-mdpi-800x480,但是现在的平板已经没有这么低的分辨率了,所以是配到无限定符的values-mdpi里,造成界面显示上的瑕疵。

注意2:

        由于分辨率限定符的匹配是向下匹配,所以如果有mdpi屏幕不能精确适配到上述指定值时,values-mdpi至少可以保证app运行时不至于崩溃,同理values可以保证ldpi屏幕的平板不会因生成view而又取不到相应值而崩溃。


你可能感兴趣的:(图片自适应,android屏幕适配,屏幕自适应,values自适应,布局自适应)