Android-屏幕适配

参考文章
https://www.jianshu.com/p/1302ad5a4b04
http://www.cocoachina.com/android/20151030/13971.html
https://mp.weixin.qq.com/s/d9QCoBP6kV9VSWvVldVVwA

什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?

  1. 屏幕尺寸
    屏幕尺寸指屏幕的对角线的长度
    单位是英寸,1英寸=2.54厘米
  2. 屏幕分辨率
    屏幕分辨率指在横纵向上的像素点数
    单位是px,1px=1个像素点
    一般以纵像素橫像素,如19201080
  3. 屏幕像素密度
    屏幕像素密度是指每英寸上的像素点数
    单位是dpi,即“dot per inch”的缩写
    屏幕像素密度与屏幕尺寸和屏幕分辨率有关

什么是dp、dip、dpi、sp、px?之间的关系是什么?

  1. px构成图像的最小单位
  2. dp、dip,Density Independent Pixels的缩写,即密度无关像素,以160dpi为基准,1dip=1px

Density-independent pixel (dp)独立像素密度。标准是160dip.即1dp对应1个pixel,计算公式如:px = dp * (dpi / 160),屏幕密度越大,1dp对应 的像素点越多。
上面的公式中有个dpi,dpi为DPI是Dots Per Inch(每英寸所打印的点数),也就是当设备的dpi为160的时候1px=1dp;

  1. sp即Scale-Independent Pixels可以根据文字大小首选项进行缩放(12sp,14sp,18sp,22sp)

什么是mdpi、hdpi、xdpi、xxdpi?如何计算区分?

名称 像素密度范围
mdpi 120dpi~160dpi
hdpi 160dpi~240dpi
xhdpi 240dpi~320dpi
xxhdpi 320dpi~480dpi
xxxhdpi(2k屏幕) 480dpi~640dpi

支持各种屏幕尺寸

  1. Weight
    计算出的宽度= 原来的宽度+剩余空间所占百分比的宽度
    屏幕宽度 L
    Button1
    2/3L = L +(L-2L)1/3 = L-1/3L=2/3L
    0dp
    1/3L = 0 +L
    1/3 = 1/3L
    Button2
    1/3L = L+(L-2L)*2/3 = L-2/3L= 1/3L

  2. 尺寸限定符

res/layout/main.xml 单面板



    

res/layout-large/main.xml 双面板


    
    

  1. 屏幕宽度限定符

res/layout/main.xml,单面板(默认)布局:



    

res/layout-sw600dp/main.xml,双面板布局: Small Width 最小宽度


    
    

  1. 使用布局别名

res/layout/main.xml: 单面板布局
res/layout-large/main.xml: 多面板布局(3.2之前)
res/layout-sw600dp/main.xml: 多面板布局(3.2之后)

res/layout/main.xml 单面板布局
res/layout/main_twopanes.xml 双面板布局(抽取出相同部分进行统一管理)

setContentView(R.layout.main);

默认布局
res/values/layout.xml:


    @layout/main

Android3.2之前的平板布局
res/values-large/layout.xml:


    @layout/main_twopanes

Android3.2之后的平板布局
res/values-sw600dp/layout.xml:


    @layout/main_twopanes

  1. 屏幕方向限定符
    res/values-sw600dp-land/layouts.xml:

    @layout/main_twopanes

res/values-sw600dp-port/layouts.xml:

    @layout/main

你可能感兴趣的:(Android-屏幕适配)