首页 > 代码库 > Xamarin.Android快速入门

Xamarin.Android快速入门

一、准备工作

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,然后在其中写入如下代码(这些代码的重要功能是将字符串转换成正确格式的电话号码):

 1 namespace Phoneword_Droid 2 { 3     public static class PhoneTranslator 4     { 5         public static string ToNumber(string raw) 6         { 7             if (string.IsNullOrWhiteSpace(raw)) 8                 return ""; 9             else10                 raw = raw.ToUpperInvariant();11 12             var newNumber = new StringBuilder();13             foreach (var c in raw)14             {15                 if (" -0123456789".Contains(c))16                     newNumber.Append(c);17                 else18                 {19                     var result = TranslateToNumber(c);20                     if (result != null)21                         newNumber.Append(result);22                 }23             }24             return newNumber.ToString();25         }26 27         public static int? TranslateToNumber(char c)28         {29             if ("ABC".Contains(c))30                 return 2;31             else if ("DEF".Contains(c))32                 return 3;33             else if ("GHI".Contains(c))34                 return 4;35             else if ("JKL".Contains(c))36                 return 5;37             else if ("MNO".Contains(c))38                 return 6;39             else if ("PQRS".Contains(c))40                 return 7;41             else if ("TUV".Contains(c))42                 return 8;43             else if ("WXYZ".Contains(c))44                 return 9;45             return null;46         }47     }48 }
View Code

 

 

然后我们打开MainActivity.cs文件:

 

2.然后我们首先要做的是通过FindViewById获取这些控件,OnCreate中代码如下所示(需要先成功生成一次,防止Resource.Id下没有对应的控件id):

1             base.OnCreate(bundle);2             SetContentView(Resource.Layout.Main);3             EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);4             Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);5             Button callButton = FindViewById<Button>(Resource.Id.CallButton);6 7             callButton.Enabled = false;
View Code

 

 

3.然后我们需要给translateButton绑定监听事件,判断输入的字符是否为有效的电话号码,如果是则启用CallButton否则不启用,同时还修改CallButton的文字(在上面代码后面追加):

 1             string translatedNumber = string.Empty; 2             translateButton.Click += (object sender, EventArgs e) => 3             { 4                 translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text); 5                 if (String.IsNullOrWhiteSpace(translatedNumber)) 6                 { 7                     callButton.Text = "Call"; 8                     callButton.Enabled = false; 9                 }10                 else11                 {12                     callButton.Text = "Call" + translatedNumber;13                     callButton.Enabled = true;14                 }15             };
View Code

 

 

4.最后我们需要绑定callButton的监听事件,以便能够在用户点击后弹出对话框确认用户是否需要拨打,并拨打电话(依然是接着上面的追加):

 1             callButton.Click += (s, e) => 2             { 3                 //对话框 4                 var callDialog = new AlertDialog.Builder(this); 5  6                 //对话框内容 7                 callDialog.SetMessage("Call" + translatedNumber + "?"); 8  9                 //拨打按钮10                 callDialog.SetNeutralButton("Call", delegate11                 {12                     //使用意图拨打电话13                     var callIntent = new Intent(Intent.ActionCall);14 15                     //将需要拨打的电话设置为意图的参数16                     callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));17                     18                     StartActivity(callIntent);19                 });20 21                 //取消按钮22                 callDialog.SetNegativeButton("Cancel", delegate { });23                 24                 //显示对话框25                 callDialog.Show();26             };
View Code

四、运行

 

 

笔者这里采用的是x86下的模拟机,并不是ARM下,关于如何开启x86下的模拟机需要的人可以留言(需要你的CPU支持VT-X),当然速度跟你的真机一样。

 

续篇:多界面