本文主要介紹使用 MAUI 開發安卓應用時,如何更換和處理 UI 資源:應用名稱,圖示,主題配色,狀态欄,閃屏。
1. 背景
平常比較喜歡看小說,但是不知道從何時起,已經找不到一個純粹的本地小說閱讀器了。也能了解,畢竟不能隻靠愛心發電,線上資源也就算了,我本地的 TXT 你也給我加廣告也就離譜了吧。純粹的閱讀器還是隻能靠自己了,之前用 AppCan 和 APICloud 的混合開發技術做過。近期在了解 MAUI,就繼續做個小工具練練手吧。代碼一行沒寫,但是基礎 UI 和圖示什麼的要給先搞起來,面子功夫我先做足咯。
2. 資源設定
2.1 項目建立
項目建立我們這裡選擇 .NET MAUI Blazor 應用,因為我覺得使用 Web 技術來設計 UI 界面對我來說會更友善和順手一些。這裡需要額外注意的是,項目名稱這裡可一定不要用中文,不然怎麼出的錯你都不知道。
項目建立
2.2 應用名稱
對于應用名稱的修改,如想顯示中文,而不是建立時設定的英文,則隻需要在屬性中的“已共享 MAUI”進行修改即可。
應用程式的 ID 即是生成的安卓包 ID,版本也會在 APK 資訊中展示。
應用基礎資訊
然後生成應用,使用安卓裝置調試我們可以發現,包ID 和名稱已經修改完成。
APK
另外在項目檔案中,也有幾個配置資訊,我們可以一起改掉:
<!-- Display name --> <ApplicationTitle>悅讀</ApplicationTitle> <!-- App Identifier --> <ApplicationId>com.sangsq.yuereader</ApplicationId>
如果你通過 Windows 調試界面,想修改應用名稱和包資訊,則需要在
Platforms/windows
目錄下設定
Package.appxmanifest
。
Windows
2.3 應用圖示
MAUI APP 的應用圖示設定資源是在
Resources/AppIcon
目錄下,我們可以看到這裡使用的是 SVG 矢量圖檔格式:
•
appicon.svg
純色圖示背景•
appiconfg.svg
圖示的主體内容
借助 SVG 圖像的矢量特性,無需維護特定于平台或特定于裝置的各種不同分辨率的圖像。我們可以使用 Adobe illustrator 來設計,最後導出 SVG 格式即可。
根據我讓老婆調整了 N 版設計的經驗來看,這個圖示的主體最好是上下左右各留出 25% 的空間,這樣最後圖示展示的效果才會好一些。
appicon
更換圖示當然是最簡單的了,隻需要修改圖示檔案即可。
在項目檔案中我們可以看到,關于 APP 圖示這一塊的配置:
<!-- App Icon --> <MauiIcon Include="Resources\AppIcon\appicon.svg" ForegroundFile="Resources\AppIcon\appiconfg.svg" Color="#512BD4" />
上面的 Color 是背景重新着色用的,我們這裡沒有用到,可以直接去掉。
2.4 應用閃屏
在項目檔案中閃屏配置資訊如下:
<!-- Splash Screen --> <MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#512BD4" BaseSize="128,128" />
上面的
BaseSize
是為了在不同螢幕尺寸和密度的裝置上進行适應,其取值為 8 的倍數。系統為适用于不同的螢幕,會進行縮放。當然,也可以将
Resize
設定為
false
不進行自動調整。
這裡我們可以直接采用 App 的圖示來設定,更改資源路徑。
Color
也更改為應用的主題色。
<!-- Splash Screen --> <MauiSplashScreen Include="Resources\AppIcon\appiconfg.svg" Color="#F80" BaseSize="128,128" />
注意:隻更改配置資訊,特别是修改資源檔案的情況下,調試可能會出現編譯的失敗,可以清理後重試;調試過程中,真機的閃屏可能不會顯示出 appiconfg.svg
圖檔,重新打開一下應用就可以看到其實已經更改完成了。
2.5 沉浸式狀态欄
安卓的沉浸式狀态欄顔色設定預設是 MAUI 的藍色,設定檔案在
Platforms\Android\Resources\values\colors.xml
,這個 xml 檔案内容如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#512BD4</color> <color name="colorPrimaryDark">#2B0B98</color> <color name="colorAccent">#2B0B98</color> </resources>
這裡我們将
colorPrimary
改為我們應用的主體顔色即可。其他兩個是稍微深色一點的配色,狀态欄使用第二個顔色 Dark。
狀态欄