一、準備工作
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,然後在其中寫入如下代碼(這些代碼的重要功能是将字元串轉換成正确格式的電話号碼):
namespace Phoneword_Droid
{
public static class PhoneTranslator
{
public static string ToNumber(string raw)
{
if (string.IsNullOrWhiteSpace(raw))
return "";
else
raw = raw.ToUpperInvariant();
var newNumber = new StringBuilder();
foreach (var c in raw)
{
if (" -0123456789".Contains(c))
newNumber.Append(c);
else
{
var result = TranslateToNumber(c);
if (result != null)
newNumber.Append(result);
}
}
return newNumber.ToString();
}
public static int? TranslateToNumber(char c)
if ("ABC".Contains(c))
return 2;
else if ("DEF".Contains(c))
return 3;
else if ("GHI".Contains(c))
return 4;
else if ("JKL".Contains(c))
return 5;
else if ("MNO".Contains(c))
return 6;
else if ("PQRS".Contains(c))
return 7;
else if ("TUV".Contains(c))
return 8;
else if ("WXYZ".Contains(c))
return 9;
return null;
}
}
然後我們打開MainActivity.cs檔案:
2.然後我們首先要做的是通過FindViewById擷取這些控件,OnCreate中代碼如下所示(需要先成功生成一次,防止Resource.Id下沒有對應的控件id):base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
Button callButton = FindViewById<Button>(Resource.Id.CallButton);
callButton.Enabled = false;
3.然後我們需要給translateButton綁定監聽事件,判斷輸入的字元是否為有效的電話号碼,如果是則啟用CallButton否則不啟用,同時還修改CallButton的文字(在上面代碼後面追加):
string translatedNumber = string.Empty;
translateButton.Click += (object sender, EventArgs e) =>
translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text);
if (String.IsNullOrWhiteSpace(translatedNumber))
callButton.Text = "Call";
callButton.Enabled = false;
callButton.Text = "Call" + translatedNumber;
callButton.Enabled = true;
};
4.最後我們需要綁定callButton的監聽事件,以便能夠在使用者點選後彈出對話框确認使用者是否需要撥打,并撥打電話(依然是接着上面的追加):
callButton.Click += (s, e) =>
//對話框
var callDialog = new AlertDialog.Builder(this);
//對話框内容
callDialog.SetMessage("Call" + translatedNumber + "?");
//撥打按鈕
callDialog.SetNeutralButton("Call", delegate
//使用意圖撥打電話
var callIntent = new Intent(Intent.ActionCall);
//将需要撥打的電話設定為意圖的參數
callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
StartActivity(callIntent);
});
//取消按鈕
callDialog.SetNegativeButton("Cancel", delegate { });
//顯示對話框
callDialog.Show();
四、運作
還需要添加對應的權限