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系统的解说跳过,需要的请浏览官网

  1. 让我们来启动 Visual Studio ︰

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

  3. 在新建项目对话框中,单击Visual C# > Android,选择空白的应用程序 (Android)模板。我们将新项目命名为Phoneword。单击确定以创建新的项目 ︰

  4. 创建新项目后,让我们展开解决方案资源管理器下的Resources 文件夹和layout文件夹,然后双击Main.axml文件,这个文件将会在 Android 设计器中打开。这是我们的屏幕的布局文件 ︰

  5. 在设计界面选择Hello,World, Click Me! 按下Delete键删除它。在工具箱(右侧的区域)的搜索字段中输入text并将 Text (Large) 部件拖到设计界面(在中心区域) ︰

  6. 修改Text(Large)控件的Text属性为Enter a Phoneword:

    如下图所示 ︰

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

  8. 修改Plain Text控件id属性为@+id/PhoneNumberText,text属性更改为1-855-XAMARIN:

  9. 从工具箱一个按钮从拖动到设计界面,把它放在纯文本小部件下面 ︰

  10. 更改该按钮的Id属性为@+id/TranslateButtonText属性更改为Translate:

  11. 接下来,从工具箱拖动第二个按钮到Translate按钮下 ︰

  12. 在设计界面上选择该按钮,更改它的Id属性为@+id/CallButtonText属性更改为Call:

    按Ctrl+s报存。

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

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

  15. 我们创建了一个空的 C# 类。将PhoneTranslator.cs的代码替换为下面的代码 ︰

  16. 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保存,然后关闭该文件。确保重新生成解决方案时没有编译时错误。

  17. 接下来我们要添加用户界面上的代码。将下面的代码添加到MainActivity类。在解决方案资源管理器双击MainActivity.cs将其打开 ︰

  18. 我们开始处理翻译按钮。在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
    }
    }
    }
  19. 接下来,我们需要获取我们在 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);
  20. 现在让我们添加响应用触摸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;
    }
    };
  21. 接下来让我们添加响应用户按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();
    };
  22. 最后,让我们给我们的应用程序添加拨打电话的权限。我们可以在Android Manifest界面编辑应用程序权限。在解决方案资源管理器中双击Phoneword 下的Properties进入属性页,然后选择Android 清单页面 ︰

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

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

    如果有错误,我们可以通过前面的步骤,改正错误,直到应用程序生成成功。如果你在生成项目时碰到了像 资源在当前上下文中不存在 错误,请确认MainActivity.cs中的命名空间名称与项目名称 (Phoneword)是否一致,然后重新生成解决方案。如果仍然会生成错误,请验证您已经安装了最新的 Xamarin.Android 更新。

  24. 我们现在有一个工作应用程序 — — 到了最后的润色的时间 !让我们开始为我们的MainActivity编辑LabelLabel显示在安卓系统屏幕的顶部,目的是为了让用户知道他们现在正在使用哪个应用。MainActivity类的顶部,更改Label的值Phone Word就像下面这样 ︰

    namespace Phoneword
    {
    [Activity (Label = "Phone Word", MainLauncher = true)]
    public class MainActivity : Activity
    {
    ...
    }
    }
  25. 接下来,让我们设置的应用程序图标。首先,下载并解压的Xamarin 应用程序图标设置。下一步,打开Resources文件夹下的drawable文件夹删除里面的Icon.png文件:

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

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

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

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

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

  29. 接下来,让我们在 Android Manifest 中指定应用程序图标,通过从应用程序图标下拉菜单中选择@drawable/Icon :

  30. 最后,我们可以通过将它部署到模拟器来测试我们的应用程序。如果尚未配置仿真程序,请参阅安装说明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 会将文件复制到此仿真程序。

  31. 下面的截图说明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 快速入门的更多相关文章

  1. Realm for Android快速入门教程

    介绍 如果你关注安卓开发的最新趋势,你可能已经听说过Realm.Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库. 相比SQLite,Realm更快并且具有很多现代数据库 ...

  2. Android快速入门(转自 农民伯伯: http://www.cnblogs.com/over140/)

    前言 这是前段时间用于公司Android入门培训的资料,学习Android三周时间收集整理的,时间仓促,希望能对像我这样还没入门就直接上项目的人一点帮助  :) 声明 欢迎转载,但请保留文章原始出处: ...

  3. Xamarin.Android快速入门

    一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid 二.界面 1.打开Resources文件夹-> ...

  4. android快速入门

    1.安装环境(jre  java 运行环境,jdk java 开发工具包) 2.android studio 一.快捷键的使用 1. To open any class in the editor q ...

  5. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  6. Android开发快速入门(环境配置、Android Studio安装)

    Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...

  7. Android压力测试快速入门教程(图解)——Monkey工具

    文章目录: 一.Monkey简介 二.Monkey的基本用法 三.Monkey测试示例图解 四.Monkey命令参数介绍 五.Monkey log分析 一.Monkey简介 Monkey:Androi ...

  8. c语言快速入门3

    如果你想快速入门计算机,可以参考我的上一篇帖子,先了解一些必备的软知识,然后再来进行语言的快速入门 计算机入门基础知识 c语言快速入门1 c语言快速入门2 3.4.1 字符和字符串 字符:'' 单个  ...

  9. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

随机推荐

  1. Ajax跨域访问XML数据的另一种方式——使用YQL查询语句

    XML数据默认是不能在客户端通过Ajax跨域请求读取的,一般的做法是在服务器上写一个简单的代理程序,将远程XML的数据先读到本地服务器,然后客户端再从本地服务器通过Ajax来请求.由于我们不能对数据源 ...

  2. Java-接口练习

    编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法voidprintCapitalLetter():在接口InterfaceB中有个方法void print ...

  3. 锋利的JQuery —— Ajax

    大图猛戳

  4. Android开发学习之路-使用Handler和Message更新UI

    在Android中,在非主线程中更新UI控件是不安全的,app在运行时会直接Crash,所以当我们需要在非主线程中更新UI控件,那么就需要用到Handler和Message来实现 Demo中,使用到一 ...

  5. [Reomting Debug] 巧用VS 的remote debug 功能远程调试程序 经验分享.

    前言: 有时候我们Dev(开发人员)需要debug tester(测试人员)或者customer(客户)的环境,可tester的机器上没有Code,是不是有点着急? 而且是多版本应用且tester 发 ...

  6. Netty权威指南

    Netty权威指南(异步非阻塞通信领域的经典之作,国内首本深入剖析Netty的著作,全面系统讲解原理.实战和源码,带你完美进阶Netty工程师.) 李林锋 著   ISBN 978-7-121-233 ...

  7. github无法访问?试试修改hosts

    github国内无法访问时,可以试试如下修改hosts,亲测有效: 204.232.175.78 http://documentcloud.github.com 207.97.227.239 http ...

  8. 每天一个linux命令(15):tail 命令

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新, ...

  9. Web Workers 的基本信息

    问题:JavaScript 并行性 要将有趣的应用(例如从侧重服务器端的实施)移植到客户端 JavaScript,存在很多制约瓶颈.其中包括浏览器兼容性.静态类型.可访问性和性能.幸运的是,随着浏览器 ...

  10. hibernate(三)基本配置,log4j、JUnit配置

    一.基本配置 1.<property name="hbm2ddl.auto">update</property> 改项配置有4个选项: validate:当 ...