android UI设计时须要注意遵循的设计原则
1、Android設備屏幕尺寸分布
首先看一下各種屏幕的尺寸和屏幕密度劃分,下圖是各種屏幕尺寸相應的范圍:
從上圖能夠看出。相應normal尺寸的屏幕范圍集中在常見的3到5寸屏之間。large尺寸相應的就主要是5到7寸的nottpad之類的設備。比如三星的Note和Nexus7平板等,再網上走就是平板電腦了。接下來是屏幕密度(dpi),須要說明的時,平時所說的屏幕分辨率事實上不能作為屏幕適配的根據,應該根據屏幕密度和屏幕尺寸來換算,屏幕密度是指每寸屏幕內容納的像素數,屏幕密度從ldpi到xhdpi分別相應為120dpi、160dpi、240dpi、320dpi,屏幕密度越高、分辨率越高、屏幕尺寸越小就產生了視網膜屏幕。
在屏幕適配中。Google推薦針對mdpi(160dpi)進行設計。然后依照比例進行縮放,這樣的方法主要針對位圖(某些不規則圖片,無法拉伸的圖片,其它建議使用.9圖)。以mdpi作為baseline,并以3:4:6:8的比例縮放:
2、Android資源文件
drawable-hdpi里面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)
drawable-mdpi里面存放中等分辨率的圖片,如HVGA (320x480)
drawable-ldpi里面存放低分辨率的圖片,如QVGA (240x320)
3、Android上常見度量單位
px(像素):屏幕上的點,絕對長度。與硬件相關。
in(英寸):長度單位。
mm(毫米):長度單位。
pt(磅):1/72英寸,point。
dp(與密度無關的像素):一種基于屏幕密度的抽象單位。在每英寸160點的顯示器上。1dp = 1px。
dip:Density-independent pixel,同dp同樣。
sp:在dp的基礎上,還與比例無關。個人理解為是一個矢量圖形單位。
在xml中定義大小,建議TextView使用sp。其它使用dp
相應關系? ? ? ? ? ? ? ? Android手機屏幕標準 ? ? ??相應圖標尺寸標準 ? 屏幕密度
xhdpi ? ? ? ? ? ? ? 1280*720 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 96*96 ? ? ? ? ? ? 320
hdpi ? ? ? ? ? ? ? ? 480*800 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 72*72 ? ? ? ? ? ? 240
mdpi ? ? ? ? ? ? ? ?480*320 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 48*48 ? ? ? ? ? ? 160
ldpi ? ? ? ? ? ? ? ? ?320*240 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?36*36 ? ? ? ? ? ? 120
模擬器上不同分辨率全部相應的信息:?QVGA : {density=0.75, width=240, height=320, scaledDensity=0.75, xdpi=120.0, ydpi=120.0}
HVGA : ?{density=1.0, width=320, height=480, scaledDensity=1.0, xdpi=160.0, ydpi=160.0}
WVGA : {density=1.5, width=480, height=800, scaledDensity=1.5, xdpi=240.0, ydpi=240.0}
當中。density為顯示的邏輯分辨率;width及height就為屏幕分辨率(為絕對寬度與高度),與fields中的widthPixels及 heightPixels一致;scaleDensity與density一致;xdpi及ydpi為x方向與y方向的像素密度。
4、怎樣計算密度(dpi)
1.標準是240*320畫在1.5*2平方inch上。那么像每平方英寸有240*320/(1.5*2)=25600點,也就是一平方英寸的像素點為25600,所以dpi取為它的平方根160;假設你的dpi是120,那么它的密度就是0.75.
2. 密度不僅僅是與width有關。還與height有關,所以無論width是1.8還是1.3,它的密度都有可能是1;比方width是1.8。僅僅要它的 height是3/1.8的話,假設pixel為240*320的話,它的密度仍舊是1;相同假設width為1.3,僅僅要它的 height為3/1.3的話,像素點為240*320,則密度也是1.
3.320*480/(1.5*2)得到單位平方英寸的點為51200,所以單位平方英寸是240*320畫在1.5*2屏幕的2倍。可是這是平方英寸啊,算密度的時候要開平方的啊,所以應該是2開平方,是1.414吧。大致密度為1.5。
5、px與dip的關系
Android中。在160dpi (mdpi)中, 1 dip= 1 px;
以此類推,在120dpi(ldpi)中, 1 dip = 0.75px;
? ? ? ? ? ? ? ? ? 在240dpi (hdpi)中, ?1 dip = 1.5px;
? ? ? ? ? ? ? ? ? 在320dpi(xhdpi)中, 1dip = 2px。
6、怎樣做到與密度無關
假設屏幕密度為160,這時dp和sp和px是一樣的。
1dp=1sp=1px,但假設使用px作單位,假設屏幕大小不變(假設還是3.2寸)。而屏 幕密度變成了320。那么原來TextView的寬度設成160px,在密度為320的3.2 寸屏幕里看要比在密度為160的3.2寸屏幕上看短了一半。但假設設置成160dp或160sp的話。
系統會自己主動將width屬性值設置成320px的。
也就是160 * 320 / 160。
當中320 / 160可稱為密度比例因子。也就是說。假設使用dp和sp。系統會依據屏幕密度的變化自己主動進行轉換。
官方文檔總結的計算公式為:pixels = dps * (density /160).
使用dip作為View的單位。這樣就能夠同一時候兼容各種不同的分辨率。不會造成UI的不可兼容。
總結
以上是生活随笔為你收集整理的android UI设计时须要注意遵循的设计原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今日头条的,顶部导航,实现分析
- 下一篇: Metalink使用指南