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),固然速度跟你的真機同樣。

相關文章
相關標籤/搜索