C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.)
系列目录
源码地址: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说难,其实也不难,说简单,其实你需要了解的东西还是挺多的.
希望开源出来的项目模版能帮到大家..
最后,真诚的感谢大家对本系列的支持.
我的博客即将同步至腾讯云+社区,邀请大家一同入驻。
C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.)的更多相关文章
- [转载]iOS开发:获取设备信息
开发iOS平台的应用的时候,可以获取iOS设备的设备信息,包括设备的名称,设备的机型,设备的iOS版本等等.设备信息主要来自 UIDevice 类. UIDevice *currentDevice = ...
- BootStrap常用组件及响应式开发
BootStrap常用组件 PS:所有的代码必须写在<class="container/container-fluid">容器当中 常用组件包含内容: 字体图标 下拉菜 ...
- Android 开发 获取设备信息与App信息
设备信息 设备ID(DeviceId) 获取办法 android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager ...
- 从零開始开发Android版2048 (二)获取手势信息
今天是尝试開始Android版2048小游戏的第二天.在今天,我主要学习了怎样获取用户在屏幕滑动的手势,以及对布局进行了一些小小的完好. 获取用户操作的手势(比方向左滑.向右滑等)主要用到了Gestu ...
- 开源一个JAVA开发的分类信息源码
最近有空用JAVA折腾的一个分类广告源码. 开发放言:JAVA 框架:SpringMVC Hibernate 分布式用重量级EJB 3.0 实现,可以分布JBOSS部署. 前端用 JSP JQUERY ...
- C# 使用Xamarin开发Android应用程序
C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) 摘要: 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://gi ...
- Xamarin.Forms 移动开发
Xamarin 提供两种原生app开发技术:1. Xamarin Native, 包括 Xamarin.Android, Xamarin.iOS, Xamarin.Mac 2. Xamarin 跨平台 ...
- C#使用Xamarin开发移动应用 ---- 系列文章
C#使用Xamarin开发移动应用 C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练, ...
- 作为一个web开发人员,哪些技术细节是在发布站点前你需要考虑到的
前日在cnblogs上看到一遍文章<每个程序员都必读的12篇文章>,其中大多数是E文的. 先译其中一篇web相关的”每个程序员必知之WEB开发”. 原文: http://programme ...
随机推荐
- Android 分包 MultiDex 策略总结
1.分包背景 我们在Android开发中,会不断的在App代码里面增加新功能,引入新的类库,如果不加控制的话,那么会碰到编辑器IDE爆出一下错误: Error:Execution failed for ...
- java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载
java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载 实现功能:zip文件上传,后台自动解压,Jstree树目录(遍历文件),editor.md预览 采用Spring+Sp ...
- await和async更多的理解
最近有不少网友提起await和async,呵呵,C# 5引进的语法糖. 这个语法糖还真不好吃,能绕倒一堆初学的朋友,在网上也有很多网友关于这块知识点的争论,有对有错,今天在这里把这个误区好好讲讲. 在 ...
- python 带小数点时间格式化
#获取带小数点的时间>>> import datetime #当前时间加3天 >>> t1 = datetime.datetime.now() + datetime ...
- .13-Vue源码之patch(3)(终于完事)
怎么感觉遥遥无期了呀~这个源码,跑不完了. 这个系列写的不好,仅作为一个记录,善始善终,反正也没人看,写着玩吧! 接着上一节的cbs,这个对象在初始化应该只会调用create模块数组方法,简单回顾一下 ...
- app.get is not a function解决方案
在express4.x中app.js被申明为一个模块,而不是一个主程序入口,在文件的最后暴露出了这个模块,如下所示 app.js module.exports = app; 但是我们在routes目录 ...
- sklearn中各算法类的fit,fit_transform和transform函数
在使用PCA和NFC中有三个函数fit,fit_transform,transform区分不清各自的功能.通过测试,勉强了解各自的不同,在这里做一些笔记. 1.fit_transform是fit和tr ...
- IdentityServer4 指定角色授权(Authorize(Roles="admin"))
1. 业务场景 IdentityServer4 授权配置Client中的AllowedScopes,设置的是具体的 API 站点名字,也就是使用方设置的ApiName,示例代码: //授权中心配置 n ...
- 【转载】XSS学习笔记
XSS的分类 非持久型 非持久型XSS也称反射型XSS.具体原理就是当用户提交一段代码的时候,服务端会马上返回页面的执行结果.那么当攻击者让被攻击者提交一个伪装好的带有恶意代码的链接时,服务端也会立刻 ...
- JAVAscript学习笔记 jsBOM 第七节 (原创) 参考js使用表
<html> <head> <title>day02_js</title> <script type="text/javascript& ...