Android屏幕適配
安卓設備非常多,碎片化嚴重,需要適配~
屏幕尺寸:對角線
屏幕分辨率:橫縱向上的像素點數
單位:px ( 1px = 1個像素 )
一般縱向像素*橫向像素,主要1280x720;800x480;854x480;1920x1080;960x540;480x320;
屏幕像素密度:每英寸上的像素點數
單位:dpi ( dot per inch)
屏幕像素密度與屏幕尺寸和分辨率有關~
eg:屏幕4.95inch,分辨率1920*1080
屏幕像素密度 = sqrt(1920^2 + 1080^2)/4.95;
dpi = 445;
sp:Scale-Independent Pixels 谷歌推薦不要小于12sp,表用奇數小數防止丟失精度。
px:構成圖像的最小單位。
dp、dip:Density Independient Pixels縮寫,密度無關像素。以160dip為基準,1dip = 1dp。
不同的設備上實現非常好的顯示效果,因此有多種像素密度
主流的5種像素:mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi
以2:3:4:6:8的比例縮放,可修飾drawable和values
屏幕密度 | 圖標尺寸 |
---|---|
mdpi(為基準dpi) | 48*48px |
hdpi | 72*72px |
xhdpi | 96*96px |
xxhdpi | 144*144px |
xxxhdpi | 192*192px |
支持各種屏幕尺寸
1. 使用wrap_content、match_parent、weight
wrap_content:包裹內容,根據內容大小拉伸。
match_parent:填充父布局。
weight::權重,權重大的優先拉伸。
也可用dp直接指定內容大小。
weight 計算公式:計算出的寬度 = 原來的寬度 + 剩余控件所占的百分比
eg:
假設屏幕寬度為L,兩個Button水平擺放,一個權重是1一個權重是2。
如果設置Button的寬度為match_parent的時候那么Button1就是2/3L = L + (L-2L) * 1/3 = L - 1/3L = 2/3L;
如果設置Button的寬度是0dp的話那就是 1/3L = 0 + L*1/3 = 1/3L
2. 使用相對布局
3. 使用限定符
layout-large(android3.2之前)
layout-sw600 可以實現雙面板模式
方向限定符
res/values-sw600dp-land/layout.xml
res/values-sw600dp-port/layout.xml
4. 使用自動拉伸位圖
.9圖:9png圖片一般用在需要拉伸的地方,比如聊天程序的對話框,字數不同,對話框的大小也不同。被分割為9個部分。
支持各種屏幕密度
1、使用非密度制約像素
2、提供備用位圖
實施自適應用戶界面流程
屏幕適配
【整理自慕課網: 凱子哥 http://www.imooc.com/learn/484 】
【Android Design Android 設計指南非官方簡體中文版http://www.apkbus.com/design/index.html 】