Hello, Android 快速入门
Hello, Android
Android 开发与 Xamarin 简介
在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin.Android 应用程序 并理解使用Xamarin 开发Android 应用程序的基本原理的。在这个系列,我们将介绍有关工具的使用、 Android开发相关的概念、构建和部署 Xamarin.Android 的应用程序所需的步骤。
Hello, Android 快速入门
在本演练中,我们要创建一个将字母和数字转换成电话号码的应用程序,由用户输入包含字母和数字的电话号码,然后将用户输入内容转换为电话号码,并拨打电话。最终的应用程序看起来像这样 ︰

让我们开始吧 !
要求
Xamarin.Android 适用于以下任何设置 ︰
- OS X Yosemite 上最新版本的 Xamarin Studio 及以上
- Windows 7 上最新版本的 Xamarin Studio 及以上。
- Windows 7 和上述 Visual Studio 2012 专业版或更高。
本演练假定 你已经安装了最新版的Xamarin.Android。安装 Xamarin.Android 的指南,请参阅Xamarin.Android 安装指南。在我们开始之前,请下载并解压缩Xamarin 应用程序图标和启动屏幕设置。
配置模拟器
Android 有模拟器的几个选项。标准的 Android 模拟器的设置最简单,但跑得慢。Xamarin 建议你使用高性能Xamarin 安卓高清播放器。如果您不使用 Xamarin 安卓高清播放器,您应该配置仿真程序使用硬件加速。配置硬件加速的说明是在加速 Android 模拟器指南 》 中提供的。
演练
(IOS系统的解说跳过,需要的请浏览官网)
让我们来启动 Visual Studio ︰

单击开始 > 新项目创建一个新的项目 ︰

在新建项目对话框中,单击Visual C# > Android,选择空白的应用程序 (Android)模板。我们将新项目命名为
Phoneword。单击确定以创建新的项目 ︰
创建新项目后,让我们展开解决方案资源管理器下的Resources 文件夹和layout文件夹,然后双击Main.axml文件,这个文件将会在 Android 设计器中打开。这是我们的屏幕的布局文件 ︰

在设计界面选择Hello,World, Click Me! 按下Delete键删除它。在工具箱(右侧的区域)的搜索字段中输入
text并将 Text (Large) 部件拖到设计界面(在中心区域) ︰
修改Text(Large)控件的Text属性为
Enter a Phoneword:如下图所示 ︰

接下来,让我们从工具箱拖一个 Plain Text 部件动到设计界面,并将其放置在Text(Large)控件下面。注意,我们可以使用搜索字段来帮助定位窗体部件的名称 ︰

修改Plain Text控件的
id属性为@+id/PhoneNumberText,text属性更改为1-855-XAMARIN:
从工具箱一个按钮从拖动到设计界面,把它放在纯文本小部件下面 ︰

更改该按钮的
Id属性为@+id/TranslateButton,Text属性更改为Translate:
接下来,从工具箱拖动第二个按钮到Translate按钮下 ︰

在设计界面上选择该按钮,更改它的
Id属性为@+id/CallButton,Text属性更改为Call:按Ctrl+s报存。

现在,让我们添加一些代码来实现将字母和数字翻译为纯数字电话号码的功能。我们会添加新文件到项目,在旁边的解决方案中右键点击Phoneword项目,然后选择添加 > 新文件...:

在添加新项对话框中,选择Visual C# > 代码 将新添加的代码文件进行命名为PhoneTranslator.cs:

我们创建了一个空的 C# 类。将PhoneTranslator.cs的代码替换为下面的代码 ︰
using System.Text;
using System; namespace Core
{
public static class PhonewordTranslator
{
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);
}
// otherwise we've skipped a non-numeric char
}
return newNumber.ToString();
}
static bool Contains (this string keyString, char c)
{
return keyString.IndexOf(c) >= ;
}
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;
}
}
}按CTRL+S保存,然后关闭该文件。确保重新生成解决方案时没有编译时错误。
接下来我们要添加用户界面上的代码。将下面的代码添加到
MainActivity类。在解决方案资源管理器双击MainActivity.cs将其打开 ︰
我们开始处理翻译按钮。在
MainActivity类中,找到OnCreate方法。我们将在OnCreate方法里的最后一行添加代码。删除模板生成的按钮处理代码,按照下面的代码修改OnCreate方法 ︰using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS; namespace Phoneword
{
[Activity (Label = "Phoneword", MainLauncher = true)]
public class MainActivity : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle); // Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main); // Our code will go here
}
}
}接下来,我们需要获取我们在 Android 设计器中添加的那些控件的引用。
在
OnCreate方法中的SetContentView (Resource.Layout.Main);
这句代码后面添加如下代码 ︰// Get our UI controls from the loaded layout:
EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);
Button callButton = FindViewById<Button>(Resource.Id.CallButton);现在让我们添加响应用触摸TranslateButton按钮时的代码。将下面的代码添加到
OnCreate方法 (我们在最后一步中添加的那行后面) ︰// Disable the "Call" button
callButton.Enabled = false; // Add code to translate number
string translatedNumber = string.Empty; translateButton.Click += (object sender, EventArgs e) =>
{
// Translate user's alphanumeric phone number to numeric
translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text);
if (String.IsNullOrWhiteSpace(translatedNumber))
{
callButton.Text = "Call";
callButton.Enabled = false;
}
else
{
callButton.Text = "Call " + translatedNumber;
callButton.Enabled = true;
}
};接下来让我们添加响应用户按Call按钮时的代码。我们将下面的代码 TranslateButton的后面 ︰
callButton.Click += (object sender, EventArgs e) =>
{
// On "Call" button click, try to dial phone number.
var callDialog = new AlertDialog.Builder(this);
callDialog.SetMessage("Call " + translatedNumber + "?");
callDialog.SetNeutralButton("Call", delegate {
// Create intent to dial phone
var callIntent = new Intent(Intent.ActionCall);
callIntent.SetData(Android.Net.Uri.Parse("tel:" + translatedNumber));
StartActivity(callIntent);
});
callDialog.SetNegativeButton("Cancel", delegate { }); // Show the alert dialog to the user and wait for response.
callDialog.Show();
};最后,让我们给我们的应用程序添加拨打电话的权限。我们可以在Android Manifest界面编辑应用程序权限。在解决方案资源管理器中双击Phoneword 下的Properties进入属性页,然后选择Android 清单页面 ︰

添加所需的权限,我们这里只用到了打电话的权限,只勾选CALL_PHONE权限 就可以︰

保存并生成解决方案,我们会在 Visual Studio 的左下角看到一条成功消息 ︰

如果有错误,我们可以通过前面的步骤,改正错误,直到应用程序生成成功。如果你在生成项目时碰到了像 资源在当前上下文中不存在 错误,请确认MainActivity.cs中的命名空间名称与项目名称 (
Phoneword)是否一致,然后重新生成解决方案。如果仍然会生成错误,请验证您已经安装了最新的 Xamarin.Android 更新。我们现在有一个工作应用程序 — — 到了最后的润色的时间 !让我们开始为我们的
MainActivity编辑Label。Label显示在安卓系统屏幕的顶部,目的是为了让用户知道他们现在正在使用哪个应用。在MainActivity类的顶部,更改Label的值为Phone Word就像下面这样 ︰namespace Phoneword
{
[Activity (Label = "Phone Word", MainLauncher = true)]
public class MainActivity : Activity
{
...
}
}接下来,让我们设置的应用程序图标。首先,下载并解压的Xamarin 应用程序图标设置。下一步,打开Resources文件夹下的drawable文件夹删除里面的Icon.png文件:

当显示下面的对话框时,单击确定:

接下来,让我们用鼠标右键单击drawable文件夹并选择添加 > 现有项目...:

从选择我们已经解压缩后的 Xamarin 应用程序图标目录并打开drawable文件夹。选择Icon.png ,并单击添加:

接下来,让我们添加其余的 Xamarin 应用程序图标drawable-* 文件夹到项目里。这些文件夹提供不同分辨率的图标,它可以适应不同设备上的不同分辨率。在文件资源管理器窗口中,定位到解压缩后的 Xamarin 应用程序图标目录并选择drawable-*文件夹 ︰

将这些文件夹拖到 Visual Studio解决方案资源管理器窗格中的资源文件夹中。这些文件夹现在属于您的项目的一部分了,如图 ︰

接下来,让我们在 Android Manifest 中指定应用程序图标,通过从应用程序图标下拉菜单中选择
@drawable/Icon:
最后,我们可以通过将它部署到模拟器来测试我们的应用程序。如果尚未配置仿真程序,请参阅安装说明Xamarin 安卓高清播放器。如果您使用谷歌安卓系统仿真器,请参阅加速 Android 模拟器提高仿真性能的提示。
<译者注>如果按这里的教程不能运行安卓模拟器的话,听我的,别纠结,拿起你的手机,进入开发者,打开usb调试,插上usb 连接到电脑,然后点击启动就可以在真机上调试了。或者使用微软的安卓模拟器。怎么启动微软的安卓模拟器就不讲了。启动后在模拟器的无线=》高级属性中 找出模拟器的ip地址,点击下图中红框的地方 打开Android Adb Command ,运行命令: 【adb connect 192.168.xx.xx(你要连接的模拟器的ip地址)】 端口号可以省略,下面是这个命令的帮助。
connect <host>[:<port>] - connect to a device via TCP/IP
让我们打开 Xamarin 安卓高清播放器设备管理器中,通过单击工具栏中的图标管理虚拟设备 (XAP) :

在 Xamarin 安卓高清播放器设备管理器中,让我们下载、 安装,并启动Nexus 5 (Kitkat) (Android 4.4.2 API 级别 19) 虚拟设备 ︰

我们将我们的应用程序发送到这个模拟器之前,让我们来配置应用程序运行需要的最低 Android 版本,它将在我们选定的虚拟设备上运行。在 Visual Studio 中打开应用程序页的属性。Minimum Android to target:︰选择 API 级别 19 (有关 Android API 级别的详细信息,请参阅了解 Android API 级别).

接下来,让我们点击工具栏上的下拉菜单将我们的应用程序部署到Nexus 5 (Kitkat)设备上如下所示 ︰

在安装和启动我们的应用程序之前,Visual Studio 会将文件复制到此仿真程序。
下面的截图说明Phoneword应用程序已经在 Xamarin Android Player中运行了。Phone Word 标签前面显示的图标就是我们在
MainActivity中配置的图标。单击Translate 按钮,将会更改Call按钮的文本。这时点击Call按钮将会弹出拨打电话的对话框。如下图所示 ︰
祝贺您完成您第一次的 Xamarin.Android 应用程序 !现在到了剖析技术的时候了,我们将在你好,Android 的深入中进行讲解.
800x600
Normal
0
false
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
MicrosoftInternetExplorer4
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Calibri","sans-serif";}
Hello, Android 快速入门的更多相关文章
- Realm for Android快速入门教程
介绍 如果你关注安卓开发的最新趋势,你可能已经听说过Realm.Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库. 相比SQLite,Realm更快并且具有很多现代数据库 ...
- Android快速入门(转自 农民伯伯: http://www.cnblogs.com/over140/)
前言 这是前段时间用于公司Android入门培训的资料,学习Android三周时间收集整理的,时间仓促,希望能对像我这样还没入门就直接上项目的人一点帮助 :) 声明 欢迎转载,但请保留文章原始出处: ...
- Xamarin.Android快速入门
一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid 二.界面 1.打开Resources文件夹-> ...
- android快速入门
1.安装环境(jre java 运行环境,jdk java 开发工具包) 2.android studio 一.快捷键的使用 1. To open any class in the editor q ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- Android开发快速入门(环境配置、Android Studio安装)
Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...
- Android压力测试快速入门教程(图解)——Monkey工具
文章目录: 一.Monkey简介 二.Monkey的基本用法 三.Monkey测试示例图解 四.Monkey命令参数介绍 五.Monkey log分析 一.Monkey简介 Monkey:Androi ...
- c语言快速入门3
如果你想快速入门计算机,可以参考我的上一篇帖子,先了解一些必备的软知识,然后再来进行语言的快速入门 计算机入门基础知识 c语言快速入门1 c语言快速入门2 3.4.1 字符和字符串 字符:'' 单个 ...
- Swift语言快速入门
Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著 ISBN 978-7-121-24328-8 201 ...
随机推荐
- http流请求时,被请求站点HttpContext.Current为null?
我负责运维一个短信接口站点sms.调用上游短信供应商下发短信后,他们会给我们推送发送报告.报告是类似DELIVRD.DI:9432这样的码.为了方便识别,系统里有一个报告码与其描述的关系,一开始是写死 ...
- Bootstrap~多级导航(级联导航)的实现
回到目录 在bootstrap官方来说,导航最多就是两级,两级以上是无法实现的,大叔找了一些第三方的资料,终于找到一个不错的插件,使用上和效果上都还不错,现在和大家分享一下 插件地址:http://v ...
- Atitit 词法分析器的设计最佳实践说明attilax总结
Atitit 词法分析器的设计最佳实践说明attilax总结 1.1. 手写的优点:代码可读,对源代码中的各种错误给出友好的提示信息,用户体验高,1 1.2. 使用状态表比较简单,dfa比较麻烦1 1 ...
- salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
本篇知识参考:https://developer.salesforce.com/trailhead/force_com_dev_intermediate/asynchronous_apex/async ...
- Win7系统.net framework 4.0没有注册导致部署在IIS的站点跑不起来怎么办
win7装了VS再装IIS,结果IIS里面有.NET4.0,但是程序始终是跑不起来,怎么办呢? 分析觉得可能是因为4.0没有注册到IIS,在win7下如果先安装vs2010 (附带会安装Microso ...
- 关于sass的介绍和基本语法
引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...
- LinkedHashMap源码详解
序言 本来是不打算先讲map的,但是随着对set集合的认识,发现如果不先搞懂各种map,是无法理解set的.因为set集合很多的底层就是用map来存储的.比如HashSet就是用HashMap,Lin ...
- Android入门(三)Activity-生命周期与启动模式
原文链接:http://www.orlion.ga/432/ 一.活动的生命周期 1.返回栈 Android中的活动是可以重叠的,我们每启动一个新的活动,就会覆盖在原活动之上,然后点击Back键会销毁 ...
- knockoutjs中使用mapping插件绑定数据列表
使用KO绑定数据列表示例: 1.先申请V,T,T2三个辅助方法,方便调试.声明viewModel和加载数据时的映射条件mapping 2.先使用ko.mapping.fromJS()将原来的 ...
- office快速制作简历
毕业的一年是由学校向社会转变的一年,面临着人生的一个重大转折--找工作.在如今信息爆炸的时代,纵使力拔山兮气盖世也难免会被遗落芳草之中而不得一展宏图.对未来的憧憬,对美好生活的向往,或多或少你需要一份 ...