Android屏幕适配

概述

  • Android屏幕尺寸过于繁杂,为了优化用户体验,屏幕适配显然必不可少。
  • 基础概念,解决方案。


基础概念


1. 屏幕的尺寸、分辨率、像素密度

尺寸: 屏幕的对角线长度,单位英寸,1英寸 = 2.54厘米
分辨率: 在横纵向上的像素点数,单位px,1px = 1个像素点
像素密度: 每英寸上的像素点数,单位dpi

像素密度和尺寸、分辨率有关
例:尺寸 = 4.95inch , 分辨率 = 1920 * 1080 , dpi = ?
dpi = √(1920²+1080²)/4.95 = 445

2. px、dp、dip、dpi、sp

px: 构成图像的最小单位,通常Android原生API返回的都是px,如获取屏幕的宽高
dp/dip: 密度无关像素,以160dpi为基准,1dp = 1px
sp: 设置文字大小的单位,谷歌推荐使用12sp以上,尽可能不使用奇数或小数,否则将导致精度的丢失

3. mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi

mdpi:    120dpi ~ 160dpi
hdpi:    160dpi ~ 240dpi
xhdpi:   240dpi ~ 320dpi
xxhdpi:  320dpi ~ 480dpi
xxxhdpi: 480dpi ~ 640dpi


解决方案


1. 使用wrap-content/match-parent/weight

weight计算方式:最终长度 = 原长 + 剩余长度所占百分比的长度
例:屏幕宽为L,2个btn水平放置,btn1的weight=1,btn2的weight=2
(1)设置btn的宽度为match_parent
    btn1 = L + (L - 2L) * 1/3 = L - 1/3L = 2/3L
    btn2 = L + (L - 2L) * 2/3 = L - 2/3L = 1/3L
(2)设置btn的宽度为0dp
    btn1 = 0 + (L - 0) * 1/3 = 1/3L
    btn2 = 0 + (L - 0) * 2/3 = 2/3L

2. 集成 Android-percent-support 库,以百分比的形式实现不同屏幕尺寸的适配

3. 使用限定符,主要实现手机和平板的单面板和双面板显示

1. 最小宽度限定符
    res/layout/main.xml 常规
    res/layout-sw600dp/main.xml 最小宽度为600dp
2. 屏幕方向限定符
    res/values-sw600dp-land/layouts.xml 水平方向
    res/values-sw600dp-port/layouts.xml 竖直方向

4. 使用自动拉伸位图 --- .9图

  • 左上黑点 --- 可拉伸区域
  • 右下黑点 --- 内容区域,通常为文字显示区域

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