C# 入門指南

單元 33 - 自訂 App 圖示與實機測試

~~學習進度表~~

基本上, Visual Studio Community 2019 有預設的 Android App 圖示,如以下圖示

檔案名稱 ic_launcher.pngic_launcher_foreground.pngic_launcher_round.png 三者都是圖示檔案,關於 Android App 圖示,詳情可以參考官方文件 Android Developers - 自動調整圖示

這個資料夾位於專案 (project) 的 📁Resources 資料夾中, Android App 圖示有五種尺寸,如下圖分別在五個起始名稱為 mipmap- 的資料夾中

下面為五個資料夾中的圖示尺寸表

資料夾名稱尺寸
📁mipmap-mdpi48×48
📁mipmap-dpi72×72
📁mipmap-hdpi96×96
📁mipmap-xhdpi144×144
📁mipmap-xxhdpi192×192

以下是我們為這個範例 App 所準備的圖示

如果要在 Google Play 上架,就需要額外準備 512×512 的圖檔上傳到 Google Play Console ,因此自己準備好圖示最好尺寸至少 512×512 。

製作好圖示,然後逐一到每一個資料夾去置換檔案,如下

這裡是利用 Android Studio 中的 Image Asset Studio 製作圖示,詳情請參考官方文件 Android Developers - 使用 Image Asset Studio 创建应用图标

下面開始實機測試,將 Android 手機利用 USB 線插入電腦,執行鍵就會從模擬器改成 Android 手機

實機測試的 Android 手機要先打開「開發人員選項」,打開的方式是找到版本號的地方,長按版本號,接下來 Android 系統就會跳出要打開「開發人員選項」的後續動作,此外也要把「USB偵錯」的選項開啟。

點擊 Android 手機的執行鍵,過一會就會在手機上開啟 App

點擊開始編碼就會進入編碼功能頁

如果到 Android 的「應用程式」頁,就會看到編密碼的 App 已安裝到手機上

這裡安裝 App 後的圖示還沒有變成自訂圖示,這是因為還沒「封存」與「散發」,待下一個單元的步驟結束後,重新安裝到手機上就會變成自訂的圖示。

利用 Visual Studio Community 2019 可以直接將範例 App 安裝到測試手機上,不過要上架應用程式商店,還得打包成 apk 檔,下一個單元介紹如何打包, Visual Studio Community 2019 用的術語叫做「封存」及「散發」。

相關教學影片

上一頁 單元 32 - 整合功能
回 C# 入門指南首頁
下一頁 單元 34 - 封存與散發
回 C# 教材首頁
回程式語言教材首頁
中英文術語對照
專案project
參考資料
1. Visual Studio | Microsoft Docs - Xamarin.Android 使用者入門
2. Xamarin | Microsoft Docs - 準備可供發行的應用程式
重點整理
1. Visual Studio Community 2019 有預設的 Android App 圖示。
2. Android App 圖示有五種尺寸,分別為 48×48 、 72×72 、 96×96 、 144×144 、 192×192 。
3. 將 Android 手機利用 USB 線插入 Windows 電腦, Visual Studio 的模擬器就會自動出現該 Android 手機。
問題與討論
1. 為什麼 Android App 的圖示要準備五種?
2. 既然已經在 Visual Studio 的模擬器測試過了,為什麼還要做實機測試?
練習
1. 承接上一單元的 HelloAndroidDemo 專案,利用 Count 為單數時,將 TextView 的文字設定為「你好」, Button 的文字設定為「再按」,反之維持原始設定。
2. 承接上一單元的 GuessAndroidDemo 專案,加入 WpfAppDemo 專案的 Program.cs ,並在 GameActivity.cs 中加入以下程式碼
using GuessGame;
3. 承上題,將 GameActivity 類別的視窗元件都設定為屬性,另外加入屬性 Guess 型態的 GameObjectstringUserInputintCountNumberbool 型態的 State
4. 承上題,在 GameActivity 中以 Intent 類別的 GetStringExtra() 方法可以取得從 MainActivity 傳來的數值,利用此數值設定 GameObject