VS/Xamarin Android开发Follow Me(一)

一、准备工作

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

四、运行

还需要添加对应的权限

今天就到这里……

猜你喜欢

转载自www.cnblogs.com/xtxk110/p/12174596.html