適配多螢幕的最佳實踐

2021-06-28 12:38:45 字數 1463 閱讀 2253

**:

oct26th, 2014

7:58 pm

對於android應用開發來講,比較頭疼的,也是比較重要的乙個工作就是要盡可能多的支援市場上的android裝置,由於android的開放性,各種奇奇怪怪的裝置都有,符合標準的,不符合標準的,行貨,水貨,山寨貨魚龍混雜,防不勝防。為了讓我們的應用能夠得到盡可能多的使用者,我們就必須能讓應用以超強的適應性,以能在混亂的手機裡生存。而適配裝置,gui螢幕的適配又是重中之中,如果使用者都無法正確的看到你的ui頁面,那還用個毛線啊!

之前曾經寫過一篇文章,介紹了一下子如何使用dimen資源來適配多螢幕,隨著android版本的演進,有些概念已經過時,需要重新整理一下。

其實對於多螢幕適配,乙個核心的原則就是要對布局做好抽象的分離,把可變與不可變分開,把與螢幕相關的尺度dimen寫在單獨的dimen檔案中,然後使用引用。如果不這樣做,就會造成更多的**重複。

通常我們的做法是以螢幕密度(screen density),做為區分來提供不同的資源,以達到支援和適配不同的螢幕,比如我們會為mdpi, hdpi, xhdpi,各準備一套和dimen,大多數情況下,這很好,能對付了大多數裝置,但這還不夠。

比如說,480x800, 480x854, 540x960這三種裝置,都是同樣的螢幕密度hdpi,但是螢幕尺寸並不相同,對於qhd(540x960),它的可用空間要比標準hdpi(480x800)要多得多,如果以qhd為基準來調的布局,那麼放到480x800上,有些元素會被擠扁,或者顯示不完全。而且目前,540x960的裝置要多於480x800的,因為螢幕都是越來越大,精度越來越高的。

那麼如何解決呢? 現在推薦的做法是用螢幕的可用高度(注意是可用高度,不包括狀態列和底部硬鍵)來區分不同的資源。以前是可以在螢幕密度後面指定具體的解析度來區分,比如values-hdpi-960x540。但是現在這種做法已被廢棄,官方文件中都不會提及了。很顯然它的問題在於不夠通用。

現在推薦的做法是用可用高度或者可用寬度來指定:

這裡面的sw和sh就是螢幕的可用寬度和可用高度。這種方式的適配規則是:用小於且最接近裝置螢幕高度或寬度的那個資源,比如裝置可用高度是610dp,則選擇values-h600dp,以此類推。用這個方式就能區分同為hdpi的480x800和540x960,因為:

所以,可以用values-h600dp來區分二者。 使用此的方法為:

除了上面提到的,還有一些在適配時需要注意的事情。

盡量多用wrap_content和match_parent,特別是對於像文字等元素的度量

對於頁面的邊框距離,最好用最外層的viewgroup來指定,或者使用margin或者使用padding。 這點的主要意思是,如果你想要頁邊框距是20dip,那麼用乙個viewgroup來指定,要麼是最外層的,要麼是最裡層的,千萬不要是外面的5dp,中間的5dp,裡面的5dp,最裡面的5dp,雖然整體效果看起來是一致的,但是當適配時就會蛋疼了。固定在某個上面,這樣既方便除錯,也方便適配和移植。

同乙個應用,邊框距等最好做到一致,起碼對於同一型別的頁面更是如此。

Android多螢幕適配

android中為實現多螢幕適配,可以在layout hdpi layout mdip layout ldpi layout 目錄下放置布局檔案。如果乙個大屏手機適配的話,適配的順序是layout hdpi layout mdpi layout layout ldpi 如果乙個中屏手機適配的話,適配...

Android自動多螢幕適配

1.切圖示 乙個列表中每個列表項都有乙個圖示但是圖示的大小可能不是完全一樣的。可以根據最大的那個來指定統一尺寸,即將其他一些小的圖示居中然後在四周填充 透明畫素 來使得圖示的大小一致,以便於布局排版。2.介面的螢幕適配 個人覺得最好的適配方法就是 使用螢幕百分比 為計算單位來動態新增生成元件 3.運...

iOS開發日誌 多螢幕適配

ios現在已經進入雜屏時代,想想5年前的320 480跟320 568.在iphone6的年代,我們多數的適配方案是簡單的縮放,然而現在已經進入齊劉海時代,這種方案已經不適合了,我們不得不使用別的適配方案,這裡簡單理一下自動布局 trait variations size class 自動布局這裡就...