Galaxy S8及S8+分別搭載“5.8”與“6.2”大屏,高達(dá)84%的屏幕占比為Galaxy S8及S8+在游戲娛樂、觀看視頻時(shí)帶來深度沉浸式視覺體驗(yàn)了赌。但是與此同時(shí)S8卻有著一個(gè)奇葩的屏幕比例:18.5比9,屏幕分辨率:2960×1440玄糟。通常我們?cè)陂_發(fā)過程中android的標(biāo)準(zhǔn)設(shè)計(jì)圖為1920×1080勿她,ios為1334×750,默認(rèn)采用16比9的比例來設(shè)計(jì)效果圖阵翎。android機(jī)型眾多逢并,分辨率千奇百怪,這回三星又來添亂了贮喧,實(shí)際開發(fā)過程中還真遇到了三星S8的適配問題筒狠。
先來看一些案例:
這是適配前的王者農(nóng)藥
這是適配后的王者農(nóng)藥
再來看看豎屏的效果:
這是未適配的網(wǎng)易新聞
這是適配過了的今日頭條
所以從案例可以看出來,如果不去做適配的話箱沦,屏幕的兩端就會(huì)留有黑邊辩恼,相當(dāng)討厭,真機(jī)體驗(yàn)是醬紫的谓形,大家可以感受下:
甚至據(jù)說這上下感人的大黑邊逼死了處女座灶伊。
其實(shí)解決APP顯示問題,除了第三方應(yīng)用自行適配S8之外寒跳,S8自己也可以進(jìn)行調(diào)節(jié)聘萨,S8有一個(gè)功能叫做“全屏應(yīng)用程序”;通過設(shè)置“全屏應(yīng)用程序”既節(jié)省了用戶等待應(yīng)用適配的過程童太,也大大增加了用戶體驗(yàn)米辐。
打開全屏應(yīng)用之后,效果顯而易見:
無奈Android手機(jī)就是這樣书释,不是太省心翘贮,用戶要有點(diǎn)小智商才行,還是iphone比較省心爆惧,但是大部分人應(yīng)該還是跟上面那位處女座一樣的狸页,我們不能要求每個(gè)用戶都去手動(dòng)打開全屏應(yīng)用來適配APP顯示,作為開發(fā)者我們還是要主動(dòng)去做好適配扯再。
下面我們以開發(fā)者的身份去分析下這個(gè)問題芍耘,究其根本這個(gè)適配不過是個(gè)顯示的問題址遇,我們只需要讓APP充滿全屏就可以,所以我做了如下嘗試:
1:給Activity設(shè)置各種noTitlebar斋竞,F(xiàn)ullScreen倔约,不起作用;
2:替換各種style樣式窃页,不起作用跺株;
3:修改targetSdkVersion复濒, compileSdkVersion為高版本脖卖,依然不起作用。
通過觀察發(fā)現(xiàn)巧颈,凡是完美適配了18.5比9屏幕的App畦木,在系統(tǒng)中已經(jīng)默認(rèn)是全屏應(yīng)用程序了,選擇框灰掉無法點(diǎn)擊砸泛。
而沒有做好適配的App默認(rèn)是沒有打開全屏應(yīng)用的十籍,用戶可以自行隨意選擇打開或者關(guān)閉,從截圖我們看出很多大廠出品的App還沒有做好適配
所以判斷系統(tǒng)應(yīng)該是通過檢測(cè)某個(gè)屬性或者權(quán)限來區(qū)分當(dāng)前App是否做好了適配唇礁。最后我們找到了"android.max_aspect"這個(gè)屬性勾栗。
開發(fā)者只需在App的AndroidManifest.xml文件<application> </application>中添加如下代碼:
<meta-data android:name="android.max_aspect" android:value="2.1" />
對(duì)只要這一行代碼就搞定三星S8的適配,所以前面都是廢話盏筐,你要的代碼就這一行围俘,快快粘貼復(fù)制到你的代碼中吧。
Android 標(biāo)準(zhǔn)接口中琢融,支持應(yīng)用聲明其支持的最大屏幕高寬比(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" />
若開發(fā)者沒有聲明該屬性纳令,ratio_float 的默認(rèn)值為1.86挽荠,小于2.056,因此這類應(yīng)用在三星S8上平绩,默認(rèn)不會(huì)全屏顯示圈匆,屏幕兩邊會(huì)留黑。