BKJIA外電頭條】和Android平台行動裝置 App程式非常類似,Windows Phone 7WP7)應用程式也是用託管語言編寫的,Android使用Java,Windows Phone 7使用C#,各自都提供了豐富的開發庫,Java和C#之間的許多差異都與樣式有關,它們都和C/C++有著千絲萬縷的聯絡,因此它倆也有很多相似之處。
.NET/Windows Phone 7和Java/Android Api之間雖有很多不同點,但兩者的相似點讓你在移植應用程式時不需要費太大的力氣。
平台差異
在深入瞭解轉換或建立Windows Phone 7應用程式相關的工具和過程之前,我們先簡單介紹一下Windows Phone 7和Android各自使用的術語和技術。Windows Phone 7第一個重大的不同點是,應用程式是用C#編寫的託管.NET程式集,平台支援兩種類型的應用程式:Silverlight和XNA遊戲。
大多數Windows Phone 7應用程式都是用Silverlight建立的,通過常見的控制項,如標籤、文字框和列表等,提供典型的基於表單的使用者互動,Android Layout和Activity與Silverlight中的Page類似。
Windows Phone 7還支援XNA,它允許使用者建立2D和3D遊戲,它們分別等同於Android SurfaceView和GLSurfaceView的2D和3D模式,但和Android不同的是,XNA遊戲使用的是Direct3D,因此更容易將PC和Xbox 360遊戲移植到手機上,而Android使用的是OpenGL。
頁面Page)和導航Navigation)
Silverlight Page實際上是一個XML檔案,它和Android Layout類似,XML定義一個Page時是使用XAML可擴充應用程式標記語言)建立的,XAML和Android Layout類似,但它支援更多的功能,XAML允許開發人員在Page內執行操作,包括Animations和Data Binding等,從此不再需要為這些功能編寫代碼。
Android Layout和Activity是松耦合的,你需要自己編寫代碼,以便和Activity內的UI元素串連起來,對給定的Page來說,C#代碼是和它捆綁到一起的,因此不需要編寫UI附屬元素,平台會自動為對象建立相關的“線路”,為Page和UI建立相關的事件,這樣可以預防在Task onCreate方法中經常出現的混亂。
這兩個平台另一個重要的不同之處是導航,在Android中,你可以通過建立一個Intent從一個任務切換到另一個任務,它和Windows Phone 7中的Navigation功能相同,Navigation允許你在Page之間移動,和Android Intent類似,你可以向你要導航的Page傳遞資料,Windows Phone 7中的Page和ASP.NET中的Page有某些屬性是相似的。
將Layout轉換成Page
在深入瞭解代碼之前,我們先來看看Android Layout XML如何向Windows Phone 7 XAML Page轉換,在Windows Phone 7免費工具箱中,最耀眼的莫過於XAML設計工具,Visual Studio® 2010中的XAML設計器只適合初級開發人員,它只能對Page做一些基本的控制,Expression Blend®則是專業化的工具,需要改造UI時,你應該使用它,和Android Layout一樣,你也可以使用文字編輯器直接編輯XAML檔案,因為實際上它是一個XML檔案。
Windows Phone 7 Page提供了Android Layout類似的布局能力,下表列出了它支援的布局屬性和Android對應的屬性。
布局控制項
| Windows Phone 7 |
Android |
| Canvas |
AbsoluteLayout |
| Grid |
GridView |
| ScrollView |
ScrollView |
| StackPanel |
LinearLayout |
正如你所看到的,Windows Phone 7提供了和Android幾乎相同的布局能力,下表列出了Windows Phone 7的基本控制項和Android的同等控制項。
基本控制項
| Windows Phone 7 |
Android |
| TextBlock |
TextView |
| TextBox |
EditText |
| Button |
Button |
| CheckBox |
CheckBox |
| RadioButton |
RadioButton |
| Image |
ImageView |
| ProgressBar |
ProgressBar |
| ListBox |
ListView |
| Map |
MapView |
| WebBrowser |
WebView |
你應該注意到Windows Phone 7的基本控制項和Layout類型能夠一一對應,但也有些特殊的Layout和控制項無法對應起來,其原因在於XAML的強大,通過XAML,我們可以在一個控制項中嵌入另一個控制項,這意味著你不用建立複雜的控制項,這一切都可以在你的應用程式中建立和自訂。