写在前面:
安卓手机屏幕的分辨率的多样化,为了给用户,一个良好的用户体验,我们需要对屏幕进行适配。
核心概念
屏幕尺寸:指的屏幕对角线之间的距离,单位为英寸,1英寸=2.54厘米。
屏幕分辨率:指的是横纵向上的分辨率,单位为px,1px=1个像素点,一般以纵向像素*横向像素。
屏幕像素密度:指每英寸上的像素点数。单位为dpi。与屏幕尺寸和屏幕分辨率有关。dpi = 横向分辨率的平方+纵向分辨率的平方开根号/屏幕尺寸。
单位
dp、sp、dip区别
dip: 密度无关像素 以160dpi为基准,以1dip=1px,
dp同dip
sp:设置文字大小,可以根据文字大小首选项进行放缩,谷歌官方推荐为12sp,14sp,18sp,22sp,不能使用奇数和小数。
像素密度
名称 | 像素密度范围 |
---|---|
mdpi | 120dpi-160dpi |
hdpi | 160dpi-240dpi |
xdpi | 240dpi-320dpi |
xxdpi | 320dpi-480dpi |
xxxdpi | 480dpi-640dpi |
支持各种屏幕尺寸
- 使用wrap_content,match_parent,weight
wrap_content:表示包含组件的内容
match_parent:表示充满父布局
weight:设置权重。计算公式为:原来的宽度+剩余空间所占的百分比宽度。
例:android:layout_width = “0dp”
android:layout_height = “match_parent”
android:layout_weight = “1”
则该控件占据的宽度 = 0+(L-0) *(1/3),占据总屏幕的三分之一。L表示屏幕的总宽度。 - 使用相对布局,禁用绝对布局
相对布局能比较灵活的设计控件的位置,绝对布局直接把控件的位置写死,对不同屏幕的适配差。 - 使用限定符
限定符能够使屏幕根据不同的屏幕分辨率加载不同的布局,增加布局的复用性
使用尺寸限定符large
在res文件中添加layou_large文件夹。并在里面添加布局文件。
使用最小宽度限定符
使用布局别名
使用方向限定符 - 使用自动拉伸位图
使用.9的图片。 - 使用非密度制约像素dp,sp
- 提供备用位图