1. 程式人生 > >全面屏及虛擬鍵適配說明

全面屏及虛擬鍵適配說明

小米:https://dev.mi.com/console/doc/detail?pId=1160

官方:https://developer.android.com/guide/practices/screens_support#NewQualifiers

1. 前言

自2016年小米 Mix 全面屏手機推出時,得到了業界和使用者的雙重認可,小米也引領了“全面屏”手機的風潮。作為全面屏手機的引領者,小米將推出更多的全面屏手機,追求更大的螢幕比例,更高的屏佔比。

這些變化也影響了手機軟體的設計,最值得開發者關注的,是以下兩點:

  • 更大的螢幕高寬比
  • 虛擬導航鍵

2. 更大的螢幕高寬比

大部分全面屏裝置都是18:9,從下圖可以看到,在 1080P 的解析度下,比標準的 16:9 螢幕,足足多了240畫素。開發者需要作一些優化,以充分利用更大的顯示空間。

2.1. 宣告 Maximum Aspect Ratio

Android 標準介面中,支援應用宣告其支援的最大螢幕高寬比(maximum aspect ratio)。具體宣告如下,其中的 ratio_float 被定義為是高除以寬,以 16:9 為例,ratio_float = 16/9 = 1.778 (18:9則為2.0)。

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

若開發者沒有宣告該屬性,ratio_float 的預設值為1.86,小於2.0,因此這類應用在全面屏手機上,預設不會全屏顯示,螢幕底部會留黑。考慮到將有更多 19.5:9 甚至更長的手機出現,建議開發者宣告 Maximum Aspect Ratio ≥ 2.2 或更多。值得一提的是,如果應用的 android:resizeableActivity 已經設定為 true,就不必設定 Maximum Aspect Ratio 了。詳見 Android 官方文件 

Declaring maximum aspect ratio

2.2. 避免內容拉伸/變形

從16:9變成18:9甚至更長的比例,圖片往往被會拉伸變形,此問題常見於應用開屏圖。開發者應使用更靈活的佈局,以適應不同的螢幕比例。

2.3. 充分利用螢幕空間

開發者應充分利用全面屏顯示更多內容。如下圖,王者榮耀已修改了 Maximum Aspect Ratio,在全面屏有更寬闊的遊戲視野。

3. 虛擬導航鍵(Navigation bar)優化

3.1. 虛擬導航鍵樣式

為了實現更高的屏佔比,螢幕內的虛擬導航鍵就成了標準功能,如何讓其應用介面在視覺上統一,同樣需要開發者的積極適配。Android 已經有相關介面允許開發者自定義虛擬鍵的樣式,以下是可供選擇的樣式。

關於使用哪種樣式,我們有以下建議:

建議1:如果頁面含有複雜背景/紋理,建議設定為透明,如下圖中的桌面和通話介面。

建議2:含「底部Tab」的頁面,建議將虛擬鍵設定為「底部Tab」的顏色,如 MIUI 的相機和小米商城。

建議3:不含「底部Tab」的頁面,建議使用背景顏色,如多看閱讀。

由於一個應用內含有多種不同的頁面,我們希望開發者能當前頁面的情況,來選擇合適的虛擬鍵樣式,以保證視覺的統一美觀

3.2. 如何修改虛擬鍵樣式

Android 有標準的實現方式, 呼叫以下介面即可 window.setNavigationBarColor (int color)。在呼叫該介面時,還需要設定一些flag,詳見該介面的註釋說明(即下文):

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

4. FAQ

4.1. 這些改動是僅針對 MIUI 系統嗎

不是。上述提及的均是 Android 標準介面,且早在幾年前就已經存在。因此開發者的任何改動,可以在其餘 Android 手機中直接生效。我們相信全面屏會是往後手機設計的趨勢,做好相關的適配工作,對於開發者來說是非常值得的。

4.2. 如何測試

目前市面上的小米新機均為全面屏手機,測試方法如下:

  • 升級至 MIUI 9.5 及以上版本
  • 前往「設定 > 全面屏 > 應用全屏執行設定」,找到相關應用,然後開啟開關,就可以在全面屏比例下執行應用,以觀察應用的表現。

有任何問題可以郵件給我們的專案組 [email protected],會有同事解答相關疑問。