標籤: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),當然速度跟你的真機一樣。
續篇:多介面