本文小編為大家詳細介紹“Android折疊屏適配的概念是什么”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Android折疊屏適配的概念是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
創(chuàng)新互聯專注于企業(yè)營銷型網站、網站重做改版、措勤網站定制設計、自適應品牌網站建設、H5建站、成都做商城網站、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為措勤等各大城市提供網站開發(fā)制作服務。折疊屏適配
折疊屏之所以需要適配,是因為我們的應用有可能在運行的過程中,所在的屏幕尺寸發(fā)生了變化,這種情況對現有項目多少都會產生一些問題。
所以折疊屏適配的本質是:當應用運行時,屏幕的尺寸、密度或比例發(fā)生了變化,應用能夠繼續(xù)在變化后的屏幕上正常顯示和正常運行。
其實這種情況并不是折疊屏出現之后才有的,應用的縱向橫向切換也會發(fā)生同樣的情況,只不過很多應用都強制縱向,不需要處理這種適配了。
允許改變應用尺寸
要適配折疊屏,首先是要讓應用支持動態(tài)改變尺寸,我們需要在 menifest 中的 Application 或對應的 Activity 下聲明:
android:resizeableActivity="true"
相反,如果暫時不打算適配,把這個參數設為 false 就好了。
需要說明的是,這個參數在 Android 7.0 或更高版本默認為 true,以下則默認為 false。
下面介紹兩個和這個參數相關的概念。
分屏模式
之所以從 Android 7.0 開始,把 resizeableActivity 默認改為 true,是因為在 7.0 里增加了一個新功能,叫分屏模式。
.jpg
如果把 resizeableActivity 設為 false,就意味著應用是不支持分屏模式的,它決定了應用是否有分屏的設置項。
.jpg
兼容模式
當 resizeableActivity 取 false 時,展開折疊屏可能會變成這樣的效果:
.jpg
這個效果類似于在 iPad 上使用不兼容的 iPhone 應用,這個四周用黑色填充的模式,叫兼容模式。
兼容模式的顯示和較大支持比例 maxAspectRatio 有關,當屏幕比例超過 maxAspectRatio 時才會用黑邊填充,官方建議把 maxAspectRatio 設為 2.4 (12 : 5),修改 maxAspectRatio 的方法如下:
Android 8.0 或以上版本
在 標簽中配置 android:maxAspectRatio:
<activity android:name=".MainActivity" android:maxAspectRatio="2.4" />
Android 8.0 以下版本
在 標簽中添加名為 android.max_aspect 的 meta-data:
<meta-data android:name="android.max_aspect" android:value="2.4" />
如果 resizeableActivity 設為 true,就不需要設置 maxAspectRatio 了,設了也不會生效。
監(jiān)聽尺寸改變
在默認情況下,當屏幕發(fā)生了變化,系統會銷毀并重新創(chuàng)建整個 Activity。但我們希望屏幕變化之后,程序能夠以切換前的狀態(tài)繼續(xù)運行,不需要重啟頁面。
我們可以給 Activity 添加配置:
android:configChanges="screenSize|smallestScreenSize|screenLayout"
這樣配置后,當屏幕發(fā)生變化就不會重啟 Activity 了,會調用到 onConfigurationChanged 方法,我們可以在這個方法里獲取到當前的屏幕信息:
@Overridepublic void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i("config", "newConfig.screenHeightDp:" + newConfig.screenHeightDp + ", newConfig.screenWidthDp" + newConfig.screenWidthDp);}
這樣改之后需要注意測試,看看頁面的布局是否發(fā)生錯亂,如果布局不合理就需要修改布局以適配不同分辨率。
我們也可以根據屏幕信息來更新布局,比如在大屏幕上把 LinearLayout 切換成 GridLayout,充分利用大屏幕的顯示空間,這是更進一步的優(yōu)化做法了:
.jpg
Android Q
在即將到來的 Android Q 上,增加了一些支持折疊屏的特性。
Multi-resume
對于分屏模式,過去的分屏只支持兩個應用同時顯示,而大屏幕帶來了更多的可能性,現在已經允許兩個以上的應用同時顯示了。
在 Android Q 之前的版本,以分屏模式運行的應用里面,只有獲取到焦點的 Activity 會處于 onResume 狀態(tài),其他可見 Activity 都是處于 onPause 狀態(tài)。
而在 Android Q 上,所有頂層可見 Activity 都處于 onResume 狀態(tài),保證在分屏模式下的可見 Activity 都能正常運行。但能獲取到焦點的 Activity 依然只有一個,我們把這個 Activity 叫做 TopResumedActivity。
在 Android Q 的 Activity 里增加了一個生命周期回調方法 onTopResumedActivityChanged(),它會在 Activity 獲取或失去焦點時調用,可以用來判斷當前 Activity 是否擁有焦點:
protected void onTopResumedActivityChanged(boolean topResumed) { if (topResumed) { // 獲取到焦點 } else { // 失去焦點 }}
當我們使用了獨占資源時就要用到這個方法。什么叫獨占資源?麥克風、攝像頭就是,這類資源同一時間只能給一個 Activity 使用。
比如分屏模式下的多個 Activity 都使用了攝像頭,但這時候只有獲取到焦點的 Activity 擁有訪問權限,這種情況下就要通過 onTopResumedActivityChanged() 判斷當前 Activity 是否獲取到焦點。在失去焦點的時候可以不釋放攝像頭,但是需要處理好攝像頭斷開連接和重新連接的情況。
.jpg
minAspectRatio
在 Android Q 之前只能配置較大支持比例 maxAspectRatio,現在 Android Q 可以配置最小支持比例 minAspectRatio 了, 用法和 maxAspectRatio 一樣:
<activity android:name=".MainActivity" android:maxAspectRatio="2.4" android:minAspectRatio="1"/>
較大最小支持比例,都是在 resizeableActivity 取 false 的時候才會有用。
調試
好的調試工具當然就是用真機了,但目前只有少部分人有這個條件,下面是真機以外的兩個調試方案。
Android Studio
在 Android Studio 3.5 里增加了折疊屏設備的虛擬機,我們可以創(chuàng)建一個來調試:
.jpg
通過點擊模擬器上的按鈕,我們可以切換虛擬機的折疊和展開狀態(tài):
.jpg
命令行
我們可以通過命令行動態(tài)修改手機分辨率,達到模擬折疊屏切換的效果,以 Mate X 的分辨率為例,我們先使用命令行:
adb shell wm size 1148x2480
手機分辨率將模擬為 1148x2480,這是 Mate X 折疊時的分辨率,這時再輸入:
adb shell wm size 2200x2480
將手機分辨率修改為 Mate X 展開后的分辨率 2200x2480,用這種方式模擬了折疊屏展開的切換。
你可以再次修改分辨率為 1148x2480,模擬屏幕折疊的切換。最后玩完了用下面命令行恢復手機自身分辨率:
adb shell wm size reset
讀到這里,這篇“Android折疊屏適配的概念是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。
本文標題:Android折疊屏適配的概念是什么-創(chuàng)新互聯
當前網址:http://aaarwkj.com/article44/ccdohe.html
成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計、Google、微信小程序、移動網站建設、定制開發(fā)、網站營銷
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯