一,HelloWorld
这个阶段主要完成目标:Xamarin价格收费标准考察和分析。Xamarin.Android 部署安装。第一个Xamarin.Android工程HelloWorld,熟悉Android工程新建、运行、打包整个流程。第二个Xamarin.Android工程,一个手机拨号应用;完成对Xamarin.android 开发的基本了解。
阶段结论:Xamarin.android 支持Android基本开发。
注意事项:Xamarin.android 所打包比原生系统所打包 大3.02M
1.1 新建一个solution
1.2 运行工程
1.3 导出应用程序
1.3.1 选择工程
选中HelloWorld工程,在Tabbar栏,project–>Publish Android Application
1.3.2 填写签名证书
1.3.3 选择存放位置以及文件名,点击Create生成一个安装包
1.4 代码结构介绍
1.5 Xamarin Studio 介绍
二,手机拨号应用
2.1 整体界面效果
2.2 应用实现以及涉及知识点:
2.2.1 axml 界面布局使用
与Android 在eclipse中开发类似:允许使用界面布局选择器Toolbox将布局控件拖拽到页面上。也允许在Source中进行代码实现。
2.2.2 组件获取
Button mBtnCall = FindViewById<Button> (Resource.Id.CallButton);
|
2.2.3 添加事件
mBtnCall.Click += (object sender, EventArgs e) =>{};
|
2.2.4 对话框
var callDialog = new AlertDialog.Builder(this);
callDialog.SetMessage("Call " + translatedNumber + "?");
callDialog.SetNeutralButton("Call", delegate {
// do other thing
});
callDialog.SetNegativeButton("Cancel", delegate { });
// Show the alert dialog to the user and wait for response.
callDialog.Show();
|
2.2.5 页面跳转
var intent = new Intent(this, typeof(CallHistoryActivity));
intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
StartActivity(intent);
|
2.2.6 打印输出
Console.WriteLine ("Test Output Str");
|
2.2.7 新建类
右键工程,选择Add 可以新建以下类文件
三,附上主要代码类:
using System.Text;
using System;
namespace PhoneCallDemo
{
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;
}
}
}
|
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using System.Collections.Generic;
namespace PhoneCallDemo
{
[Activity (Label = "PhoneCall", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
static readonly List<string> phoneNumbers = new List<string>();
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
EditText mEditPhoneNum = FindViewById<EditText> (Resource.Id.PhoneNumberText);
Button mBtnCall = FindViewById<Button> (Resource.Id.CallButton);
Button mBtnTrans = FindViewById<Button> (Resource.Id.TranslateButton);
Button mBtnCallHistory = FindViewById<Button> (Resource.Id.callhistoryButton);
mBtnCall.Enabled = false;
mBtnCallHistory.Enabled = false;
string translatedNumber = string.Empty;
mBtnTrans.Click += (object sender, EventArgs e) => {
translatedNumber = PhoneCallDemo.PhonewordTranslator.ToNumber(mEditPhoneNum.Text);
if (String.IsNullOrWhiteSpace(translatedNumber))
{
mBtnCall.Text="Call";
mBtnCall.Enabled = false;
}else
{
mBtnCall.Text = "Call " + translatedNumber;
mBtnCall.Enabled = true;
}
};
mBtnCall.Click += (object sender, EventArgs e) => {
var callDialog = new AlertDialog.Builder(this);
callDialog.SetMessage("Call " + translatedNumber + "?");
callDialog.SetNeutralButton("Call", delegate {
phoneNumbers.Add(translatedNumber);
mBtnCallHistory.Enabled = true;
// 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();
};
mBtnCallHistory.Click += (sender, e) =>
{
var intent = new Intent(this, typeof(CallHistoryActivity));
intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
StartActivity(intent);
};
}
}
}
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace PhoneCallDemo
{
[Activity (Label = "CallHistoryActivity")]
public class CallHistoryActivity : ListActivity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Create your application here
var phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers") ?? new string[0];
this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);
}
}
}
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/PhoneNumberText"
android:hint="TEL:123456" />
<Button
android:id="@+id/TranslateButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/text_translate" />
<Button
android:text="Call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/CallButton" />
<Button
android:text="@string/CallHistory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/callhistoryButton" />
</LinearLayout>
|
下一个阶段:Xamarin.IOS 部署开发
分享到:
相关推荐
Xamarin.Android入门文档是面向开发者的一份指南,旨在引导开发者如何开始使用Xamarin.Android进行应用开发。Xamarin.Android是微软公司提供的一个跨平台解决方案的一部分,允许开发者使用C#语言编写原生Android应用...
Xamarin.Forms是微软开发的一个开源UI工具包,它允许开发者用XAML和C#编写代码来创建和部署原生用户界面布局,这些布局可以在iOS、Android、Windows Phone和通用Windows平台(UWP)上运行。 教程中首先介绍了...
总的来说,Xamarin.Android不仅提供了一个强大的框架来使用.NET创建Android应用,而且在文档中提供了丰富的资源,帮助开发人员从入门到高级应用开发,再到安全和性能优化,最终成功地将应用部署到市场。
### 开始使用 Xamarin.Android 开发 Android 应用 #### Xamarin.Android 概述 Xamarin.Android 是一个基于 .NET 的框架,允许开发者使用 C# 语言和 .NET Framework 构建高性能、原生的 Android 应用。它为开发者...
### Xamarin.Mac官方中文文档知识点概览 #### 一、Xamarin.Mac概述 ...通过以上概览,可以看出Xamarin.Mac官方中文文档涵盖了从入门到精通所需的所有重要知识点,无论是初学者还是经验丰富的开发者都能从中获益匪浅。
在移动应用开发中,Xamarin是一个强大的跨平台框架,它允许开发者使用C#语言构建原生的Android、iOS和Windows应用程序。本示例主要讲解如何在Xamarin.Android项目中调用Web API,实现数据的增删改查功能,并通过...
首先,进行Xamarin.Android入门设置和安装是开发者必须经历的第一步。文档中详细介绍了如何在Windows环境下安装Xamarin,以及安装Android SDK的步骤。安装完成后,开发者需要设置Android仿真器,包括开启硬件加速以...
### Xamarin Essentials:高效开发Android与iOS应用 Xamarin Essentials是一本专注于使用Xamarin平台进行跨平台移动应用开发的专业书籍。本书作者为Mark Reynolds,由Packt Publishing出版。 #### Xamarin简介 ...
xamarin android中使用gps定位获取经纬度,入门的简单介绍:http://blog.csdn.net/kebi007/article/details/74936979
通过学习Xamarin.Android入门设置和安装,开发者将能够搭建一个适合开发Android应用的环境,从而开始他们的Xamarin之旅。这个过程涉及到安装Xamarin工具链,配置开发环境,以及掌握一系列的开发概念和技能,最终能够...
在移动应用开发领域,Xamarin 是一款非常流行的跨平台框架,它允许开发者使用 C# 语言和 .NET 库来创建原生的 Android、iOS 和 macOS 应用。本篇文章将详细探讨 Xamarin 中的 Toolbar,这是一个重要的界面组件,用于...
- **Hello, Xamarin.Forms**:通过创建简单的“Hello World”项目来熟悉 Xamarin.Forms 的开发流程。 #### 三、Xamarin.Forms 快速入门与深度分析 - **快速入门**:涵盖创建项目的步骤,以及如何使用基础控件如 `...
在移动应用开发领域,Xamarin.Forms 是一个强大的跨平台框架,允许开发者使用 C# 和 .NET 库构建原生 iOS、Android 和 UWP 应用。Firebase 是 Google 提供的一套全面的后端服务,包括数据库、身份验证、消息推送等,...
我希望将来将其移植到以便开发人员可以轻松地将这些功能添加到其应用程序中。 可用平台 平台 版本 安卓 MonoAndroid 10.0+ 的iOS Xamarin.iOS10 .NET标准 2.1 入门 安卓 在Android项目的MainLauncher或启动的...
**Xamarin.Forms**是一个跨平台UI工具包,它使开发者能够构建一次性的代码库并有效地为iOS、Android及通用Windows平台创建本机用户界面。该教程通过一系列章节介绍了Xamarin.Forms的基础知识及其在多平台、多屏幕...
Xamarin 是一个强大的跨平台移动应用开发框架,它允许开发者使用C#语言和.NET框架来构建原生的iOS、Android和Windows应用。本试读资料专注于Xamarin在iOS开发中的应用,通过上册的前两章内容,我们将深入探讨Xamarin...
Xamarin Android入门开发指南API调用文档详细介绍了如何使用Xamarin进行Android开发,其中涉及了从基础设置到高级功能的各个方面。 首先,Xamarin Android开发环境的搭建包括在Windows系统上安装必要的软件和工具。...