Tuesday, June 26, 2012

Android device 多逹 4000 種, 不同螢幕大少/解像度會否成為開發者的致命傷?



早前有報導指 Android device 多逹 4000 種, 亦因此為開發者帶來不少難度. 其中, 各種不同螢幕大少/解像度會否成為開發者的致命傷?


要設計一個能支援所有 Screen Size 的 UI 主要考慮到三點, 一是螢幕大小 , 二是螢幕密度 , 三是顯示方向.


一, 螢幕大小歸納了四種: small, normal, large, and xlarge. 由 1.6 版本開始, Google 已經向開發者說明 UI 設計應該使用 Density-independent pixel (dp / dip) 作為計算單位. 所以, 首先注意的是每一件元件都要以 dp 來作單位, 而不是 px. 再配合不同 Qualifier 就可以為不同大小的螢幕設定不同的排版 (如: layout-small/, layout-xlarge/). 排版時要善用 weight 及 9.patch 圖片, 這樣系統顯示版面時會自動為不同螢幕大小修正長度,


二, 螢幕密度大概分為 ldpi, mdpi, hdpi, xhdpi 及 tvdpi(Google TV用及新的 Nexus 7), 根據(一)的排版, 就可以製作不同大小的圖像應用到不同密度的螢幕. 圖像大小可以以 mdpi 作為參巧值, 如一個 50x50px 的圖片, 在 hdpi 可以製作成 75x75px. 除質素提高外, 較大的圖像所製作的按鈕在高密度的螢幕會較為好按. 如果用家的設備沒有相應的圖像資源, 系統則會自動縮放現有的資源顯示. 如要偷懶的話, 可以只為 hdpi 製作圖像, 但細小的螢幕可能會出現圖像過大的情況, 而自動縮放亦都會使圖像質素下降.


三, 基本上只要為(一)所排的版面再以不同方向排版一次, 如有需要的話可以配合 Fragment 為不同的方向製作不同版面, 這個有機會再講.


如一切順利的話, 你的應用相信已經可以支援市場上九成九的螢幕了。相信第一次製作全螢幕支援的軟件會感到困擾, 但一掌握了技術的話, 以後只要作幾個重點測試已經足夠了. 況且就算做得不太好, 亦只會"比較難睇", 軟件還是可用的. 相信不會成為開發者的致命傷.

No comments: