日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

我的第一个 Mono for Android 应用

發布時間:2025/7/14 Android 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我的第一个 Mono for Android 应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我的第一個 Mono for Android 應用

Mono for Android 初體驗, 學習怎么使用 Mono for Anrdoid 創建 android 應用, 如何使用 Intent 啟動 Activity , 如何在 Activity 之間傳遞參數。

準備開發環境

下載并安裝 Mono for Android

在 OSX 系統下準備 Mono for Android 開發環境時比較容易的, 只要去?Xamarin?下載一個在線安裝程序, 安裝程序會自動下載并安裝所有的文件, 甚至包括 JDK、 Android SDK 等, 沒什么好說的, 一句話, 很簡單。

配置 Android 模擬器

啟動 MonoDevelop , 在 Tools 菜單下找到點擊 “Open AVD Manager” , 將會啟動 “Android Virtual Device Manager”, 創建一個新的 Android 虛擬設備, Name 為 Droid4.1, Target 選擇 4.1, SD 卡選擇 256, Skin 選擇內置的 WXGA720 , 等等, 一切可以參考 Google 的文檔。

需要注意的是, 要添加一個硬件選項 GPU emulation , 并設置為 true , 開啟 GPU 模擬, 可以加快模擬器運行速度, 否則模擬器運行真的會很慢。

創建好了之后, 先運行一下模擬器, 確認一切配置正常了, 整個開發環境就算準備好了。

創建 Mono for Android 應用

打開 MonoDevelop , 選擇新建解決方案, 左邊的分類選擇 "Mono for Android" , 右邊選擇 "Mono for Android Application" , 使用默認的模板新建一個 Mono for Android 應用程序, 如下圖所示, 項目名稱為 “MyFirstApp” 。

熟悉默認項目模板

現在, 先不要做其它的, 先來熟悉一下這個項目, 打開項目屬性對話框, 看看每個節點都有什么設置項, 重點熟悉下面幾個節點:

  • Build/General , 選擇 Target Framework ,設置編譯應用使用的 Android SDK 版本;
  • Build/Mono for Android Build , 設置如 Linker 、 部署方式、 以及高級標簽下的的 CPU架構、 國際化等;
  • Build/Mono for Android Application , 設置應用程序信息, 也就是 AndroidManifest.xml 文件的信息;

項目默認的目錄結構如下如所示:

注意 Assets 和 Resource 目錄:

Assets?目錄, 如果應用需要用到二進制資源文件, 比如特殊字體、聲音等, 放在這個目錄下, 并將 BuildAction 設置為 AndrioidAsset , 資源將會和應用程序一起部署, 在運行時可以通過 AssetManager 使用類似下面的代碼進行訪問:

public class ReadAsset : Activity {protected override void OnCreate (Bundle bundle){base.OnCreate (bundle);InputStream input = Assets.Open ("my_asset.txt");} }

另外,字體文件可以這樣加載:

Typeface tf = Typeface.CreateFromAsset(Context.Assets, "fonts/samplefont.ttf");

Resource?目錄, 包含應用程序所需的圖片、 布局描述、 二進制文件和字符串字典等資源文件。 比如, 一個簡單的 Android 應用包含一個界面描述文件 (main.axml) , 一個國際化的字符串字典 (strings.xml) 以及圖標 (icon.png) , 這些文件按照下面的結構保存在 “Resource” 目錄內:

Resources/drawable/icon.pnglayout/main.axmlvalues/strings.xml

為了讓編譯系統能夠將資源文件識別出 Android 資源, 需要將其編譯動作 (Build Action) 設置為 “Android Resource”。 上面的目錄結構經過編譯之后, 將會生成類似下面的文件:

public class Resource {public class Drawable {public const int icon = 0x123;}public class Layout {public const int main = 0x456;}public class Strings {public const int FirstString = 0xabc;public const int SecondString = 0xbcd;} }

使用?Resource.Drawable.icon?可以引用 drawable/icon 文件,?Resource.Layout.main?可以引用 /layout/main.axml 文件, 而使用Resource.Strings.FirstString?則可以引用 values/strings.xml 文件中的第一個字符串。

以上這些和 Android SDK 文檔中介紹的都是大同小異的, 在 Mono for Android 環境下又加上了一些 .Net 特有的風格而已, 對于有經驗的 .Net 開發人員來說, 一看就懂了。

創建 Activity 及 View

與其它平臺的應用程序不同, 這些平臺上的應用程序通常都有一個單一的入口 main 函數, 應用程序都由這個入口函數啟動, 創建窗口、 維護界面。 而 Android 程序則不同, 一個 Android 程序由一些松散的 Activity 提供的界面組成, 因此看起來有點兒像 Web 應用程序, 任何一個 Activity 都可以通過 URL 啟動。

現在來新建一個 Activity , 在菜單欄上選擇 File -> New -> File , 在彈出的新建文件對話框中選擇 Android Activity , 如下圖所示:

新建的 Activity 的代碼如下:

[Activity(Label = "MyFirstApp", MainLauncher = true)] public class MainActivity : Activity {protected override void OnCreate(Bundle bundle) {base.OnCreate(bundle);}}

注意 MainActivity 的 ActivityAttribute 標記, 這里指定了兩個屬性,?Label="MyFirstApp"?表示 Activity 的顯示名稱,?MainLauncher=true?表示在應用程序列表中顯示, 在編譯時, Mono for Android 會根據這些標記生成一個 AndroidManifest.xml , 并打包倒最終的 Android 應用程序中。

現在來創建 MainActivity 的視圖, 先選中項目的 Resources/layout 目錄, 在菜單欄上選擇 File -> New -> File , 在彈出的新建文件對話框中選擇 Android Layout , 如下圖所示:

文件名輸入 MainActivityLayout , MonoDevelop 默認會打開設計視圖, 先切換到代碼視圖, 粘貼下面的代碼:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><EditTextandroid:layout_width="0dp"android:layout_height="wrap_content"android:id="@+id/MessageEditText"android:layout_weight="1"android:hint="@string/MessageEditTextHint" /><Buttonandroid:text="@string/SendButtonText"android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/SendButton" /> </LinearLayout>

然后切換到設計視圖, 看起來如下圖所示:

在 MainActivity.cs 文件中的 base.OnCreate(bundle) 下面加入下面一句代碼, 讓 MainActivity 使用 MainActivityLayout :

this.SetContentView(Resource.Layout.MainActivityLayout);

用同樣的方法, 創建 SecondActivity 以及 SecondActivityLayout , SecondActivityLayout 的代碼以及設計界面如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:text="Large Text"android:textAppearance="?android:attr/textAppearanceLarge"android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/MessageTextView" /> </LinearLayout>

使用 Intent 啟動 Activity 并傳遞參數

如果現在運行程序, 將只能看到 MainActivity , 看不到 SecondActivity , 如果要想啟動 SecondActivity , 就需要用到 Intent 。 Android 通過 Intent 來啟動 Activity , 以及在 Activity 之間傳遞參數。

打開 MainActivity , 添加一些代碼, 使其看起來如下所示:

[Activity(Label = "MyFirstApp", MainLauncher = true)] public class MainActivity : Activity {public const string ExtraMessage = "Cn.Beginor.MyFirstApp.MainActivity.ExtraMessage";protected override void OnCreate(Bundle bundle) {base.OnCreate(bundle);// 設置布局文件this.SetContentView(Resource.Layout.MainActivityLayout);var sendBtn = this.FindViewById<Button>(Resource.Id.SendButton);// 為發送按鈕添加事件處理函數sendBtn.Click += SendButtonClick;}void SendButtonClick (object sender, EventArgs e) {// 獲取用戶輸入的信息var msgEditText = this.FindViewById<EditText>(Resource.Id.MessageEditText);if (msgEditText == null) {return;}var msg = msgEditText.Text;// 創建 Intent 并傳遞用戶輸入的信息var intent = new Intent(this, typeof(SecondActivity));intent.PutExtra(ExtraMessage, msg);// 啟動第二個 Activitythis.StartActivity(intent);} }

再打開 SecondActivity , 添加接收 ExtraMessage 并顯示的代碼:

protected override void OnCreate(Bundle bundle) {base.OnCreate(bundle);// 設置布局文件this.SetContentView(Resource.Layout.SecondActivityLayout);// 從 Intent 中獲取 ExtraMessage var intent = this.Intent;var msg = intent.GetStringExtra(MainActivity.ExtraMessage);// 將 ExtraMessage 顯示在 TextView 上var textView = this.FindViewById<TextView>(Resource.Id.MessageTextView);textView.Text = msg; }

現在運行這個程序, 可以看到首先啟動的是 MainActivity , 顯示界面如下:

點擊 Send 按鈕, 會啟動 SecondActivity , 并將輸入的信息顯示在界面上:

總結

Mono for Android 初體驗感覺不錯, 對于有經驗的 .Net 開發人員來講, 上手的速度非常快, 只要稍微學習一下 Android 的 UI 方面的知識就可以了。 MonoDevelop 的界面和 VS 很相似, 上手也是很容易的事情。 還是那句話, Mono for Android 最大的好處是可以利用現有的 .Net 代碼, CodePlex 以及 Github 上有豐富的資源可以利用, 如果你熟悉 .Net 開發, Mono for Android 也是值得一試的。

張志敏所有文章遵循創作共用版權協議,要求署名、非商業 、保持一致。在滿足創作共用版權協議的基礎上可以轉載,但請以超鏈接形式注明出處。

本博客已經遷移到 GitHub , 圍觀地址:?http://beginor.github.io/


本文轉自張志敏博客園博客,原文鏈接:http://www.cnblogs.com/beginor/archive/2012/11/02/2751125.html,如需轉載請自行聯系原作者

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的我的第一个 Mono for Android 应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。