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

  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) >= 0;
            }
            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;
            }
        }
    }

    按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";}

时间: 2024-10-13 01:33:33

Hello, Android 快速入门的相关文章

【Android快速入门3】布局简介及例子

目前自学到布局部分,下面演示了不同布局的基本训练,涵盖的内容还是不错的,而且简单易懂,分享给大家. 1.LinearLayout流式布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pa

Xamarin.Android快速入门

一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid 二.界面 1.打开Resources文件夹->layout文件夹双击打开Main.axml 2.然后将会出现下面的界面 3.接着我们选择这个Button并删除(按下Delete),并从左边的工具箱中拖拽一个 Text(Large) 控件到该界面中,如下所示: 4.同时还要通过属性窗口修改Text的值: 5.紧接着拖拽一个Plain Text控件到之前的

【Android快速入门1】目录结构及adb命令(以API19为例)

目录结构 src: 存放java代码gen: 存放自动生成文件的. R.java 存放res文件夹下对应资源的idproject.properties: 指定当前工程采用的开发工具包的版本libs: 当前工程所依赖的jar包.assets: 放置一些程序所需要的媒体文件.bin: 工程的编译目录. 存放一些编译时产生的临时文件和当前工程的.apk文件. res(resources): 资源文件. drawable: 存放程序所用的图片. layout: 存放android的布局文件. fragm

【Android快速入门】目录结构及adb命令【附Android拨号器的实现,自作】

目录结构 src: 存放java代码 gen: 存放自动生成文件的. R.java 存放res文件夹下对应资源的id project.properties: 指定当前工程采用的开发工具包的版本 libs: 当前工程所依赖的jar包. assets: 放置一些程序所需要的媒体文件. bin: 工程的编译目录. 存放一些编译时产生的临时文件和当前工程的.apk文件. res(resources): 资源文件. drawable: 存放程序所用的图片. layout: 存放android的布局文件.

Bmob移动后端云服务平台--Android从零开始--(二)android快速入门

Bmob移动后端云服务平台--Android从零开始--(二)android快速入门 上一篇博文我们简单介绍何为Bmob移动后端服务平台,以及其相关功能和优势.本文将利用Bmob快速实现简单例子,进一步了解它的强大之处. 一.准备工作 1.注册Bmob账号 在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后,点击右上角的"注册",在跳转页面填入你的姓名.邮箱.设置密码,确认后到你的邮箱激活Bmob账户,你就可以用Bmob轻松开发应用了. 2.网站后台创

【Android快速入门2】拨号器的实现

拨号器是个很简单的布局,用来做Android的入门最好不过. 本程序给予Android API19编译实现,因此是新版布局.不习惯的请注意. 截图下次我有空补上. 1.Java主程序: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC

Android基础篇之Android快速入门--你必须要知道的基础

Android快速入门 1. 搭建开发环境 >解压压缩文件,得到:①Android SDK   (类似于JDK)② Eclipse  ③ADT >配置两个path环境变量:D:\adt-bundle-windows-x86\sdk\platform-tools:D:\adt-bundle-windows-x86\sdk\tools >配置基本的Eclipse的设置: 调整字体大小,字符集,配置android sdk的位置 >创建模拟器: 2. 创建第一个Android项目: Hel

Android快速入门教程总结帖

从3月份底开始,到5月15号,刚好差不多1个半月,小巫受CSDN学院邀请成为在线讲师,录制了第一门课程,关于Android入门的.从一开始录制这个课程非常困难,不停的NG,毕竟有点感觉一个人对着屏幕说话有点傻愣,如果别人不知道的话,确实以为你疯了,所以小巫花了一个半月的下班晚上时间和周末的时间,紧闭房门,与世隔绝,才勉勉强强把整套课程录制完.由于初期订的的价格也许太高,网上免费教学资源太多,所以这套课程不受欢迎是必然的了.不管怎样,关于学习这件事,方法和思路很重要,经验可以从书或者大牛身上获得,

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https