系列目錄
源碼地址:https://github.com/l2999019/DemoApp
可以Star一下,隨意 - -
說點什么..
本系列,終於要終章了..感覺有點小失落
把我最終的成果模版開源出來吧地址如下:
https://github.com/l2999019/Xamarin.FormsDemo_CHN
效果如圖:
基本算是涵蓋了常見APP大部分的功能吧..
WebView,二維碼掃描,開燈,地圖,定位,終端設備的信息
Xamarin在社區中其實有很多比較方便的組件,方便大家直接使用.
而且Xamarin團隊將這些社區組件整理成了一個列表,方便我們查詢.
列表的Github地址如下:
https://github.com/xamarin/XamarinComponents
今天我們主要是以設備信息組件為例子介紹一下如何使用社區組件
首先我們需要查詢到自己需要使用的組件.
因為是英文,而且單詞比較簡單,所以我直接用谷歌翻譯了,表格如下:
我們今天要使用設備信息的組件.,所以直接找到設備信息,然后進入nuget界面,引用.
注意,這里要強調的一點是,當你使用這些組件的時候,一定需要PCL項目加上客戶端項目,都要引用
也就是如圖:
紅框中的三個項目,都需要引用同樣的nuget庫.因為PCL中是接口,各個平台客戶端才是具體實現.
需要仔細看文檔說明,有些插件是需要初始化的,所以需要你在客戶端項目中初始化,比如二維碼插件( ZXing.Net.Mobile)
剩下的代碼就很簡單了,我們先創建一個Page,並添加listView控件如下:
<?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="Xamarin.FormsDemo_CHN.Views.SheBeiInfoPage" Title="設備信息" > <ContentPage.Content> <StackLayout> <ListView x:Name="ItemsListView" > <ListView.ItemTemplate > <DataTemplate > <TextCell Text="{Binding TextName}" Detail="{Binding Name}" DetailColor="#7EC0EE" /> </DataTemplate> </ListView.ItemTemplate> </ListView> <Label Text="Welcome to Xamarin.Forms!" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" /> </StackLayout> </ContentPage.Content> </ContentPage>
然后直接F7,進入后台代碼,編寫代碼如下:
public partial class SheBeiInfoPage : ContentPage { List<dynamic> date = new List<dynamic>(); public SheBeiInfoPage() { InitializeComponent(); AddPhoneInfo(); ItemsListView.ItemsSource = date; } public void AddPhoneInfo() { string model = CrossDeviceInfo.Current.Model; string Version = CrossDeviceInfo.Current.Version; string VersionNumber = CrossDeviceInfo.Current.VersionNumber.ToString(); string Platform = CrossDeviceInfo.Current.Platform.ToString(); date.Add(new { TextName = model, Name = "設備名稱" }); date.Add(new { TextName = Version, Name = "設備版本" }); date.Add(new { TextName = VersionNumber, Name = "設備版本號" }); date.Add(new { TextName = Platform, Name = "設備平台" }); } }
因為封裝的已經很完善了,直接通過靜態類CrossDeviceInfo,就可以獲取相關的設備信息.
tip:最新的版本新增了判斷是否為模擬器的功能,但是nuget好像沒加入,需要使用的話可以從github自行編譯.
本來打算這篇文章講綁定類庫,但是看了一下,網上已經很多這類的文章了,本來操作也比較簡單...我就不過多的嘩眾取寵了.
唯一要解釋的一點,
就是關於綁定了類庫之后,會類名,變量名報錯的問題.
很多文章都是一筆帶過..讓大家修改Metadate.xml更改綁定規則就完事了..
不過我覺得 授人以魚不如授人以漁.
出現這個錯誤的主要原因是:
GAPI這個工具,會將java代碼自動化解析成C#代碼,但是,完美的解析,是不可能的.
所以會出現少量的錯誤信息,需要我們配置這個xml文件來特殊配置這些錯誤的節點.
我們應該用的最多的就是attr這個節點,如下:
<attr path="/api/namespace/object[@cname='GtkWindow']/signal[@name='ActivateDefault']" name="name">DefaultActivated</attr>
我們可以使用它來更改任何現有屬性的值,或將新屬性插入API文件中的任何元素。
<attr>元素有兩個屬性path和name,使用path來標識要更改的元素,並使用name來標識元素上的屬性名稱。
當然,各位如果想更深入的了解這個可以把java變成C#的神奇神器..可以到如下地址查看
http://www.mono-project.com/docs/gui/gtksharp/gapi/
結束了..Xamarin說難,其實也不難,說簡單,其實你需要了解的東西還是挺多的.
希望開源出來的項目模版能幫到大家..
最后,真誠的感謝大家對本系列的支持.
我的博客即將同步至騰訊雲+社區,邀請大家一同入駐。