引言
從2017年開始,全面屏之戰(zhàn)逐漸如火如荼的展開了饿肺,那么我們Android程序員又多了一個(gè)小事情坯认,就是解決全面屏適配的問題。
全面屏和以前的屏幕相比政恍,有以下幾點(diǎn)改變
- 以前 16 : 9 的 比例 變成了 18 : 9褥符,甚至是 19 : 9 ...
- 屏幕內(nèi)的虛擬導(dǎo)航鍵
解決方案來了
一、解決現(xiàn)實(shí)不全抚垃,黑邊的情況
方案一喷楣、
聲明方式
<meta-data
android:name="android.max_aspect"
android:value="ratio_float"/>
ratio_float這個(gè)值怎么取呢?
其實(shí)就是高寬比鹤树。
傳統(tǒng)的手機(jī)高寬比是:16 : 9 即 16 / 9 ≈ 1.78
那么全面屏的手機(jī)寬高比:18 :9 即 18 / 9 = 2
但是這個(gè)時(shí)候铣焊,我們需要注意一下,現(xiàn)在很多手機(jī)都在追求更大的高寬比罕伯,即讓屏幕頂部和底部邊框越小越好曲伊,比如現(xiàn)在的「小米 mix 3 」
即他的高寬比是
19.5 / 9 ≈ 2.17
所以保險(xiǎn)起見,設(shè)置成為 2.2, 當(dāng)然這個(gè)值也不是固定的,如果有更新的手機(jī)上市坟募,沒準(zhǔn)我們還得改岛蚤。
即這樣設(shè)定就好了
<meta-data
android:name="android.max_aspect"
android:value="2.2" />
方案二、
Android 7.0 google 默認(rèn)支持了分屏模式懈糯,即 Manifest 文件中配置 Activity 的
android:resizeableActivity="true"
注意:此設(shè)置只針對(duì)Activity生效涤妒,且增加了此屬性該activity也會(huì)支持分屏顯示。
那么這個(gè)時(shí)候就不需要再配置上面的 「最大屏幕高寬比」赚哗,就可以適配全面屏了她紫。
但是如果通過自定義控件將“分屏模式”禁止的話,就會(huì)出現(xiàn)屏幕 上下黑邊的效果屿储,非常丑贿讹。
方案三、
修改AndroidManifest.xml文件够掠,設(shè)置targetSdkVersion>=26民褂,就是應(yīng)用升級(jí)到O版本。
不需要設(shè)置其他任何屬性疯潭,默認(rèn)在任何縱橫比的屏幕都能全屏顯示赊堪。
(備注:有一種例外情況需要注意,應(yīng)用如果已經(jīng)適配到O版本袁勺,并且通過meta-data屬性android.max_aspect或者是android:MaxAspectRatio屬性設(shè)置了頁面支持的最大縱橫比雹食,同時(shí)又通過android:resizeableActivity=“false”設(shè)置了頁面不支持分屏,這個(gè)時(shí)候系統(tǒng)會(huì)按照應(yīng)用自己設(shè)置的最大縱橫比決定該頁面是否能全屏顯示期丰,如果應(yīng)用設(shè)置的最大縱橫比比手機(jī)屏幕比例小群叶,那應(yīng)用還是無法全屏顯示。)
二钝荡、啟動(dòng)頁適配
默認(rèn) UI 為我們切的啟動(dòng)頁面的圖是固定的街立,比如 1920*1080
這個(gè)能適配以前一般的分辨率的手機(jī),但是全面屏的出現(xiàn)埠通,我們會(huì)發(fā)現(xiàn)赎离,這個(gè)啟動(dòng)頁的圖片會(huì)被拉伸,一般是縱向拉伸端辱,因?yàn)?“高” 變大了梁剔。
那么這種情況的解決方法其實(shí)有這么幾種思路:
- 讓美工將不同全面屏的分辨率的啟動(dòng)頁圖片進(jìn)行重新設(shè)計(jì),當(dāng)然舞蔽,這樣會(huì)稍微加大apk的體積
- 如果啟動(dòng)頁設(shè)計(jì)的不是很復(fù)雜的話荣病,可以使用「.9圖」進(jìn)行設(shè)計(jì),這樣即使拉伸渗柿,也不會(huì)有很大的影響
- 如果啟動(dòng)頁能用布局文件xml 來繪制出來的話个盆,當(dāng)然是極好的。
三、虛擬導(dǎo)航按鍵的優(yōu)化
本人還是覺得虛擬導(dǎo)航按鍵不是一個(gè)好東西颊亮,但是全面屏的出現(xiàn)柴梆,真的把我以前喜歡的"實(shí)體按鍵" 給舍棄掉了。
我倒是覺得替代以前的"實(shí)體按鍵"的最好的方法终惑,還是手勢(shì)操作绍在。起碼我覺得小米8 的手勢(shì)操作很 6 有沒有。再看看蘋果狠鸳,壓根就不同虛擬按鍵考慮好不揣苏。悯嗓。件舵。
不過,這是我自己的拙見脯厨,請(qǐng)各位虛擬按鍵愛好者铅祸,不要噴我,先行謝過合武。
依稀還記得適配虛擬按鍵是從華為開始的临梗,后來開始適配樂視,可是現(xiàn)在稼跳。盟庞。。
原則汤善,虛擬按鈕的顯示樣式什猖,其實(shí)根據(jù)當(dāng)前具體的頁面情況進(jìn)行調(diào)整,調(diào)整策略其實(shí)和status bar 的類似红淡。
可以通過
window.setNavigationBarColor(int color)
來定義顏色不狮。
或者通過設(shè)置當(dāng)前activity 主題 或者設(shè)置application主題
在主題的樣式中設(shè)置:
<item name="android:navigationBarColor">要設(shè)置的顏色值</item>
即可。
總結(jié)
頻繁的手機(jī)更新迭代在旱,雖然讓我們程序員多了一些事情可做摇零,但是卻也是我們喜聞樂見的事,手機(jī)在發(fā)展桶蝎,說明我們的行業(yè)也在發(fā)展呀驻仅,況且,解決這些問題也不是難事登渣。你說是不是呢噪服?
如果沒看懂我的文章,請(qǐng)觀看小米官網(wǎng)提供的方案(其實(shí)是一致的):
全面屏及虛擬鍵適配說明