Android屏幕适配学习笔记

概念

屏幕尺寸:屏幕对角线的长度 单位英寸 1英寸= 2.54厘米(约)
屏幕分辨率:屏幕横纵向上的像素点数 单位px 1px=1像素 一般以纵向像素* 横向像素表示 如: 1920*1080
屏幕像素密度(DPI): 每英寸上的像素点数 单位 dpi (dot per inch) 与屏幕尺寸和屏幕分辨率有关
计算方式:
屏幕尺寸 4.95inch 分辨率为1920 * 1080
DPI = Math.sqrt(1920^2 + 1080^2) /4.95

什么是dp dip dpi sp px ? 以及他们之间的关系?

px 构成图像的最小单位

dp = dip(density independent pixels) 密度无关像素
以160dpi为基准 1dp = 1px
如果像素密度为 240dpi 那么 1dp = 240/160 = 1.5px

sp (scale independent pixels) 可以根据文字大小首选项进行缩放 推荐使用 12sp 14sp 18sp 22sp 来作为字体大小 并且不要使用奇数 否则的话有可能造成精度的丢失

什么是mdpi hdpi xdpi xxdpi?以及他们之间的关系?

名称 像素密度范围 图标尺寸 比例
mdpi 120 ~160dpi 48*48px 1
hdpi 160~240dpi 72*72px 1.5
xhdpi 240 ~ 320dpi 96*96px 2
xxhdpi 320 ~ 480dpi 144*144px 3
xxxhdpi 480 ~ 640dpi 192*192px 4

ldpi比较罕见了 不做考虑

解决方案

支持各种屏幕尺寸

weight
Android屏幕适配学习笔记_第1张图片
image.png

当我们把button 的width 修改成match_parent后效果变成


Android屏幕适配学习笔记_第2张图片
image.png

这是因为 weight 计算出的宽度 = 原来的宽度 + 剩余空间所占百分比的宽度
定义 屏幕宽度=L
button1 宽度 = L + (L- 2L)* 1/3 = 2/3L 同理 button2 宽度= 1/3L

使用限定符 加载不同布局

尺寸限定符 layout-large (android 3.2 之前)...
最小宽度限定符 layout-sw600dp (android 3.2 之后 sw = small width 最小宽度 不区分宽高, 既 长或者寛最小的那个 在600dp以上)
布局别名限定符 见下图
屏幕方向限定符 values-sw600dp-land/layouts.xml 内容同布局别名

setcontentview(R.layout.main) 设置的时候需要使用 别名 而不是布局的名称


Android屏幕适配学习笔记_第3张图片
image.png
使用.9 图

左边 和上边的交叉举行区域是 可伸缩区域
右边 和 下边的交叉区域为内容区域(边距间隔 实际上为我们的控件设置的padding )


Android屏幕适配学习笔记_第4张图片
image.png

支持各种屏幕密度

使用非密度制约像素

即使用sp dp等单位

提供备用位图

建议为各个分辨率分别提供图片
如果较大的图片放到m资源文件里面 app运行在xx分辨率的手机上 则图片会被拉伸 加载图片会被放大,内存占用会增大3*3=9倍(m:xx = 1: 3)

实施自适应用户界面流程

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

笔记来自于网上教程 侵删

设计参考: http://www.apkbus.com/design/layout-principles.html

你可能感兴趣的:(Android屏幕适配学习笔记)