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

View Code

 

四、运行

还需要添加对应的权限

 

 

 

 

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

 

时间: 2024-09-19 01:40:04

Xamarin.Android快速入门的相关文章

Android快速入门

项目源码下载 https://github.com/Wang-Jun-Chao/AndroidProjects Android项目的目录结构 Activity:应用被打开时显示的界面 src:项目代码 R.java:项目中所有资源文件的资源id Android.jar:Android的jar包,导入此包方可使用Android的api libs:导入第三方jar包 assets:存放资源文件,比方说mp3.视频文件 bin:存放编译打包后的文件 res:存放资源文件,存放在此文件夹下的所有资源文件

Android注解快速入门和实用解析

本文讲的是Android注解快速入门和实用解析,首先什么是注解?@Override就是注解,它的作用是: 检查是否正确的重写了父类中的方法. 标明代码,这是一个重写的方法. 1.体现在于:检查子类重写的方法名与参数类型是否正确;检查方法private/final/static等不能被重写.实际上@Override对于应用程序并没有实际影响,从它的源码中可以出来. 2.主要是表现出代码的可读性. 作为Android开发中熟知的注解,Override只是注解的一种体现,更多时候,注解还有以下作用:

Android开发入门(三)碎片简介 3.1 动态添加Fragments

fragment的真正用处是在程序运行过程中动态地添加. 1. 新建工程. 2. res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"

Android开发入门(二)使用意图 2.5 使用Intent调用内置应用程序

我们已经了解了如何在自己的单个应用中调用activity.但是,android开发中比较重要的一点,就是使 用intent调用其他应用的activity.特别地,你的应用可以调用系统中的许多"内置"应用.所谓的"内置 "应用,指的就是系同级别的应用,比如Browser,Phone,Sms等等.举个例子,如果你的应用需要打开一个 网页,可以使用Intent对象去调用浏览器,浏览器把网页显示出来,而不是要自己创建一个浏览器... 下面的例子展示如何调用系统中的几个比较常

Android开发入门(一)详解活动 1.6 显示复杂对话框

除了"对话框"进度条,也可以创建一个显示"操作进度"的对话框,例如显示正在下载的状态. 1. 创建一个工程:Dialog. 2. main.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro

Android开发入门(一)详解活动 1.4 显示普通对话框

有的时候,可能需要弹出一个对话框,以便从用户的输入来获取某些确认信息.这种情况下,可以重写 Activity基类中的受保护方法(protected)onCreateDialog(). 1. 创建一个工程:Dialog. 2. main.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com

《jQuery Mobile快速入门》—— 导读

前言 jQuery Mobile快速入门 当前,企业和个人用于开发和发布移动应用程序所使用的技术正在发生变化,而我们则是见证者.最初,开发和发布移动程序的策略是针对每一个主流平台开发独立的本地app.然而,开发团队迅速意识到,维护多个平台所需的花费是不可忍受的,而且移动团队也会丧失其敏捷性.在将来,移动开发团队只需一次编码,就可以将app部署到所有设备上,这样的开发团队会更具竞争性,而jQuery Mobile可以帮助你实现这一目标. jQuery Mobile是一个框架,用于交付具有统一界面的

请问如何快速入门手机开发?

问题描述 请问如何快速入门手机开发? 小生今年大三,学习过C++和Java,感觉就业压力大,想学习下手机开发,不知道应该看什么书,从哪里开始学?请大神给一个学习路线.学到什么程度才能挣高薪,难不难?急死人了 解决方案 1.那要看你走什么方向,现在最流行的两个平台分别为:android(java)和ios(objective-c). 2.书的话可以参考我这篇博客里面移动开发部分的书目.http://blog.csdn.net/chinacsharper/article/details/175149

Xamarin.Android开发实践(十四)

原文:Xamarin.Android开发实践(十四) Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xamarin去实现它,以及如何使用适配器和自定义适配器(本文中的适配器的主要内容就是将原始的数据转换成了能够供列表控件显示的项).   二.简介适配器 在开始之前我们需要先了解下适配器,首先是提供给我们使用的适配器之间的关系: 下面我们将上面的适配器进行简单的介绍: BaseAdapter:顾名思义,就是