首页 > 代码库 > 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 }
然后我们打开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;
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 };
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 };
四、运行
笔者这里采用的是x86下的模拟机,并不是ARM下,关于如何开启x86下的模拟机需要的人可以留言(需要你的CPU支持VT-X),当然速度跟你的真机一样。
续篇:多界面
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。