原文地址:http://www.rickystudio.org/android/multipx.html
應用程式的適配多解析度,是個很重要的問題,UI的設計,很令人頭痛。。。。。
隨著時間的推移,android手機應用的開發人員,慢慢會受到以下困擾,目前市場上android作業系統的手機解析度不統一,我們開發的產品能否在不同的解析度下良好的工作,最起碼不至於面目全非,確實是我們比較頭疼的問題,本文將帶你一步步解決這個問題。
首先我們介紹幾個概念,都是一些專業術語,但對大家來說並不陌生。準備好了嗎?開始了…
- dpi(Dots Per Inch,點每英寸): 是指輸出解析度,針對於輸出裝置而言的,在這裡是指每英寸的物理光點數,用來表示手機的解析度,可以反映螢幕的清晰度。
- ppi(Pixels Per Inch,像素每英寸): 是指輸入解析度,針對於輸入裝置而言的,映像ppi值越高,畫面的細節就越豐富,因為單位面積的像素數量更多,數位相機拍出來的圖片常見的有72ppi,180ppi和300ppi等。
- dip(Device Independent Pixels,裝置獨立像素): 不同裝置有不同的顯示效果,這個和裝置硬體有關,一般我們為了支援WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。(VGA在這是指像素總數640*480)
- density像素密度: android中160DPI密度係數是1。(個人感覺這裡和dpi是一個概念,只是單位不同)
這裡提到的WVGA、HVGA、QVGA,通常被表示為手機的解析度,實則不然。率中文字典中的解釋為比值,兩數之比。VGA只是一個數值,不是一個比值。而上文提到的dpi確是一個比值。它的計算方法為:dpi=對角線的像素值/螢幕尺寸。
實戰篇 布局中使用dip,在layout.xml中使用dp單位,比如10dp。如果在java代碼中則需要通過一個計算。首先計算出螢幕的density :
如果你的圖片大小是10*20像素,那麼實際顯示 widthpx = 10*density,heightpx = 20*density。 我們也需要為android手機提供3套布局檔案和3套UI表徵圖。
總結,如果要考慮螢幕大小, 需要以320*480的螢幕為參照,但是即使是這樣, 對於更小的螢幕還是會有問題。所以, 看你要支援的最小螢幕是什麼, 就按照最小螢幕來編程。以上僅代表本人觀點,如果錯誤請留言指正。
如: