Android适配总结

 1.dp与px的

密度类型 代表的分辨率 屏幕密度 换算 比例
低密度(ldpi) 240x320 120   1dp=0.75px 3
中密度(mdpi) 320x480 160 1dp = 1px 4
高密度(hdpi) 480x800 240 1dp = 1.5px 6
超高密度(xhdpi) 720x1280 320 1dp = 2px 8
超超高密度(xxhdpi) 1080x1920 480 1dp = 3px 14

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

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

屏幕密度 图标大小
mdpi 48x48px
hdpi 72x71px
xhdpi 96x96px
xxhdpi 144x144px
xxxhdpi 192x192px

 

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文件夹找到相应的图片资源文件,然后将原有大像素的图片自动缩放成小像素的图片,于是大像素的图片照样可以在小像素分辨率的手机上正常显示
 
 
 
参考:
posted @ 2019-05-15 14:34  弄潮儿儿  阅读(528)  评论(0编辑  收藏  举报