首页 > 代码库 > C#开发Android应用-入门(一)

C#开发Android应用-入门(一)

     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. 活动

  2. 服务

  3. 内容提供器

  4. 广播接收器

 1)活动,用来完成单个任务的用户界面组件。指定启动活动:MainLauncher =true

活动:拥有两个基本操作:视图集合、活动类

活动三种状态:

活动:当活动下在设备上运行且位于屏幕前台时

暂停:当另一活动覆盖了当前活动时,此时没有屏幕焦点,但仍在运行

停止:窗口被隐藏了,进行销毁的最佳目标,以释放资源

当状态变化时,通过事件作出适当的响应,有:OnCreate()OnStart()OnRestart()OnResume()OnPause()OnStop()OnDestroy

如:

OnCreate():定义初始化活动,可通过基类ActivitySetContentView()方法来定义第一个视图,可选择各种资源,为控件分配事件处理程序的委托等

OnPause():当离开时,可关闭系统资源。

ButtonImageViewTextView继承于View类,layout是视图组


2)服务,可以运行的工作单元,没有可视化组件。如:邮件应用程序、周期进行更新等 

3)内容提供器,如:MediaStore:设备上的媒体访问、Settings设置,CallLog提供电话打入打出等信息。

ContentResolver:对象处理与内容提供器的交互,充当数据存储的介质。

ContentProvider:定义了可在实现的提供器上执行的所有可能操作。 

4)广播接收器,用于监听事件并作出响应的应用程序组件。与服务相似处,无任何用户界面组件。回调方法OnReceive() 

Android清单,创建一个相互独立但又相互合作的应用程序了.

布局控件:LinearLayout: 对齐,水平或垂直、RelativeLayout相对、TableLayout:相当于表格,TablesRows

案例1-1LinearLayout

<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++); };//添加一个事件

       }


}  


ActivityAndroid程序设计的核心,OnCreate函数是初始化一个资源包(Main),从该视图中获取一个按钮,并为其添加一个事件。



案例1-2TableLayout

 <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>