一、 准备工作
1.新建一个项目取名为phoneword
2.在项目创建好之后,让我们展开“Resources”文件夹然后找到并打开该文件夹下的“layout”文件夹,双击main.axml在Android设计器中打开它,这是我们的布局文件。
3.让我们选择“你好世界,请单击我”在设计表面上的按钮,并按删除键将其删除。从工具箱(左侧的区域),在搜索字段中输入text,并将一个Text (Large)控件拖动到设计图面中心的区域:
4.选择我们拖进去控件,我们可以在属性窗口中修改输入的文本
5.然后我们拖一个简单的文本控件到设计器,并放置在刚才我们添加的控件下面
6.在设计器中选中刚才添加的控件,我们可以在属性窗口中我们可以改变它的id和text
7.让我们拖动一个“按钮”到设计器,并改变它的id和text
8.然后我们再拖一个按钮在刚才的按钮下面,并设置其属性,然后ctrl+s保存一下
二、代码
1.现在我们来添加一些代码,右击项目,选择“添加》新建项“添加一个c#代码文件取名为PhoneTranslator.cs
2.将下列代码copy进去
namespace Phoneword
{
public static class PhonewordTranslator
{
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);
}
// otherwise we've skipped a non-numeric char
}
return newNumber.ToString();
}
static bool Contains(this string keyString, char c)
{
return keyString.IndexOf(c) >= ;
}
static int? TranslateToNumber(char c)
{
if ("ABC".Contains(c))
return ;
else if ("DEF".Contains(c))
return ;
else if ("GHI".Contains(c))
return ;
else if ("JKL".Contains(c))
return ;
else if ("MNO".Contains(c))
return ;
else if ("PQRS".Contains(c))
return ;
else if ("TUV".Contains(c))
return ;
else if ("WXYZ".Contains(c))
return ;
return null;
}
}
}
3.下一步,我们将添加代码来连接用户。让我们双击项目中的MainActivity类打开它(也就是Android中的活动)。
4.找到MainActivity类中的Oncreate方法,删除模板中的代码,我们将在Oncrate中书写代码
5.下面我们需要找到我们在设计器中添加的控件,让我们在oncreate方法中添加以下代码(在SetContentView方法后面)。
EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
Button callButton = FindViewById<Button>(Resource.Id.CallButton);
6.下面我们添加Translate button点击事件的代码 在上一步后面
// 设置callbutton为不能点
callButton.Enabled = false; // 设置translatedNumber为空
string translatedNumber = string.Empty; //添加translateButton的点击事件
translateButton.Click += (object sender, EventArgs e) =>
{
//把用户的电话号码转换为数字
translatedNumber = PhonewordTranslator.ToNumber(phoneNumberText.Text);
if (String.IsNullOrWhiteSpace(translatedNumber))//如果有空或者空格
{
callButton.Text = "Call";
callButton.Enabled = false;
}
else
{
callButton.Text = "Call " + translatedNumber;
callButton.Enabled = true;
}
};
7. 然后添加Call butto点击事件的代码
//设置callButton的点击事件
callButton.Click += (object sender, EventArgs 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();
};
8.最后让我们给应用程序添加一个拨打电话的权限:右击项目》属性》Android Manifest 勾选call_phone
9.右击解决方案》,重新生成解决方案,如果没有报错表示我们程序已经完成了,点击运行按钮运行,最后运行效果如图。