成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Android折疊屏適配的概念是什么

本文小編為大家詳細(xì)介紹“Android折疊屏適配的概念是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Android折疊屏適配的概念是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

創(chuàng)新互聯(lián)專注于黃岡網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供黃岡營銷型網(wǎng)站建設(shè),黃岡網(wǎng)站制作、黃岡網(wǎng)頁設(shè)計、黃岡網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造黃岡網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供黃岡網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

折疊屏適配

折疊屏之所以需要適配,是因?yàn)槲覀兊膽?yīng)用有可能在運(yùn)行的過程中,所在的屏幕尺寸發(fā)生了變化,這種情況對現(xiàn)有項(xiàng)目多少都會產(chǎn)生一些問題。

所以折疊屏適配的本質(zhì)是: 當(dāng)應(yīng)用運(yùn)行時,屏幕的尺寸、密度或比例發(fā)生了變化,應(yīng)用能夠繼續(xù)在變化后的屏幕上正常顯示和正常運(yùn)行。

其實(shí)這種情況并不是折疊屏出現(xiàn)之后才有的,應(yīng)用的縱向橫向切換也會發(fā)生同樣的情況,只不過很多應(yīng)用都強(qiáng)制縱向,不需要處理這種適配了。

允許改變應(yīng)用尺寸

要適配折疊屏,首先是要讓應(yīng)用支持動態(tài)改變尺寸,我們需要在 menifest 中的 Application 或?qū)?yīng)的 Activity 下聲明:

android:resizeableActivity="true"

相反,如果暫時不打算適配,把這個參數(shù)設(shè)為 false 就好了。

需要說明的是,這個參數(shù)在 Android 7.0 或更高版本默認(rèn)為 true,以下則默認(rèn)為 false。

下面介紹兩個和這個參數(shù)相關(guān)的概念。

分屏模式

之所以從 Android 7.0 開始,把 resizeableActivity 默認(rèn)改為 true,是因?yàn)樵?7.0 里增加了一個新功能,叫分屏模式。

.jpg

如果把 resizeableActivity 設(shè)為 false,就意味著應(yīng)用是不支持分屏模式的,它決定了應(yīng)用是否有分屏的設(shè)置項(xiàng)。

.jpg

兼容模式

當(dāng) resizeableActivity 取 false 時,展開折疊屏可能會變成這樣的效果:

.jpg

這個效果類似于在 iPad 上使用不兼容的 iPhone 應(yīng)用,這個四周用黑色填充的模式,叫兼容模式。

兼容模式的顯示和最大支持比例 maxAspectRatio 有關(guān),當(dāng)屏幕比例超過 maxAspectRatio 時才會用黑邊填充,官方建議把 maxAspectRatio 設(shè)為 2.4 (12 : 5),修改 maxAspectRatio 的方法如下:

Android 8.0 或以上版本

在 標(biāo)簽中配置 android:maxAspectRatio:

<activity android:name=".MainActivity"   android:maxAspectRatio="2.4" />

Android 8.0 以下版本

在 標(biāo)簽中添加名為 android.max_aspect 的 meta-data:

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

如果 resizeableActivity 設(shè)為 true,就不需要設(shè)置 maxAspectRatio 了,設(shè)了也不會生效。

監(jiān)聽尺寸改變

在默認(rèn)情況下,當(dāng)屏幕發(fā)生了變化,系統(tǒng)會銷毀并重新創(chuàng)建整個 Activity。但我們希望屏幕變化之后,程序能夠以切換前的狀態(tài)繼續(xù)運(yùn)行,不需要重啟頁面。

我們可以給 Activity 添加配置:

android:configChanges="screenSize|smallestScreenSize|screenLayout"

這樣配置后,當(dāng)屏幕發(fā)生變化就不會重啟 Activity 了,會調(diào)用到 onConfigurationChanged 方法,我們可以在這個方法里獲取到當(dāng)前的屏幕信息:

@Overridepublic void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i("config", "newConfig.screenHeightDp:" + newConfig.screenHeightDp   + ", newConfig.screenWidthDp" + newConfig.screenWidthDp);}

這樣改之后需要注意測試,看看頁面的布局是否發(fā)生錯亂,如果布局不合理就需要修改布局以適配不同分辨率。

我們也可以根據(jù)屏幕信息來更新布局,比如在大屏幕上把 LinearLayout 切換成 GridLayout,充分利用大屏幕的顯示空間,這是更進(jìn)一步的優(yōu)化做法了:

.jpg

Android Q

在即將到來的 Android Q 上,增加了一些支持折疊屏的特性。

Multi-resume

對于分屏模式,過去的分屏只支持兩個應(yīng)用同時顯示,而大屏幕帶來了更多的可能性,現(xiàn)在已經(jīng)允許兩個以上的應(yīng)用同時顯示了。

在 Android Q 之前的版本,以分屏模式運(yùn)行的應(yīng)用里面,只有獲取到焦點(diǎn)的 Activity 會處于 onResume 狀態(tài),其他可見 Activity 都是處于 onPause 狀態(tài)。

而在 Android Q 上,所有頂層可見 Activity 都處于 onResume 狀態(tài),保證在分屏模式下的可見 Activity 都能正常運(yùn)行。但能獲取到焦點(diǎn)的 Activity 依然只有一個,我們把這個 Activity 叫做 TopResumedActivity。

在 Android Q 的 Activity 里增加了一個生命周期回調(diào)方法 onTopResumedActivityChanged(),它會在 Activity 獲取或失去焦點(diǎn)時調(diào)用,可以用來判斷當(dāng)前 Activity 是否擁有焦點(diǎn):

protected void onTopResumedActivityChanged(boolean topResumed) { if (topResumed) {  // 獲取到焦點(diǎn) } else {  // 失去焦點(diǎn) }}

當(dāng)我們使用了獨(dú)占資源時就要用到這個方法。什么叫獨(dú)占資源?麥克風(fēng)、攝像頭就是,這類資源同一時間只能給一個 Activity 使用。

比如分屏模式下的多個 Activity 都使用了攝像頭,但這時候只有獲取到焦點(diǎn)的 Activity 擁有訪問權(quán)限,這種情況下就要通過 onTopResumedActivityChanged() 判斷當(dāng)前 Activity 是否獲取到焦點(diǎn)。在失去焦點(diǎn)的時候可以不釋放攝像頭,但是需要處理好攝像頭斷開連接和重新連接的情況。

.jpg

minAspectRatio

在 Android Q 之前只能配置最大支持比例 maxAspectRatio,現(xiàn)在 Android Q 可以配置最小支持比例 minAspectRatio 了, 用法和 maxAspectRatio 一樣:

<activity android:name=".MainActivity"   android:maxAspectRatio="2.4"   android:minAspectRatio="1"/>

最大最小支持比例,都是在 resizeableActivity 取 false 的時候才會有用。

調(diào)試

最好的調(diào)試工具當(dāng)然就是用真機(jī)了,但目前只有少部分人有這個條件,下面是真機(jī)以外的兩個調(diào)試方案。

Android Studio

在 Android Studio 3.5 里增加了折疊屏設(shè)備的虛擬機(jī),我們可以創(chuàng)建一個來調(diào)試:

.jpg

通過點(diǎn)擊模擬器上的按鈕,我們可以切換虛擬機(jī)的折疊和展開狀態(tài):

.jpg

命令行

我們可以通過命令行動態(tài)修改手機(jī)分辨率,達(dá)到模擬折疊屏切換的效果,以 Mate X 的分辨率為例,我們先使用命令行:

adb shell wm size 1148x2480

手機(jī)分辨率將模擬為 1148x2480,這是 Mate X 折疊時的分辨率,這時再輸入:

adb shell wm size 2200x2480

將手機(jī)分辨率修改為 Mate X 展開后的分辨率 2200x2480,用這種方式模擬了折疊屏展開的切換。

你可以再次修改分辨率為 1148x2480,模擬屏幕折疊的切換。最后玩完了用下面命令行恢復(fù)手機(jī)自身分辨率:

adb shell wm size reset

讀到這里,這篇“Android折疊屏適配的概念是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站題目:Android折疊屏適配的概念是什么
標(biāo)題來源:http://jinyejixie.com/article34/ijggpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、移動網(wǎng)站建設(shè)響應(yīng)式網(wǎng)站、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
寿宁县| 区。| 漳平市| 岑溪市| 黄山市| 惠州市| 枣阳市| 仪陇县| 略阳县| 雷山县| 鹤峰县| 凌源市| 临泽县| 商水县| 顺平县| 祥云县| 二连浩特市| 民权县| 财经| 隆子县| 光山县| 同心县| 繁昌县| 四川省| 南开区| 阳高县| 荆门市| 宁远县| 宾川县| 荥经县| 英吉沙县| 湘潭市| 泗水县| 襄城县| 嘉禾县| 孝昌县| 义乌市| 牡丹江市| 祁门县| 辽源市| 平陆县|