Android适配
相关概念
屏幕尺寸
含义:手机对角线的物理尺寸
单位:英寸(inch)-1英寸=2.54cm,android常见的尺寸有5寸,5.5寸,6寸
屏幕分辨率
含义:手机在横向,纵向上的像素点数总和,一般描述成屏幕的"宽x高"=AxB,表示屏幕在横向方向(宽度)上有A个像素点,在纵向方向上有B个像素点,例如1080x1920表示宽有1080个像素点,高有1920个像素点
单位:px(pixel),1px=1像素点;ui设计图会以px为统一的计量单位
android常见的分辨率:320x480,480x800,720x1280,1080x1920
屏幕像素密度
含义:每英寸的像素点数
单位:dpi
image.png
屏幕尺寸,分辨率,像素密度三者关系
密度(单位/dpi)=√(宽²+高²)/屏幕大小-->密度即每英寸的像素点
密度无关像素
含义:density-independent pixel,叫dp或dip,与终端上的实际物理像素点无关
单位:dp,可以保证在不同屏幕像素密度的设备上显示相同的效果
android开发时用dp而不是px单位设置图片大小,这是android特有的单位
-
dp与px的转换
在android中规定以160dpi为基准:1dp = 1px
image.png
独立比例像素
含义:scale-independent pixel,叫sp或sip
单位:sp android开发时用此单位设置文字大小,可根据字体大小首选项进行缩放,推荐使用偶数,因为使用奇数和小数容易造成精度的丢失问题,小于12sp的字体会太小
屏幕适配问题的本质
- 使得布局,布局组件,图片资源,用户界面流程匹配不同的屏幕尺寸
- 使得图片资源匹配不同的屏幕密度
屏幕密度适配解决方案
- 布局控件匹配
- 使用密度无关像素:dp,sp
- 屏幕尺寸和屏幕分辨率适配:百分比适配方法
- 以某一个分辨率为基准,生成所有分辨率对应像素数列表(实际可用的分辨率进行适配)
- 下载鸿洋提供的工具 autolayout.jar 此工具默认基准是480*320,通过在cmd下敲
java -jar xx.jar 基准宽 基准高 额外支持尺寸1的宽,额外支持尺寸1的高_额外支持尺寸2的宽,额外支持尺寸2的高
- 下载鸿洋提供的工具 autolayout.jar 此工具默认基准是480*320,通过在cmd下敲
- 将生成的像素数列表(lay_x.xml和lay_y.xml)存放在res目录下对应的values文件下,必须在默认的values里面也创建对应的默认lay_x.xml和lay_y.xml,否则会报错,不能进行适配,此values下对应的单位应改为dp,为不同于其他的px
- 根据设计图的尺寸,找到对应像素数的单位,然后设置给控件
图片资源匹配
- 使得图片在不同屏幕密度上显示相同的像素效果
做法:提供备用位图(符合屏幕尺寸的图片资源)由于android可在各种屏幕密度的设备上运行,因此需要图片始终满足各类密度的要求,因为图片太多会造成apk变大,因为有些设计师不会专门为android切图,而iphone的一倍图(1334750)的屏幕密度是326,接近android的(720*1280)屏幕密度320,所以我们可以用一倍图放到xhdpi文件夹里面
参考链接
https://www.jianshu.com/p/ec5a1a30694b
http://dditblog.com/itshare_843.html 有下载jar包的地址
https://blog.csdn.net/Arise_Yang/article/details/105954296 获取实际可用的分辨率的方法