Xamarin.Android快速入門

原文: Xamarin.Android快速入門

1、準備工做

1.建立一個空的解決方案,並命名爲Phonewordhtml

 

 

2.右擊解決方案 新建-》新建項目 並命名爲Phoneword_Droidandroid

 

2、界面

1.打開Resources文件夾-》layout文件夾雙擊打開Main.axmlide

 

2.而後將會出現下面的界面工具

 

3.接着咱們選擇這個Button並刪除(按下Delete),並從左邊的工具箱中拖拽一個 Text(Large) 控件到該界面中,以下所示:post

 

4.同時還要經過屬性窗口修改Text的值:ui

 

5.緊接着拖拽一個Plain Text控件到以前的Text控件下方,並修改Text屬性爲1-855-XAMARIN。接着拖拽一個Button控件到Plain Text控件下方:this

 

同時修改Button控件的id和text:url

 

6.接着再拖拽一個Button控件到TranslateButton控件下方,並設置該id屬性爲@+id/CallButton以及Text爲Call,最終效果以下:spa

 

3、代碼

1.右擊該項目,添加-》新建項,選擇類,並設置類的名稱爲PhoneTranslator,而後在其中寫入以下代碼(這些代碼的重要功能是將字符串轉換成正確格式的電話號碼):3d

 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             else
10                 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                 else
18                 {
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                 else
11                 {
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", delegate
11                 {
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

 

4、運行

還須要添加對應的權限

 

 

 

 

筆者這裏採用的是x86下的模擬機,並非ARM下,關於如何開啓x86下的模擬機須要的人能夠留言(須要你的CPU支持VT-X),固然速度跟你的真機同樣。

相關文章
相關標籤/搜索