一、准备工作
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;
}
else
{
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();
};
四、运行
还需要添加对应的权限
今天就到这里……