哈哈哈~~我最近在寫的Xamarin.Forms工程終于到了收尾階段了蹄衷,主體功能都實(shí)現(xiàn)了逮矛,修復(fù)一些小Bug以及添加些小功能就算完成了窑滞,太高興了毡证,心里滿滿的成就感共螺,特別是安卓端界面完整呈現(xiàn)的時(shí)候。今天講點(diǎn)知識(shí)點(diǎn)情竹,搭建一個(gè)小程序藐不。
認(rèn)識(shí)Xamarin.forms的工程結(jié)構(gòu)##
我們先撇開安卓和iOS,先來了解公共部分秦效。我們繼續(xù)看我們上期寫的HelloWorld程序
Snip20160811_28.png
先看這一塊雏蛮,項(xiàng)目剛開始時(shí)就存在這些文件,我們來逐一看一下這些文件都是干嘛用的阱州,以及里面放些什么文件挑秉。
估計(jì)有人會(huì)問我,為什么我的是中文版苔货,其實(shí)我可以告訴你我也不知道犀概,具體地說我的是中英文混合版立哑,
Snip20160811_29.png
不閑扯了,還是回到剛才所說的姻灶,
- 引用:這個(gè)我目前還沒用到過铛绰,具體內(nèi)容我不清楚,等我弄明白再回來補(bǔ)上吧(todo)
- 包:這個(gè)是導(dǎo)入一些庫(kù)产喉,就像iOS工程里有時(shí)候需要導(dǎo)入一些framework一樣捂掰。
- Properties:這個(gè)我也不清楚(todo)
- App.xaml:這個(gè)文件比較重要,是程序的入口曾沈,和iOS 里 AppDelegate這個(gè)文件的功能有些類似这嚣,所以定義初始界面就在這里面。
- HelloWorldPage:這個(gè)文件和Xcode生成Single APP是生成的啟動(dòng)界面一樣塞俱,默認(rèn)第一個(gè)界面姐帚,刪除不影響的。這里我們點(diǎn)開前面的小三角會(huì)發(fā)現(xiàn)這里面其實(shí)有兩個(gè)文件:HelloWordPage.xaml和HelloWordPage.xaml.cs障涯,這里我說明一下卧土,HelloWordPage.xaml相當(dāng)于view,不涉及業(yè)務(wù)邏輯像樊,只處理一些控件的顯示和所要展示內(nèi)容數(shù)據(jù)的綁定,相當(dāng)于iOS里面的View旅敷。而HelloWordPage.xaml.cs里面正常情況下是寫業(yè)務(wù)邏輯的生棍,它和iOS里的ViewController很像,所以在這里面其實(shí)也是可以寫界面的媳谁。不過代碼規(guī)范正常情況下是不允許這么做的涂滴,但特殊情況可以理解。這兩個(gè)文件是相關(guān)聯(lián)的晴音,綁定在一起柔纵。前段時(shí)間我把幾個(gè)文件導(dǎo)入到其他工程,結(jié)果他們的關(guān)系就不存在了锤躁,我目前還不知道怎么讓獨(dú)立的兩個(gè)文件綁定在一起搁料。
-
packages:這個(gè)是包文件版本文件,工程內(nèi)所有導(dǎo)入的包信息都可以在這里面看到系羞,所以上傳至git時(shí)不需要把包都上傳郭计,只需要把這個(gè)文件導(dǎo)入就可以了。
好了椒振,說了這么多我們來練一下手昭伸,按照自己的理解寫個(gè)小小的應(yīng)用程序。
優(yōu)化版HelloWorld##
創(chuàng)建文件###
Snip20160811_30.png
Snip20160811_31.png
看到這個(gè)界面可能你會(huì)覺得無從下手澎迎,不要慌庐杨,我們先和他們握個(gè)手选调,認(rèn)識(shí)一下
- Forms ContentPage: 這里有個(gè)訣竅,看到Page灵份,咱們就可以把它看成ViewController仁堪,這樣就好理解了,F(xiàn)orms ContentPage就是創(chuàng)建一個(gè)Forms ContentPage.cs文件各吨,也就是用純C#代碼寫界面枝笨。
- Forms ContentPage Xaml:一般情況用這個(gè),他會(huì)創(chuàng)建一個(gè)ContentPage.xaml文件和ContentPage.xaml.cs文件揭蜒,
- Forms ContentView:這個(gè)是生成用純C#代碼在定義View的文件
- Forms ContentView Xaml:這個(gè)和之前的類似横浑,不用說你也應(yīng)該能猜到。
Snip20160811_32.png
這里我們新建一個(gè)MyHelloWorld文件,讓我們?cè)诶锩鎸扅c(diǎn)東西
Snip20160811_33.png
我把里面的代碼貼出來吧
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="HelloWorld.MyHelloWorld">
<ContentPage.Content>
<StackLayout VerticalOptions = "FillAndExpand"
HorizontalOptions = "FillAndExpand">
<Label Text = "Hello My World!"
TextColor ="Red"
FontSize = "25"
VerticalOptions = "CenterAndExpand"
HorizontalOptions = "CenterAndExpand"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
然后我們?cè)贏PP文件配置一下
Snip20160811_34.png
這樣運(yùn)行就可以了
Snip20160811_35.png
這里我只是做個(gè)演示屉更,代碼我就不詳細(xì)講解了徙融,后期我會(huì)逐漸深入的整理。
結(jié)語##
進(jìn)度有點(diǎn)慢瑰谜,一個(gè)星期才一篇欺冀,這是我深入理解后的結(jié)果。不過還是希望大神們能給點(diǎn)指點(diǎn)萨脑,Xamarin的路還很遙遠(yuǎn)隐轩。文章中一些見解是我個(gè)人理解,如有錯(cuò)誤之處渤早,還請(qǐng)給予指正职车,謝謝。