閱讀590 返回首頁    go 技術社區[雲棲]


Android 的不同尺寸圖片和布局(手機)

應對繁多的分辨率和尺寸。

圖片的話,Android 是用 dpi 作為單位,你隨便選擇一個圖片,在Win下麵右鍵就會看到以dpi為單位的屬性,dpi越高圖片也就越精細。對於手機或顯示設備來說,一個像素就是一個點,所以dpi=ppi,反過來,經常說的手機屏幕ppi高低數字等同於寫程序時候考慮的dpi數值。

iPhone4的視網膜屏幕是326ppi,屬於ldpi mdpi hdpi xhdpi的最後xhdpi(大約320ppi),後來的Android手機大抵也都這個數值,往上也沒什麼意義,反正你眼睛看不出來,處於能省盡量省的原則,圖片都用xhdpi算了,低ppi的手機自個兒係統處理的了。

然後是布局,布局 4寸左右是normal,4寸到7寸是large(這些都是估算而已)。根據公式 px = dp * (dpi / 160)

和原則上 

  • large screens are at least 640dp x 480dp
  • normal screens are at least 470dp x 320dp

你計算下,normal的分辨率起碼是寬 2*dpi,4.65寸,720p分辨率的galaxy nexus是315ppi,寬應該為起碼 630,而720p的寬 720 正好符合。

再計算下 large,寬為3*dpi,連galaxy nexus都達不到要求。能達到要求的基本都是7寸+的平板。

所以手機來說,同一種高寬比的話你隻要寫normal的布局。

加上之前文章說的,分辨率有未來主流的16:9和當下主流的15:9 兩種。

手機布局應該寫2個,但是當下貌似沒有辦法(除非代碼裏判斷)根據高寬比選擇特定布局。

當然與其說是布局,還不如說是布局裏麵的圖片的選擇,用同一個圖片資源,在2個不同的高寬比屏幕上有一定的差異,所以隻能用到.9.png來處理。

Android 3 和 4 引入的新布局機製,比如 sw600dp,是給平板用的,跟手機木有關係。

結論就是:

res/layout/my_layout.xml            

res/drawable-xhdpi/my_icon.png      

16:9和15:9用.9.png來處理

Google 本意是想一個apk同時跑在手機和平板上,方便共用代碼,但是我感覺明顯同樣的程序手機和平板的功能肯定會有不同的,大屏幕的可能性要比小屏幕大吧,而且各種界麵布局+代碼都有,放一個項目裏反而感覺亂,還不如 iOS 那種平板的應用出個專門的 HD 版本。這種混合的策略很容易導致手機版本被裝上平板,然後就碰到了難看變形的界麵(我知道是可以聲明針對特定屏幕,但是人家不一定會設置的,其中又牽扯到 Screen Compatibility Mode),這樣的體驗很糟糕的。

參考:https://developer.android.com/guide/practices/screens_support.html

最後更新:2017-04-02 16:48:06

  上一篇:go Oracle中數據導出成CVS,EXCEL
  下一篇:go SVN提示文件被鎖住以及Unlocker軟件的使用