標題欄之外,光感不亮了:HarmonyOS 7 這紙新規,把開發者的畫布收窄了一格
華為開發者官網9月3日更新文件,宣布HarmonyOS 7沉浸光感新增生效約束,彈窗與按鈕類元件照舊、其餘元件限縮到標題欄與底部TabBar,本文拆解這份技術文件為何值得開發者與一般用戶都看一眼。
9月3日晚間,華為開發者官網的「OS 平臺行為變更說明」頁面悄悄多了一條更新:沉浸光感新增生效約束。沒有發布會,沒有倒數,就是一份寫給開發者看的文件。但在鴻蒙生態拚命補課的這個階段,這種文件級的改動,往往比一場發布會更能說明系統正在往哪個方向走。
先把「沉浸光感」講成人話
沉浸光感是 HarmonyOS 7 主打的視覺效果之一,簡單說,就是讓介面元件呈現出隨環境內容流動的通透質感,類似毛玻璃再進化一層的動態光影。應用程式可以透過 systemMaterial 之類的設定,讓自己的介面喫進這套系統級效果,畫面看起來更有一體感。
問題也出在這裡。效果好,開發者就想到處用。列表用一點、卡片用一點、背景再用一點,結果就是效果疊加、功耗上升,系統宣傳片裡那種輕盈通透,到了某些應用裡變成掉幀與發熱。
這次的新約束,本質上就是華為動手收權:效果還在,但能用的位置變少了。
變更前後,差在哪裡
變更前的邏輯很寬鬆:只要是支援沉浸光感的元件,開啟之後效果就在整個頁面生效。Column 這種最常用的基礎容器,設了 systemMaterial,整塊畫面就有光感。
變更後,規則切成兩類。
第一類不受影響:彈窗類元件與介面,包括 AlertDialog、ActionSheet、CustomDialog、各種日期時間選擇器、長按文字跳出來的選單、半模態轉場,以及 Slider、Toggle、Select 這類按鈕與選擇元件。這些在頁面內任何位置照常生效。
第二類被限縮:清單以外的所有 ArkUI 元件,沉浸光感只在兩個位置生效,Navigation 或 NavDestination 的標題欄,以及橫向 Tabs 中 barPosition 為 BarPosition.End 的底部 TabBar。放在其他區域,設了也不亮。
華為在文件裡給出的理由很直白:為了效能與功耗體驗,規範沉浸光感的使用。換句話說,效果被限定在系統自己最能把關的兩塊固定區域,其餘地方一律關燈。
還有一個技術細節值得注意:這次約束涉及的介面是 26.0.0 Beta 版本新增,因此只有當應用的 targetSdkVersion 設定為大於等於 26.0.0 時才會生效。舊應用短期內不受影響,但只要跟著新 SDK 升級,就得照新規則重排畫面。
開發者要多做的事,用戶少掉的東西
對開發者來說,這份文件等於一份改版功課。如果原本的設計把沉浸光感用在大面積內容區,現在只有兩條路:把需要效果的元件搬進標題欄或底部 TabBar,或者放棄那塊區域的光感,改用其他視覺手段補。
這也是為什麼標題會寫「涉及應用適配」。系統級視覺效果的每一次收緊,都會沿著開發流程一路往下傳:設計師改稿、工程師搬元件、測試重跑一輪。鴻蒙生態目前正處於大量主流應用陸續上架、細節快速打磨的階段,這種約束來得不算意外。此前 QQ 鴻蒙版的一次次邀測,補的也多是說說轉發、拍一拍這類日常功能,系統端與應用端都在同一條補課的跑道上。
而對一般用戶來說,變化可能是反向的:某些應用升級後,中間內容區那層流動光影會消失,只剩頂部標題欄和底部欄還亮著。看起來變「樸素」了一點,但換來的是更穩定的幀率與更安分的耗電。這筆帳見仁見智,不過從各家系統這幾年的取捨看,壓效果、保續航幾乎是共同方向。
收窄畫布,其實是在劃線
把視野拉遠一點看,這類「平臺對視覺效果設限」的動作,在作業系統史上並不新鮮。iOS 早年的毛玻璃曾因效能問題在舊機型上被降級,Android 也多次透過行為變更限制背景行為與動畫資源。平臺方握著系統級 API 的生殺大權,當一個效果從賣點變成負擔,動手規範只是時間問題。
HarmonyOS 7 的沉浸光感是發布會上的門面,而這次約束是門面背後的工程帳。華為選擇把效果集中在標題欄與底部欄,其實也透露了一種設計判斷:這兩個區域是使用者視線與手指最常停留的地方,把有限的光影預算花在刀口上,其餘區域回歸內容本身。
對照來看,這與微軟近年處理 OneDrive 備份彈窗的邏輯有點神似:那個每三天彈一次的視窗,最終也被加上了放棄按鈕。平臺方在用戶抱怨與系統整潔之間找到一個退讓的出口,只是這次退讓的不是彈窗,是開發者的自由度。
文件很冷,方向很清楚
這則消息沒有熱搜,討論區裡也只有開發者社羣在逐條解讀元件清單。但它值得被更多一般使用者看到,因為它預告了接下來幾個月鴻蒙應用的視覺走向:頂欄與底欄更精緻,中間內容區更安靜。
下次打開某個剛更新的鴻蒙應用,如果發現畫面中間那層光影不見了,先別急著怪開發者偷工減料。翻翻這份 9 月 3 日的行為變更說明,答案很可能就寫在那張元件清單裡:你看到的效果消失,是系統畫下的新一條線,而這條線的名字,叫做效能與功耗。
主題