开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
使用 Xamarin 开发 Android 应用 - 技术翻译 - 开源中国社区

使用 Xamarin 开发 Android 应用 【已翻译100%】

oschina 推荐于 4年前 (共 7 段, 翻译完成于 01-17) 评论 24
收藏  
43
推荐标签: Xamarin Android 待读
参与翻译 (1人) : petert 仅中文 | 中英文对照 | 仅英文 | 打印此文章

过去几个月里,我开发了一款应用,这不仅仅是我的个人作品更是服务于我目前雇主Telefonica的客户,借此来提高客户的满意度。

刚开始需求很简单,就是采集数据并发送到邮件。但将应用从window sphone移植到android对于我来说就很有挑战了。

我明白要上手android开发要花时间,我也找了很多能让我更快上手的资料。之前我也知道Xamarin,而且也有一年期限的andriod使用权(可能以后还要搞ios)

petert
 翻译得不错哦!

一些windows phone开发的同道中人可能会开始不满了。先别着急,我能理解。我当然也会一如既往的热爱Windows Phone开发,它也是我的首选。但从个人发展的角度-这是个很好的机会,它能让我在工作当中提高我的开发技能。这是个很好的开始

回到主题。

在这篇博文发布的同时,我已经开了一个新版块介绍利用Xamarin框架开发andrioid应用。使用框架的好处使我能用C#去开发其它平台的应用,这能大大降低开发的难度。

petert
 翻译得不错哦!

如果直接转去做另一个平台的开发,你需要了解平台的架构,如若不然,你可能很快就迷失了方向。每个平台都有自己的界面设置规则,保存机制等等。这些我会在后续的博文中说明。

需要移植的windows phone应用中有个Pivot对象,我就直接把它放到android里。虽然外观有点区别,当功能类似,都是通过触摸header或是滑动界面来查看各个子项。

如何实现这个功能,我得先好好研究一下android-以后我会贴出来跟大家分享

主要内容如下:

  • Xamarin安装使用初步(本文)

  • 设置Android调试部署机

  • 资源(界面,字符串,等)

  • 活动和视图

  • 安卓应用状态

  • 切片

  • 隐藏显示安卓键盘

  • 焦点控制

  • 使用SQLite数据库保存数据

  • 使用Intents发送邮件或保存日历项

  • 从通讯录中获取联系方式

  • List集合和适配器

  • 创建SplashScreen

  • 更多… (我会同步更新内容列表链接)

petert
 翻译得不错哦!

安装Xamarin

装Xamarin很简单-不过需要花些时间。从这里下载IDE。安装中会询问你的开发平台(这里就选安卓)然后会下载很多开发包,像是java和Andriod的SDK(安卓是基于java的)

Screenshot (267)

上述截图展示了Xamarin的开始界面。界面左边是最近的工作项目列表,中间是有关Xamarin的新闻,最右边是应用的预览

petert
 翻译得不错哦!

Xamarin开发环境和VS很像,你可以按照自己喜好做很多的设置。点击‘New’ button来生成一个新的项目

Screenshot (270)

Xamarin会自动生成一个.slh文件。新工程下会产生如下代码:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace gettingstarted
{
	[Activity (Label = "gettingstarted", MainLauncher = true)]
	public class MainActivity : Activity
	{
		int count = 1;

		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
			Button button = FindViewById<Button> (Resource.Id.myButton);

			button.Click += delegate {
				button.Text = string.Format ("{0} clicks!", count++);
			};
		}
	}
}

上面这些代码会搭建出一个基本的安卓应用框架。

安卓系统主要通过活动来运行这就好比C#工程中操作生成文件的相关代码。Xamarin在应用启动前会自动生成添加项目名称标签和加载器属性的活动

petert
 翻译得不错哦!

想在应用上显示内容,需要在代码中添加Layout或是创建视图。这正是SetContentView()方法要干的事。如果没有这些,应用会正常启动但没有任何内容显示。在示例代码中,创建了一个带有按钮的视图:

<?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">
    <Button
        android:id="@+id/myButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
</LinearLayout>

这有一个和C#工程不同的地方。这里需要使用FindViewById<T>()方法来查找Button以便设置其可见性。一旦设置好了可见性,就能针对button委派相关事件了.

petert
 翻译得不错哦!

点击按钮后,文本会根据点击的次数做出相应的改变。

想要更深入的理解安卓应用开发框架,我强烈建议阅读相关文档。对我来说,下面这些资源很有帮助:

此外还有很多有用的资源,但对于初学者上面四个足矣。我会在以后的博文中持续更新上述主题的相关资源链接.

对于从Windows Phone平台过来的开发们,StackOverflowXamarin  Android forums会是你们的好帮手.

敬请期待我的下篇博文!

petert
 翻译得不错哦!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
评论(24)
Ctrl/CMD+Enter

这玩意太贵
注意看,你没有办法说清楚这个东西是什么。跨设备的移动应用是一个很诱人的想法,一般情况下都会提供一套Library对iOS、Android这些原生sdk进行封装,这样在这个library之上构建的应用就自然的具有了跨设备的特性。Xamarin的问题就在这里,它只是允许你用C#来开发android、iOS应用仅此而已。(它没有一个跨设备Library仅仅是C#糖果衣?)
好像很贵的
说毛线呢
很早之前就在用Xamarin了, 现在貌似得到了微软的官方支持
需要注意的是,Xamarin的授权是按平台及座席计算的。以商业版为例,如要同时开发Android、iOS及Mac OS应用,则一个开发人员每年需要支付999美元 × 3。
舔微软的屁股长大的。
梦想很美丽,现实很骨感
C#,呵呵
正在做这个开发mono for ios,除了ui层,其它三个平台都可共用(wp,Android,ios)。的确是有点成本的,每年199美刀,还不包括苹果的开发者账号钱。不过话说回来,这个钱可以变相从客户那边收取
这玩意儿太贵,而且也不怎么样,原生开发人员也不想转移,所以没什么前途。
我宁可学一门语言也不会买这个东西,而且c#和java很相似,只需要熟悉的android sdk 和 wp sdk而已,时间问题而已。

引用来自“jonny123”的评论

正在做这个开发mono for ios,除了ui层,其它三个平台都可共用(wp,Android,ios)。的确是有点成本的,每年199美刀,还不包括苹果的开发者账号钱。不过话说回来,这个钱可以变相从客户那边收取

做的这么样?有上线的app么?

引用来自“xjemiya”的评论

引用来自“jonny123”的评论

正在做这个开发mono for ios,除了ui层,其它三个平台都可共用(wp,Android,ios)。的确是有点成本的,每年199美刀,还不包括苹果的开发者账号钱。不过话说回来,这个钱可以变相从客户那边收取

做的这么样?有上线的app么?

github官方App就是用Xamarin开发的,应该不错

引用来自“Raymin”的评论

舔微软的屁股长大的。

请把“股”字改为“眼”

引用来自“fireflyc”的评论

注意看,你没有办法说清楚这个东西是什么。跨设备的移动应用是一个很诱人的想法,一般情况下都会提供一套Library对iOS、Android这些原生sdk进行封装,这样在这个library之上构建的应用就自然的具有了跨设备的特性。Xamarin的问题就在这里,它只是允许你用C#来开发android、iOS应用仅此而已。(它没有一个跨设备Library仅仅是C#糖果衣?)

android平台可以直接导出apk文件,ios平台也可以直接导出可以安装的文件。其实他就是一个编译器,对不同平台进行不同的编译!
貌似不是199刀,而是299刀
不要去喷别人 ,每个你眼中的脑残可能是下一个低调的天才
从核心角度来看,Xamarin能把C#的真泛型编译为本地代码哪是一种技术突破,不要认为这很容易,像C++一样, Java一直都没引入真泛型,虚拟代码带反射能力的真泛型是很难的
卧槽,我宁愿去学一门语言。
顶部