1. 程式人生 > >Galaxy S8及S+全屏顯示適配

Galaxy S8及S+全屏顯示適配

Galaxy S8S8+分別搭載“5.8”與“6.2”大屏,高達84%的螢幕佔比為Galaxy S8S8+在遊戲娛樂、觀看視訊時帶來深度沉浸式視覺體驗。但是與此同時S8卻有著一個奇葩的螢幕比例:18.59,螢幕解析度:2960×1440。通常我們在開發過程中android的標準設計圖為1920×1080ios1334×750,預設採用169的比例來設計效果圖。android機型眾多,解析度千奇百怪,這回三星又來添亂了,實際開發過程中還真遇到了三星S8的適配問題。

如果不去做適配的話,螢幕的兩端就會留有黑邊,相當討厭

其實解決APP顯示問題,除了第三方應用自行適配S8之外,S8自己也可以進行調節,S8

有一個功能叫做“全屏應用程式”;通過設定“全屏應用程式”既節省了使用者等待應用適配的過程,也大大增加了使用者體驗。

下面我們以開發者的身份去分析下這個問題,究其根本這個適配不過是個顯示的問題,我們只需要讓APP充滿全屏就可以,所以我做了如下嘗試:

1:給Activity設定各種noTitlebarFullScreen,不起作用;

2:替換各種style樣式,不起作用;

3:修改targetSdkVersion compileSdkVersion為高版本,依然不起作用。

通過觀察發現,凡是完美適配了18.59螢幕的App,在系統中已經預設是全屏應用程式了,選擇框灰掉無法點選。


所以判斷系統應該是通過檢測某個屬性或者許可權來區分當前App是否做好了適配。最後我們找到了"android.max_aspect"這個屬性。

開發者只需在AppAndroidManifest.xml檔案<application> </application>中新增如下程式碼:

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


對只要這一行程式碼就搞定三星S8的適配,所以前面都是廢話,你要的程式碼就這一行,快快貼上複製到你的程式碼中吧。

Android 標準介面中,支援應用宣告其支援的最大螢幕高寬比(

maximum aspect ratio)。具體宣告如下,其中的 ratio_float 被定義為是高除以寬,以16:9為例,ratio_float = 16/9 = 1.778 (18.5:9則為2.056)。

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

若開發者沒有宣告該屬性,ratio_float 的預設值為1.86,小於2.056,因此這類應用在三星S8上,預設不會全屏顯示,螢幕兩邊會留黑。