1.建立一個空的解決方案,並命名爲Phonewordhtml
2.右擊解決方案 新建-》新建項目 並命名爲Phoneword_Droidandroid
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
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 }
而後咱們打開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;
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 };
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 };
還須要添加對應的權限