VS/Xamarin Android开发Follow Me(一)

时间:2022-09-20 18:25:10

一、准备工作

1.创建一个空的解决方案,并命名为Phoneword

 VS/Xamarin Android开发Follow Me(一)

2.右击解决方案 新建-》新建项目 并命名为Phoneword_Droid

VS/Xamarin Android开发Follow Me(一) 

二、界面

1.打开Resources文件夹-》layout文件夹双击打开Main.axml

VS/Xamarin Android开发Follow Me(一)

2.然后将会出现下面的界面

VS/Xamarin Android开发Follow Me(一)

3.接着我们选择这个Button并删除(按下Delete),并从左边的工具箱中拖拽一个 Text(Large) 控件到该界面中,如下所示:

VS/Xamarin Android开发Follow Me(一)

4.同时还要通过属性窗口修改Text的值:

VS/Xamarin Android开发Follow Me(一)

5.紧接着拖拽一个Plain Text控件到之前的Text控件下方,并修改Text属性为1-855-XAMARIN。接着拖拽一个Button控件到Plain Text控件下方:

VS/Xamarin Android开发Follow Me(一)

同时修改Button控件的id和text:

VS/Xamarin Android开发Follow Me(一)

6.接着再拖拽一个Button控件到TranslateButton控件下方,并设置该id属性为@ id/CallButton以及Text为Call,最终效果如下:

VS/Xamarin Android开发Follow Me(一)

三、代码

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  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文件:

VS/Xamarin Android开发Follow Me(一)

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();
};

四、运行

还需要添加对应的权限

VS/Xamarin Android开发Follow Me(一)

VS/Xamarin Android开发Follow Me(一)

VS/Xamarin Android开发Follow Me(一)

今天就到这里……