作者 / 產(chǎn)品管理總監(jiān) Maru Ahues Bouza
全球范圍內(nèi)有超過(guò) 30 億臺(tái) Android 設(shè)備正在使用中,這使得 Android 生態(tài)系統(tǒng)比以往任何時(shí)候都更加活躍。Android 移動(dòng)應(yīng)用能夠在手機(jī)、可折疊設(shè)備、平板電腦、Chromebook、汽車(chē)以及最新的 XR 設(shè)備等多種設(shè)備上運(yùn)行。用戶選擇的是一個(gè)完整的設(shè)備生態(tài)系統(tǒng),并期望他們的應(yīng)用能夠在所有設(shè)備上運(yùn)行。您的應(yīng)用需要無(wú)縫地適應(yīng)不同的屏幕大小和設(shè)備形態(tài),以在這個(gè)多設(shè)備環(huán)境中蓬勃發(fā)展。
許多 Android 應(yīng)用依賴(lài)于在單一屏幕方向和/或限制了大小調(diào)整的情況下工作的界面方法。然而,用戶希望應(yīng)用能夠充分利用大屏優(yōu)勢(shì),因此 Android 設(shè)備制造商引入了備受好評(píng)的功能,以突破這些應(yīng)用的限制。
鑒于此,Android 16 將在平臺(tái)層面取消應(yīng)用限制屏幕方向和大小調(diào)整的能力,轉(zhuǎn)而采用一種統(tǒng)一的自適應(yīng)應(yīng)用模式,使應(yīng)用能無(wú)縫適應(yīng)不同的屏幕大小和方向。通過(guò)這一變更,應(yīng)用的行為將更好地滿足用戶的期望,從而減少碎片化現(xiàn)象。同時(shí),通過(guò)尊重用戶對(duì)屏幕方向的偏好設(shè)置,提升應(yīng)用的無(wú)障礙性。我們正在構(gòu)建相關(guān)工具、庫(kù)和平臺(tái) API,以幫助您實(shí)現(xiàn)這一點(diǎn),從而在整個(gè) Android 生態(tài)系統(tǒng)中提供始終如一的卓越用戶體驗(yàn)。
有哪些變更?
從 Android 16 開(kāi)始,我們將逐步淘汰用于限制應(yīng)用屏幕方向和大小調(diào)整的清單屬性及運(yùn)行時(shí) API,從而在各種設(shè)備上為眾多應(yīng)用帶來(lái)更好的用戶體驗(yàn)。
這些變更最初將適用于應(yīng)用在大屏設(shè)備上運(yùn)行時(shí),其中 "大屏" 指的是顯示區(qū)域的最小寬度大于或等于 600dp 的情況。這包括:
大屏可折疊設(shè)備的內(nèi)屏
平板電腦,包括桌面窗口模式
桌面環(huán)境,包括 Chromebook
以下清單屬性和 API 將在以 Android 16 (SDK 36) 為目標(biāo)的大屏設(shè)備應(yīng)用中被忽略:
清單屬性/API | 忽略的值 |
screenOrientation | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
setRequestedOrientation() | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
resizeableActivity | 所有 |
minAspectRatio | 所有 |
maxAspectRatio | 所有 |
在屏幕方向控制、寬高比和大小調(diào)整方面,這些變更有一些例外情況:
如前所述,這些變更不適用于最小寬度小于 600dp 的屏幕 (例如大多數(shù)手機(jī)、"翻蓋" 式設(shè)備和大屏可折疊設(shè)備的外屏)
基于 android:appCategory 標(biāo)志,游戲?qū)⒉皇苓@些變更的影響
此外,用戶擁有控制權(quán)。他們可以在寬高比設(shè)置中明確選擇使用應(yīng)用的默認(rèn)行為。
以 API 級(jí)別 36 為目標(biāo)的應(yīng)用,以前在大屏設(shè)備上以信箱模式 (letterboxed) 顯示,現(xiàn)將在 Android 16 上以橫向模式填充整個(gè)顯示屏
讓?xiě)?yīng)用具備自適應(yīng)性,
為即將到來(lái)的變更做好準(zhǔn)備
應(yīng)用需要支持橫向和縱向布局,以適應(yīng)用戶可以選擇的各種寬高比的窗口大小。因?yàn)閷](méi)有辦法限制寬高比和屏幕方向僅為縱向或橫向。
要測(cè)試您的應(yīng)用是否會(huì)受這些變更影響,可以在 Android Studio 中使用搭載 Pixel Tablet 和 Pixel Fold 系列模擬器的 Android 16 Beta 1 開(kāi)發(fā)者預(yù)覽版,并設(shè)置 targetSdkPreview = "Baklava" 或通過(guò)啟用 UNIVERSAL_RESIZABLE_BY_DEFAULT 標(biāo)志來(lái)使用應(yīng)用兼容性框架。
對(duì)于那些限制屏幕方向和寬高比的現(xiàn)有應(yīng)用,這些變更可能導(dǎo)致布局重疊等問(wèn)題。為了解決這些問(wèn)題并滿足用戶期望,我們的愿景是使應(yīng)用具備自適應(yīng)性,以確保無(wú)論用戶是在手機(jī)、可折疊設(shè)備、平板電腦、Chromebook、XR 設(shè)備還是在車(chē)內(nèi)使用應(yīng)用時(shí),都能獲得最佳體驗(yàn)。
解決常見(jiàn)問(wèn)題
避免界面組件拉伸:如果布局是在假設(shè)為手機(jī)屏幕的情況下設(shè)計(jì)和構(gòu)建的,那么應(yīng)用功能可能會(huì)在其他寬高比下出現(xiàn)問(wèn)題。例如,如果布局是在假設(shè)縱向?qū)捀弑鹊那闆r下構(gòu)建的,那么填充窗口最大寬度的界面元素在橫向窗口中會(huì)被拉伸。如果布局沒(méi)有構(gòu)建滾動(dòng)功能,用戶可能無(wú)法點(diǎn)擊屏幕外的按鈕或其他界面元素,從而導(dǎo)致功能混淆或失效。為避
免拉伸,需要為組件添加最大寬度,并添加滾動(dòng)功能以確保所有內(nèi)容都可訪問(wèn)。
確保相機(jī)在兩種屏幕方向上的兼容性:相機(jī)取景器預(yù)覽可能假設(shè)相對(duì)于相機(jī)傳感器的特定寬高比和屏幕方向,一旦這些假設(shè)不成立,就可能導(dǎo)致預(yù)覽畫(huà)面拉伸或翻轉(zhuǎn)。請(qǐng)確保取景器能夠正確旋轉(zhuǎn),并考慮到界面的寬高比與傳感器的寬高比不同。
在窗口大小變化時(shí)保持狀態(tài):取消屏幕方向和寬高比限制也意味著,應(yīng)用的窗口大小將更頻繁地根據(jù)用戶使用應(yīng)用的偏好發(fā)生變化,例如旋轉(zhuǎn)、折疊設(shè)備,或在多窗口/自由窗口模式下調(diào)整應(yīng)用大小。默認(rèn)情況下,屏幕方向變化和調(diào)整大小會(huì)導(dǎo)致 Activity 重建。為了確保良好的用戶體驗(yàn),在這些配置變更的過(guò)程中保留應(yīng)用狀態(tài)至關(guān)重要,以免用戶在更改設(shè)備狀態(tài)或更改窗口模式時(shí)丟失之前的操作進(jìn)度。
為了適應(yīng)不同的窗口大小和寬高比,應(yīng)使用窗口大小類(lèi)來(lái)驅(qū)動(dòng)布局行為,這種方式不需要針對(duì)特定設(shè)備進(jìn)行自定義。在構(gòu)建應(yīng)用時(shí),還應(yīng)假設(shè)窗口大小會(huì)頻繁變化。沒(méi)有必要為不同的屏幕方向構(gòu)建重復(fù)的特定布局,而是應(yīng)確保現(xiàn)有界面在任何窗口大小下都能順利地重新布局。如果您有專(zhuān)門(mén)針對(duì)橫向或縱向設(shè)計(jì)的布局,那么這些布局仍然會(huì)被使用。
通過(guò)構(gòu)建自適應(yīng)性來(lái)優(yōu)化窗口大小
如果您已經(jīng)在構(gòu)建自適應(yīng)布局并支持所有屏幕方向,那么您就已經(jīng)為成功做好了準(zhǔn)備,因?yàn)槟膽?yīng)用將能夠適應(yīng)用戶希望使用的各種設(shè)備類(lèi)型和窗口模式。這些變更對(duì)您應(yīng)用的影響會(huì)很小。
我們還提供了一系列測(cè)試資源,幫助您保證應(yīng)用的可靠性。您可以使用 Espresso 測(cè)試框架和 Jetpack Compose 測(cè)試 API 等工具進(jìn)行自動(dòng)化測(cè)試。
時(shí)間表
我們理解,這些變更對(duì)于長(zhǎng)期以來(lái)只支持縱向顯示的應(yīng)用來(lái)說(shuō)意義重大。此類(lèi)應(yīng)用可能需要調(diào)整界面問(wèn)題,例如按鈕超出屏幕、內(nèi)容重疊或屏幕帶有相機(jī)取景器等。
為了幫助您提前規(guī)劃并做出必要的調(diào)整,以下是這些變更的生效時(shí)間表:
Android 16 (2025):上述變更將成為以 API 級(jí)別 36 為目標(biāo)的應(yīng)用在大屏設(shè)備 (最小屏幕寬度大于 600dp) 上的基本體驗(yàn),開(kāi)發(fā)者可以選擇暫不更改調(diào)整。
2026 年的 Android 版本:上述變更將成為以 API 級(jí)別 37 為目標(biāo)的應(yīng)用在大屏設(shè)備 (最小屏幕寬度大于 600dp) 上的基本體驗(yàn),開(kāi)發(fā)者必須選擇接受。
目標(biāo) API 級(jí)別 | 適用設(shè)備 | 開(kāi)發(fā)者是否能選擇不接受 |
36 (Android 16) |
大屏設(shè)備(最小屏幕寬度 > 600dp) | 是 |
37 (預(yù)計(jì)) | 大屏設(shè)備(最小屏幕寬度 > 600dp) | 否 |
針對(duì)特定 API 級(jí)別的截止日期取決于具體的應(yīng)用商店。對(duì)于 Google Play,我們計(jì)劃在 2026 年 8 月前應(yīng)用需以 API 級(jí)別 36 為目標(biāo),在 2027 年 8 月前應(yīng)用需以 API 級(jí)別 37 為目標(biāo)。
為 Android 16 做好準(zhǔn)備
歡迎您參閱 Android 16 變更頁(yè)面,了解所有影響 Android 16 應(yīng)用的變更,以及在您的應(yīng)用受到影響時(shí),更新應(yīng)用所需的其他資源。要測(cè)試您的應(yīng)用,請(qǐng)下載 Android 16 Beta 1 開(kāi)發(fā)者預(yù)覽版,并更新至 targetSdkPreview = "Baklava",或者使用應(yīng)用兼容性框架以啟用特定變更。
我們致力于幫助開(kāi)發(fā)者擁抱自適應(yīng)應(yīng)用的新時(shí)代,在多樣化的 Android 生態(tài)系統(tǒng)中釋放其應(yīng)用的全部潛力。歡迎您查看在多種窗口大小和設(shè)備類(lèi)型下設(shè)計(jì)和構(gòu)建應(yīng)用的注意事項(xiàng),以及如何在各種設(shè)備上測(cè)試您的應(yīng)用。
隨著 Android 16 發(fā)布日期的臨近,歡迎您持續(xù)關(guān)注更多更新和資源!
-
Android
+關(guān)注
關(guān)注
12文章
3968瀏覽量
129757 -
API
+關(guān)注
關(guān)注
2文章
1566瀏覽量
63660 -
設(shè)備
+關(guān)注
關(guān)注
2文章
4646瀏覽量
71551
原文標(biāo)題:自適應(yīng)的未來(lái):Android 16 中對(duì)屏幕方向和可調(diào)整大小 API 的更改
文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
紫光展銳多款5G及4G平臺(tái)完成Android 16同步升級(jí)
谷歌I/O 2025大會(huì)前透露:Android 16接入Gemini,智能手機(jī)、XR設(shè)備升級(jí)

Android 16的首個(gè)Beta版現(xiàn)已推出,升級(jí)功能有這些

Android16 Beta 1來(lái)襲,谷歌Pixel 6用戶搶先體驗(yàn)
谷歌推出Android 16首個(gè)開(kāi)發(fā)者預(yù)覽版
android手機(jī)上emulate應(yīng)用程序的方法
Android 16發(fā)布計(jì)劃曝光,谷歌將同步更新AOSP與Pixel設(shè)備
Android 16將新增快速設(shè)置面板磁貼大小自定義功能
TLV320AIC3263有Android平臺(tái)的驅(qū)動(dòng)代碼及寄存器配置表嗎?
bq27505-J3到bq27505-J4變更列表

bq27505-J1到bq27505-J2變更列表

是否可以通過(guò)I2C在Android 8.1的嵌入式設(shè)備上將PCM1864EVM驅(qū)動(dòng)起來(lái)?
穩(wěn)定性建設(shè)之變更管理

評(píng)論