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,然后在其中写入如下代码(这些代码的重要功能是将字符串转换成正确格式的电话号码):
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 ;
else if ("DEF".Contains(c))
return ;
else if ("GHI".Contains(c))
return ;
else if ("JKL".Contains(c))
return ;
else if ("MNO".Contains(c))
return ;
else if ("PQRS".Contains(c))
return ;
else if ("TUV".Contains(c))
return ;
else if ("WXYZ".Contains(c))
return ;
return null;
}
}
}
然后我们打开MainActivity.cs文件:

2.然后我们首先要做的是通过FindViewById获取这些控件,OnCreate中代码如下所示(需要先成功生成一次,防止Resource.Id下没有对应的控件id):
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
Button callButton = FindViewById<Button>(Resource.Id.CallButton); callButton.Enabled = false;
3.然后我们需要给translateButton绑定监听事件,判断输入的字符是否为有效的电话号码,如果是则启用CallButton否则不启用,同时还修改CallButton的文字(在上面代码后面追加):
string translatedNumber = string.Empty;
translateButton.Click += (object sender, EventArgs e) =>
{
translatedNumber = PhoneTranslator.ToNumber(phoneNumberText.Text);
if (String.IsNullOrWhiteSpace(translatedNumber))
{
callButton.Text = "Call";
callButton.Enabled = false;
}
else
{
callButton.Text = "Call" + translatedNumber;
callButton.Enabled = true;
}
};
4.最后我们需要绑定callButton的监听事件,以便能够在用户点击后弹出对话框确认用户是否需要拨打,并拨打电话(依然是接着上面的追加):
callButton.Click += (s, e) =>
{
//对话框
var callDialog = new AlertDialog.Builder(this); //对话框内容
callDialog.SetMessage("Call" + translatedNumber + "?"); //拨打按钮
callDialog.SetNeutralButton("Call", delegate
{
//使用意图拨打电话
var callIntent = new Intent(Intent.ActionCall); //将需要拨打的电话设置为意图的参数
callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber)); StartActivity(callIntent);
}); //取消按钮
callDialog.SetNegativeButton("Cancel", delegate { }); //显示对话框
callDialog.Show();
};
四、运行
还需要添加对应的权限



笔者这里采用的是x86下的模拟机,并不是ARM下,关于如何开启x86下的模拟机需要的人可以留言(需要你的CPU支持VT-X),当然速度跟你的真机一样。
Xamarin.Android快速入门的更多相关文章
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- Hello, Android 快速入门
Hello, Android Android 开发与 Xamarin 简介 在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解
原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...
- [译]:Xamarin.Android开发入门——Hello,Android深入理解
返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen快速上手
原文链接:Hello, Android Multiscreen Quickstart. 译文链接:Hello,Android Multiscreen快速上手 本部分介绍利用Xamarin.Androi ...
- Realm for Android快速入门教程
介绍 如果你关注安卓开发的最新趋势,你可能已经听说过Realm.Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库. 相比SQLite,Realm更快并且具有很多现代数据库 ...
- Android快速入门(转自 农民伯伯: http://www.cnblogs.com/over140/)
前言 这是前段时间用于公司Android入门培训的资料,学习Android三周时间收集整理的,时间仓促,希望能对像我这样还没入门就直接上项目的人一点帮助 :) 声明 欢迎转载,但请保留文章原始出处: ...
- Xamarin.Forms快速入门-深入探讨
官网链接 项目介绍 以Notes项目为例,The Notes application consists of one solution containing four projects, as sho ...
- android快速入门
1.安装环境(jre java 运行环境,jdk java 开发工具包) 2.android studio 一.快捷键的使用 1. To open any class in the editor q ...
随机推荐
- JAVA回调机制(CallBack)详解
序言 最近学习java,接触到了回调机制(CallBack).初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义.当然了,我在理解了回 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(80)-自由桌面
系列目录 前言 这次我们来做一个有趣的事情,有朋友跟做了很远,找我要自由桌面的代码,这次我们将演示自由桌面的代码. 自由桌面:用户可以随意增删改桌面的布局.个数(只留自己需要看到的数据),这次纯属Ea ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(68)-微信公众平台开发- 资源环境准备
系列目录 前言: 本次将学习扩展企业微信公众号功能,微信公众号也是企业流量及品牌推广的主要途径,所谓工欲善其事必先利其器,调试微信必须把程序发布外网环境,导致调试速度太慢,太麻烦! 我们需要准备妥当才 ...
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
- Nested Loops join时显示no join predicate原因分析以及解决办法
本文出处:http://www.cnblogs.com/wy123/p/6238844.html 最近遇到一个存储过程在某些特殊的情况下,效率极其低效, 至于底下到什么程度我现在都没有一个确切的数据, ...
- iosselect:一个js picker项目,在H5中实现IOS的select下拉框效果
具体文档和demo可以访问github:https://github.com/zhoushengmufc/iosselect 移动端浏览器对于select的展示样式是不一致的,ios下是类似原生的pi ...
- ESLint的使用笔记
原文地址:https://csspod.com/getting-started-with-eslint/?utm_source=tuicool&utm_medium=referral 在团队协 ...
- 软件工程(C编码实践篇)学习心得
孟繁琛 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 软件工程 ...
- [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别
1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...
- SQLSERVER中NULL位图的作用
SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...