Xamarin.Android快速入門


一、准備工作

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             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

 

四、運行

還需要添加對應的權限

 

 

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM