天天看點

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)活動,用來完成單個任務的使用者界面元件。指定啟動活動: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_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:id ="@+id/widget1"

android:layout_width="wrap_content"

></Spinner>

 <TableRow

 <EditText

   android:id

="@+id/widget29"

   android:layout_width="wrap_content"

   android:text

="你好呵"

   android:textSize

="18sp"

/>

   android:text="TableLayoutBut"

 </TableRow>

</TableLayout>