1.dp与px的

密度类型代表的分辨率屏幕密度换算比例
低密度(ldpi)240x320120  1dp=0.75px3
中密度(mdpi)320x4801601dp = 1px4
高密度(hdpi)480x8002401dp = 1.5px6
超高密度(xhdpi)720x12803201dp = 2px8
超超高密度(xxhdpi)1080x19204801dp = 3px14

在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px,一般是以xhdpi较多,即1dp = 2px;

2.图标的各个屏幕密度的对应尺寸

屏幕密度图标大小
mdpi48x48px
hdpi72x71px
xhdpi96x96px
xxhdpi144x144px
xxxhdpi192x192px

3.布局适配:

  ①layout-large命名布局文件,只适用于3.2之前版本;

  ②使用了layout-sw 600dp的最小宽度限定符,即无论是宽度还是高度,只要大于600dp,就采用layout-sw 600dp目录下的布局;

  ③如果适配3.2之前的和3.2之后的版本,因为布局一样,只是名字不一样,所以用@layout/main_twopanes,就避免了重复定义布局文件的情况

  ④values-sw600dp-land (大屏、横向、双面板、宽-Andorid 3.2版本后)、res/values-sw600dp-port/layouts.xml(大屏、纵向、单面板带操作栏-Andorid 3.2版本后)

  ⑤通过使用"wrap_content"、"match_parent"和"weight"来替代硬编码的方式定义视图大小&位置

4.图片资源

   ①必须要使用.9.png后缀名,因为系统就是根据这个来区别nine-patch图片和普通的PNG图片的;

②如果我们为 xhdpi 设备生成了 200x200 px尺寸的图片,就应该按照相应比例地为 hdpi、mdpi 和 ldpi 设备分别生成 150x150、100x100 和 75x75 尺寸的图片

  ③如果增加其他的资源会更APK体积变大,就只采用xhdpi的图片资源;

  ④图片资源放到drawable-v24里面,导致7.0以下不能找到图片 不同的drawable文件夹用于为设备兼容性和不同的Android版本提供不同的屏幕密度。同理mipmap-anydpi-v26  API 26(安卓8.0)也是一样的道理,注意不同的文件对应的不同的版本

5.界面流程匹配 

  • 确定当前布局
  • 根据当前布局做出响应
  • 重复使用其他活动中的片段
  • 处理屏幕配置变化

6.Android 加载资源过程  

    SDK检测到你手机的分辨率是320x480(dpi=160),会优先到drawable-mdpi文件夹下找对应的图片资源;但假设你只在xhpdi文件夹下有对应的图片资源文件(mdpi文件夹是空的),那么SDK会去xhpdi文件夹找到相应的图片资源文件,然后将原有大像素的图片自动缩放成小像素的图片,于是大像素的图片照样可以在小像素分辨率的手机上正常显示
 
 
 
参考:
05-27 08:19