Xamarin.Android快速入門

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   使用   

一、準備工作1.建立一個空的解決方案,並命名為Phoneword

 

 

2.右擊解決方案 建立-》建立項目 並命名為Phoneword_Droid

 

二、介面1.開啟Resources檔案夾-》layout檔案夾雙擊開啟Main.axml

 

2.然後將會出現下面的介面

 

3.接著我們選擇這個Button並刪除(按下Delete),並從左邊的工具箱中拖拽一個 Text(Large) 控制項到該介面中,如下所示:

 

4.同時還要通過屬性視窗修改Text的值:

 

5.緊接著拖拽一個Plain Text控制項到之前的Text控制項下方,並修改Text屬性為1-855-XAMARIN。接著拖拽一個Button控制項到Plain Text控制項下方:

 

同時修改Button控制項的id和text:

 

6.接著再拖拽一個Button控制項到TranslateButton控制項下方,並設定該id屬性為@+id/CallButton以及Text為Call,最終效果如下:

 

三、代碼1.右擊該項目,添加-》建立項,選擇類,並設定類的名稱為PhoneTranslator,然後在其中寫入如下代碼(這些代碼的重要功能是將字串轉換成正確格式的電話號碼):
 1 namespace Phoneword_Droid 2 { 3     public static class PhoneTranslator 4     { 5         public static string ToNumber(string raw) 6         { 7             if (string.IsNullOrWhiteSpace(raw)) 8                 return ""; 9             else10                 raw = raw.ToUpperInvariant();11 12             var newNumber = new StringBuilder();13             foreach (var c in raw)14             {15                 if (" -0123456789".Contains(c))16                     newNumber.Append(c);17                 else18                 {19                     var result = TranslateToNumber(c);20                     if (result != null)21                         newNumber.Append(result);22                 }23             }24             return newNumber.ToString();25         }26 27         public static int? TranslateToNumber(char c)28         {29             if ("ABC".Contains(c))30                 return 2;31             else if ("DEF".Contains(c))32                 return 3;33             else if ("GHI".Contains(c))34                 return 4;35             else if ("JKL".Contains(c))36                 return 5;37             else if ("MNO".Contains(c))38                 return 6;39             else if ("PQRS".Contains(c))40                 return 7;41             else if ("TUV".Contains(c))42                 return 8;43             else if ("WXYZ".Contains(c))44                 return 9;45             return null;46         }47     }48 }
View Code

 

 

然後我們開啟MainActivity.cs檔案:

 

2.然後我們首先要做的是通過FindViewById擷取這些控制項,OnCreate中代碼如下所示(需要先成功產生一次,防止Resource.Id下沒有對應的控制項id):
1             base.OnCreate(bundle);2             SetContentView(Resource.Layout.Main);3             EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);4             Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);5             Button callButton = FindViewById<Button>(Resource.Id.CallButton);6 7             callButton.Enabled = false;
View Code

 

 

3.然後我們需要給translateButton綁定監聽事件,判斷輸入的字元是否為有效電話號碼,如果是則啟用CallButton否則不啟用,同時還修改CallButton的文字(在上面代碼後面追加):
 1             string translatedNumber = string.Empty; 2             translateButton.Click += (object sender, EventArgs e) => 3             { 4                 translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text); 5                 if (String.IsNullOrWhiteSpace(translatedNumber)) 6                 { 7                     callButton.Text = "Call"; 8                     callButton.Enabled = false; 9                 }10                 else11                 {12                     callButton.Text = "Call" + translatedNumber;13                     callButton.Enabled = true;14                 }15             };
View Code

 

 

4.最後我們需要綁定callButton的監聽事件,以便能夠在使用者點擊後彈出對話方塊確認使用者是否需要撥打,並撥打到電話(依然是接著上面的追加):
 1             callButton.Click += (s, e) => 2             { 3                 //對話方塊 4                 var callDialog = new AlertDialog.Builder(this); 5  6                 //對話方塊內容 7                 callDialog.SetMessage("Call" + translatedNumber + "?"); 8  9                 //撥打按鈕10                 callDialog.SetNeutralButton("Call", delegate11                 {12                     //使用意圖撥打到電話13                     var callIntent = new Intent(Intent.ActionCall);14 15                     //將需要撥打的電話設定為意圖的參數16                     callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));17                     18                     StartActivity(callIntent);19                 });20 21                 //取消按鈕22                 callDialog.SetNegativeButton("Cancel", delegate { });23                 24                 //顯示對話方塊25                 callDialog.Show();26             };
View Code四、運行

 

 

筆者這裡採用的是x86下的類比機,並不是ARM下,關於如何開啟x86下的類比機需要的人可以留言(需要你的CPU支援VT-X),當然速度跟你的真機一樣。

 

續篇:多介面

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.