Xamarin 是由早期的Mono项目演变而来,原本是在Linux上执行C#程序的一个开放原始码项目。后来陆续发表支持iOS的Mono Touch framework以及Mono For Android Framework。因此它在市场上并不是一个新的产品。2011年,原本在Novell的Mono项目团队独立成立一家公司,正式将名称改为Xamarin。
透过 C#亲和且功能齐全的语言特性,搭配.NET Framework 的 Base Class Library(BCL)的便利性,让开发人员能以最高的生产力开发行动装置应用程序。目前 Mono 支持 C# 5.0 的语言规范,开发人员可以用Lambda Expression、LINQ 甚至是 Async/Await 的异步处理。
Xamarin Studio是一个用C#语言开发跨平台应用的集成开发环境,它和iOS以及Android SDK紧密整合。
Xamarin还提供了for vs2010 vs2012的插件,这个是比较吸引人的地方。该插件可以很好地与微软的生态系统集成,可以在Mac OS机器的仿真器上进行远程调试和测试。在Mac OS上,因为iOS的现有限制,面向iOS的C#代码会通过AOT编译技术直接编译为ARM汇编代码。而在Android上,应用程序会转换为IL,启动时再进行JIT编译。
安装好Xamarin插件后,就可以自已熟悉的C#的语言开发Androd应用了,注册用户后就可免费学习、试用了,试用期满后,可重新注册用户继续学习试用。
Android应用程序的行为与交互更像是一组相关联的子应用程序,而不是一个严格意义上的单一实体。由多个核心组件关联而成,根据需要调用和实例化这些组件,这些组件之间独立工作,分四类组件:
- 活动
- 服务
- 内容提供器
- 广播接收器
1)活动,用来完成单个任务的用户界面组件。指定启动活动:MainLauncher
=true
活动:拥有两个基本操作:视图集合、活动类
活动三种状态:
活动:当活动下在设备上运行且位于屏幕前台时
暂停:当另一活动覆盖了当前活动时,此时没有屏幕焦点,但仍在运行
停止:窗口被隐藏了,进行销毁的最佳目标,以释放资源
当状态变化时,通过事件作出适当的响应,有:OnCreate()、OnStart()、OnRestart()、OnResume()、OnPause()、OnStop()及OnDestroy
如:
OnCreate():定义初始化活动,可通过基类Activity的SetContentView()方法来定义第一个视图,可选择各种资源,为控件分配事件处理程序的委托等
OnPause():当离开时,可关闭系统资源。
Button、ImageView、TextView继承于View类,layout是视图组
2)服务,可以运行的工作单元,没有可视化组件。如:邮件应用程序、周期进行更新等
3)内容提供器,如:MediaStore:设备上的媒体访问、Settings设置,CallLog提供电话打入打出等信息。
ContentResolver:对象处理与内容提供器的交互,充当数据存储的介质。
ContentProvider:定义了可在实现的提供器上执行的所有可能操作。
4)广播接收器,用于监听事件并作出响应的应用程序组件。与服务相似处,无任何用户界面组件。回调方法OnReceive()
Android清单,创建一个相互独立但又相互合作的应用程序了.
布局控件:LinearLayout: 对齐,水平或垂直、RelativeLayout相对、TableLayout:相当于表格,TablesRows
案例1-1:LinearLayout
<LinearLayoutxmlns: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"
/>
<Spinner
android:id ="@+id/widget27"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
>
</Spinner>
</LinearLayout>
Orientation可改为水位方向:horizontal,此时调整前面的宽度为android:layout_width="200px"
主要代码为:
publicclassActivity1
:Activity
{
int
count = 1;
protectedoverridevoid
OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);//初始化一个资源包
Button
button = FindViewById<Button>(Resource.Id.MyButton);//获取一个按钮
button.Click +=
delegate { button.Text =string.Format("{0}
clicks!", count++); };//添加一个事件
}
}
Activity是Android程序设计的核心,OnCreate函数是初始化一个资源包(Main),从该视图中获取一个按钮,并为其添加一个事件。
案例1-2:TableLayout
<TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Spinner
android:id ="@+id/widget1"
android:layout_width="wrap_content"
android:layout_height ="wrap_content"
></Spinner>
<TableRow
>
<EditText
android:id
="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text
="你好呵"
android:textSize
="18sp"
/>
<Button
android:id="@+id/MyButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TableLayoutBut"
/>
</TableRow>
</TableLayout>
C#开发Android应用-入门(一)