Xamarin.Android开发实践(一)

原文:Xamarin.Android开发实践(一)html

1、准备工做

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

 

 

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

 

2、界面

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

 

2.而后将会出现下面的界面ui

 

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

 

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

 

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

 

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

 

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

 

3、代码

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):

 
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 else 11  { 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", delegate 11  { 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 };
 

 

4、运行

还须要添加对应的权限

 

 

 

 

笔者这里采用的是x86下的模拟机,并非ARM下,关于如何开启x86下的模拟机须要的人能够留言(须要你的CPU支持VT-X),固然速度跟你的真机同样。

相关文章
相关标签/搜索