Android手機 全面屏(18:9屏幕)適配指南

前言

從小米MIX 1發布以來,越來越多所謂「全面屏」手機發布,如三星S8,小米MIX2,VIVO X20,Google Pixel2等等...2017年下半年開始,「全面屏」將大範圍覆蓋,低至千元機水平,就像當年手機屏幕從720P到1080P過渡一樣,歷史車輪,滾滾向前,不可阻擋!

暫且不論所謂全面屏如何定義,作為Android開發者更多關心的是屏幕適配的兼容性。全面屏剛出來的時候並不可怕,可怕的是後來出現了一些異形全面屏——把屏幕挖掉一塊的那種異類!全面屏手機大致思路都是壓縮額頭與下巴,屏幕比例從傳統的16:9變為18:9,提高屏佔比以及屏幕內的虛擬導航鍵,本文將簡要介紹全面屏適配中一些需要注意的東西以及解決方案。

適配指南

一、聲明最大屏幕高寬比

在應用配置文件AndroidManifest.xml中顯式聲明支持的最大屏幕高寬比(maximum aspect ratio)。其中 ratio_float 為高寬比:

傳統屏幕:ratio_float = 16/9 = 1.778 ;

三星S8屏幕:ratio_float = 18.5/9 = 2.056。

鑒於目前全面屏屏幕比例,將ratio_float設置為2.1即可適配一眾全面屏手機。

<meta-data n android:name="android.max_aspect"n android:value="ratio_float" />n

然而有一點需要注意的是,在Android 7.0以上Google默認支持了分屏模式,即Manifest文件中配置Activity的android:resizeableActivity默認屬性為true,在這種情況下並不需要配置Maximum Aspect Ratio即可自動適配全面屏。如果由於某些原因(UI適配等)禁止了分屏模式,這個時候就要注意了!負責將出現上下黑條的顯示效果,奇醜無比!Screens Support 官方文檔

二、啟動頁適配

在做啟動優化,解決冷啟動白屏的時候,我們往往會為要啟動的Activity設置主題為一張背景圖。那麼問題就來了,以往16:9的的背景圖在18:9的屏幕中會有什麼表現呢?

(淘寶開屏拉伸變形,此圖來自小米開發者中心)

這種情況下就尷尬了,我們知道很多啟動頁背景都是動態下發的(廣告)內容豐富,即使是.9圖在這種場景恐怕也難以解決。這點在金立手機上的做法值得一提,看圖:

(金立全面屏啟動頁UI適配)

是好是壞不便多言,但是有兼容性方案總比莫名拉伸好吧!若Android陣營沒有一個統一規範,恐怕又要難為開發者、UI設計師了吧!

不能依賴單一廠商的解決方案,只能從Android系統屬性出發。考慮到目前大部分全面屏手機只是在高度上拉長,且大多為6.0英寸左右,像素密度對比xxhdpi並沒有多大區別,那我們可以在項目中增加一組資源drawable-xxhdpi-2160x1080 、drawable-long 這樣解決圖片的拉伸問題,當然最好的方法還是用相對布局採用XML的方式,或者.9圖的解決方案。

三、虛擬導航鍵(Navigation bar)優化

個人覺得虛擬導航鍵並不是一個好東西,依稀記得HTC被雙下巴甚至四下巴支配的恐懼,虛擬導航鍵總讓人齣戲。可是全面屏風潮的到來,徹底將正面實體按鍵拍到了沙灘上。

虛擬導航鍵系統,桌面美如畫,進入到應用里就是傻大粗的黑條,幾乎沒有幾個APP做虛擬導航鍵的適配,圖就不上了,可以參考華為那些機子。。。

(虛擬鍵的樣式,此圖來自小米開發者中心)

總之,要達到一體化的沉浸體驗,就應該盡量避免導航鍵齣戲,選擇合適的虛擬鍵樣式,保證視覺的統一性。全面屏時代的到來,開發者總該好好管管這虛擬導航鍵了吧!

虛擬導航鍵修改方法一: window.setNavigationBarColor (int color)注意在調用該介面時,需要立一些flag,該介面說明如下:

/**n * Sets the color of the navigation bar to {@param color}.n *n * For this to take effect,n * the window must be drawing the system bar backgrounds withn * {@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS} andn * {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_NAVIGATION} must not be set.n *n * If {@param color} is not opaque, consider settingn * {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_STABLE} andn * {@link android.view.View#SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION}.n * <p>n * The transitionName for the view background will be "android:navigation:background".n * </p>n */npublic abstract void setNavigationBarColor(@ColorInt int color);n

虛擬導航鍵修改方法二:在主題中添加以下設置項:

<item name="android:navigationBarColor">要設置的顏色值</item>n

注意,該方法在Android5.0以上生效,什麼!?都全面屏了肯定上7.0+了啊!推薦!

結語

總的來說,全面屏的到來為沉悶的手機ID設計帶來了些驚喜,雖然不少開發者罵娘,但還是應當順應歷史潮流,況且很多情況Android系統早已有適配方案了不是?最後希望本文能為大家做全面屏適配帶來些幫助!一起為Android軟體生態改善而努力!有更多好用技巧歡迎評論交流!

參考資料:

小米全面屏及虛擬鍵適配說明

金立18:9全面屏適配說明

全面屏時代 | APP如何快速適配? 這4個關鍵點你要知道!


推薦閱讀:

跪求android藍牙小車的上位機程序?最好能具體的,謝了
聖誕節特別版 - 遊戲也要過聖誕 #iOS #Android

TAG:Android开发 | Android | 全面屏手机 |