<轉(zhuǎn)> 你已經(jīng)知道怎么適配iPhone X了落塑,那么Android全面屏呢纽疟?

原文地址:https://mp.weixin.qq.com/s/HhLaWrub-QIvY-9cElo7XQ


小編最近入手了一臺(tái)小米 MIX 2,單看手機(jī)外表憾赁,覺(jué)得很驚艷污朽,因?yàn)橐谎弁ィ謾C(jī)都是屏龙考,但是使用過(guò)程卻有一個(gè)小問(wèn)題蟆肆,讓我很不舒服,就是由于有些應(yīng)用沒(méi)有和全面屏適配晦款,導(dǎo)致在使用過(guò)程中屏幕上下方都有黑框炎功,所以小編特地去搜集了一些資料以解決這個(gè)問(wèn)題。

蘋果今年發(fā)布的 iPhone X 比全面屏多了一個(gè)“劉夯航Γ”蛇损,不過(guò)蘋果有特別針對(duì)“劉海屏”給出了適配方案,詳情請(qǐng)?zhí)D(zhuǎn)閱讀 iPhone X 交互設(shè)計(jì)官方指南坛怪。但是與蘋果統(tǒng)一生態(tài)不同的是淤齐,國(guó)內(nèi)的安卓市場(chǎng)碎片化十分嚴(yán)重,這讓 Android 軟件開發(fā)工程師叫苦不迭袜匿。蘋果今年發(fā)布的 iPhone X 比全面屏多了一個(gè)“劉焊模”,不過(guò)蘋果有特別針對(duì)“劉海屏”給出了適配方案居灯,詳情請(qǐng)?zhí)D(zhuǎn)閱讀 iPhone X 交互設(shè)計(jì)官方指南祭务。但是與蘋果統(tǒng)一生態(tài)不同的是,國(guó)內(nèi)的安卓市場(chǎng)碎片化十分嚴(yán)重穆壕,這讓 Android 軟件開發(fā)工程師叫苦不迭待牵。

什么是全面屏手機(jī)?

該怎么定義全面屏手機(jī)呢喇勋?小米最初也只是對(duì)其有一個(gè)抽象的定義「正面幾乎全是屏幕缨该,仿佛握著一塊透明玻璃」,全面屏顧名思義就是一整面都是屏幕川背,理想中的全面屏就是達(dá)到 100% 的屏占比贰拿,同時(shí)能夠滿足當(dāng)前的日常需求,如攝像頭熄云,聽筒膨更、指紋解鎖等。但隨著 iPhone X 的出現(xiàn)缴允,有越來(lái)越多的人都在爭(zhēng)論“全面屏”荚守,認(rèn)為有劉海就談不上無(wú)邊框珍德,甚至大家開始疑問(wèn)全面屏的真正含義。

根據(jù)目前的技術(shù)水平和業(yè)內(nèi)大部分人的說(shuō)法矗漾,認(rèn)為目前的全面屏手機(jī)要同時(shí)符合兩個(gè)條件才能稱為真正的全面屏:

分辨率大于 16:9

屏占比大于 80%

例如在業(yè)內(nèi)率先提出全面屏概念并完全去掉機(jī)身正面半頂部邊框設(shè)計(jì)的的小米 MIX锈候,它的屏幕縱橫比為 17:9,今年小米推出的 MIX 2 屏幕縱橫比為 18:9敞贡。

從人體工程學(xué)角度分析泵琳,18:9 的比例更適合用戶單手持握,更重要的是誊役,全面屏的高屏占比可以給用戶在游戲和視頻觀看上帶來(lái)極致的視覺(jué)體驗(yàn)获列。然而,市面上很多廠商卻因此偷換概念蛔垢,認(rèn)為手機(jī)配備 18:9 的比例屏幕就是全面屏击孩,故在手機(jī)設(shè)計(jì)上只保留了 18:9 的比例,而邊框依然寬大啦桌,這顯然忽視了全面屏最本質(zhì)的特征溯壶。
目前,業(yè)內(nèi)較為認(rèn)可的全面屏手機(jī)主要有以下幾種:

目前甫男,業(yè)內(nèi)較為認(rèn)可的全面屏手機(jī)主要有以下幾種:


圖片.png

移動(dòng)應(yīng)用適配全面屏情況

640.jpg

全面屏適配方案

由于全面屏手機(jī)在追求更小的邊框設(shè)計(jì)且改、更高的屏占比,這些變化導(dǎo)致了手機(jī)發(fā)生兩種變化板驳,即更大的屏幕縱橫比和導(dǎo)航鍵變成了虛擬鍵又跛,所以應(yīng)從這兩個(gè)方面進(jìn)行適配。

一.聲明 Maximum Aspect Ratio

隨著大量的手機(jī)廠商將目光投向全面屏若治,為了順應(yīng)市場(chǎng)需求慨蓝,谷歌向開發(fā)者提供了官方的 Android 全面屏適配指南。


640.jpg

左:18.5:9 設(shè)備上的最大縱橫比設(shè)為16:9 的APP
右:18.5:9 設(shè)備上最大縱橫比設(shè)為18.5:9 以上的APP

  1. 在 AndroidManifest.xml 中可做如下配置:
    <meta-data
            android:name="android.max_aspect"
            android:value="ratio_float" />

其中 ratio_float 為縱橫比端幼,官方建議設(shè)為 2.1 或更大礼烈,因?yàn)槟壳笆袌?chǎng)上出現(xiàn)的Android全面屏手機(jī)屏幕縱橫比最大的為三星的 18.5:9=2.0556,但是如果以后要是出現(xiàn)縱橫比更大的手機(jī)婆跑,設(shè)置值就要更大此熬。

  1. 若沒(méi)有聲明該屬性,而且android:resizeableActivity也為 false的話滑进,則應(yīng)用支持的應(yīng)用的最大縱橫比的默認(rèn)值為 1.86犀忱,小于 2.0556,即無(wú)法支持全面屏扶关,屏幕的上下就會(huì)留有黑框阴汇,如上圖左。

二. 怎樣防止圖片變形

當(dāng)使用 layout 布局實(shí)現(xiàn)界面類 APP 時(shí)节槐,容易出現(xiàn)圖片被拉伸的情況搀庶,如打開淘寶的頁(yè)面就會(huì)變成如下所示:


640.jpg

對(duì)于這種情況拐纱,解決的辦法是:

  • 使用相對(duì)布局設(shè)計(jì)界面
  • 為對(duì)應(yīng)的分辨率提供相應(yīng)布局、圖片等資源(drawable-xxhdpi-2016x1080哥倔、drawable-long 等)
  • 使用顏色填充布局戳玫、.9 圖片填充背景

三.虛擬導(dǎo)航鍵設(shè)置

為了保證虛擬鍵和 App 的界面風(fēng)格一致,應(yīng)注意設(shè)置虛擬鍵顏色與主題協(xié)調(diào)未斑,所以在進(jìn)行虛擬鍵的設(shè)置時(shí),要注意以下幾點(diǎn):

  • 使用沉浸式虛擬鍵時(shí)币绩,用原生標(biāo)準(zhǔn)方法設(shè)置虛擬按鍵的背景顏色蜡秽;
  • 在夜間模式和主題切換的時(shí)候,重新設(shè)置一下虛擬按鍵背景顏色缆镣;
  • 看圖界面使用全屏布局芽突,并設(shè)置半透明虛擬按鍵背景。

具體操作如下:
根據(jù)金立18:9 全面屏虛擬鍵的適配說(shuō)明董瞻,具體的設(shè)置虛擬鍵背景色的方法有:

  • 方法 1:在主題中添加以下設(shè)置項(xiàng):
<item name="android:navigationBarColor">要設(shè)置的顏色值</item>
  • 方法 2:通過(guò)使用 Window 類的 setNavigationBarColor API 進(jìn)行控制寞蚌。
    注意,要想設(shè)置虛擬按鍵背景色生效钠糊,必須要設(shè)置 FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 并且不能設(shè)置 FLAG_TRANSLUCENT_NAVIGATION挟秤,即要先執(zhí)行:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_ BACKGROUNDS);

例如:

getWindow().setNavigationBarColor(Color.TRANSPARENT); // 設(shè)為透明
getWindow().setNavigationBarColor(Color.BLACK); // 設(shè)為不透明
getWindow().setNavigationBarColor(0x80000000); // 設(shè)為半透明(Color 類中沒(méi)有半透明的常量定義,同時(shí)暫不考慮修改框架代碼抄伍,所以使用的具體數(shù)值)

四. 修改虛擬鍵的樣式

640.jpg

調(diào)用以下接口即可window.setNavigationBarColor (int color)在調(diào)用該接口時(shí)艘刚,還需要設(shè)置一些 flag,詳見該接口的注釋說(shuō)明(即下文):

 * 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);

相關(guān)文獻(xiàn):
谷歌官方全面屏適配指南
小米全面屏及虛擬鍵適配說(shuō)明
金立全面屏底部虛擬按鍵適配

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末截珍,一起剝皮案震驚了整個(gè)濱河市攀甚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岗喉,老刑警劉巖秋度,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钱床,居然都是意外死亡荚斯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門诞丽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鲸拥,“玉大人,你說(shuō)我怎么就攤上這事僧免⌒谈希” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵懂衩,是天一觀的道長(zhǎng)撞叨。 經(jīng)常有香客問(wèn)我金踪,道長(zhǎng),這世上最難降的妖魔是什么牵敷? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任胡岔,我火速辦了婚禮,結(jié)果婚禮上枷餐,老公的妹妹穿的比我還像新娘靶瘸。我一直安慰自己,他們只是感情好毛肋,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布怨咪。 她就那樣靜靜地躺著,像睡著了一般润匙。 火紅的嫁衣襯著肌膚如雪诗眨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天孕讳,我揣著相機(jī)與錄音匠楚,去河邊找鬼。 笑死厂财,一個(gè)胖子當(dāng)著我的面吹牛芋簿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播璃饱,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼益咬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帜平?” 一聲冷哼從身側(cè)響起幽告,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裆甩,沒(méi)想到半個(gè)月后冗锁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嗤栓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年冻河,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茉帅。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叨叙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堪澎,到底是詐尸還是另有隱情擂错,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布樱蛤,位于F島的核電站钮呀,受9級(jí)特大地震影響剑鞍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜爽醋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一蚁署、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚂四,春花似錦光戈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至解愤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乎莉,已是汗流浹背送讲。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惋啃,地道東北人哼鬓。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像边灭,于是被迫代替她去往敵國(guó)和親异希。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359