Xamarin入门笔记(Xamarin已经被MAUI取代)
初级代码游戏的专栏介绍与文章目录-CSDN博客
Xamarin入门
-
概述
-
环境
-
Android开发环境比较简单,自带模拟器,实体机打开开发者模式即可。
iOS开发环境比较复杂,必须搭配Mac电脑,Windows连接Mac开发可能有问题(比如发现选取文件功能无法返回),建议直接使用Mac,项目文件是兼容的。
iOS开发必须有付费开发者账号,免费的只能用免费预配,非常困难,微软都不建议使用。模拟器测试不需要付费开发者账号,但是不能实体机安装意义不大。
Mac上必须安装XCode和XCode命令行工具,不需要额外配置。如果使用Windows开发,Windows可以是虚拟机,但是反应会比较迟缓(即使非VS操作很流畅),微软不建议这样做,16G内存的MBP实测确实如此。
本文是学习微软教程的笔记(Xamarin 入门 - Xamarin | Microsoft Docs)。
本文基于Visual Studio Community 2019 for Mac。
-
-
Xamarin基本功能
-
Xamarin开发使用C#,支持Android、iOS、Windows平台(下一代技术MAUI已经由VS2022preview提供,支持mac应用,开始写作此文时仅可在Windows上开发。MAUI代码大体上兼容Xamarin。)。
支持调用OC、java、C、C++功能。
跨平台代码平均占90%。
Xamarin. Essentials,本机设备功能
Xamarin. Forms,UI框架
-
项目基本结构
-
目录结构
-
目录结构为:
解决方案
项目(共享项目)
项目.iOS
项目.平台
解决方案下分多个项目,无后缀的是共享部分,其余为每个平台的项目。
每个xaml文件都有一个对应的xaml.cs文件,VS将xaml.cs藏在xaml下面,但文件目录里是并列的。Xaml文件描述界面,xaml.cs则是对应的代码。
-
-
项目.iOS
-
main.cs和AppDelegate.cs
-
-
程序从main.cs入口,关键语句:
UIApplication.Main(args, null, typeof(AppDelegate))
此句引用到AppDelegate.cs里定义的类AppDelegate,关键代码:
在FinishedLaunching()里调用
LoadApplication(new App())
此句引用共享项目里定义的App类。
-
-
共享项目
-
AssemblyInfo.cs
-
-
装配信息,程序集级别的项目属性。
-
-
-
App.xaml
-
-
应用程序类,处理应用程序生命周期事件。
关键代码:
MainPage = new AppShell()
此句引入AppShell。
-
-
-
AppShell.xaml
-
-
控制视觉层次。
这里定义了TabBar,包含两个视图页面,cs代码里没有实质内容。NotesPage和AboutPage是自定义的视图页面。
-
-
-
自定义的视图页面
-
-
自定义的视图页面包含了主要的功能。
-
示例代码
-
下载示例
-
从微软教程的“下载示例”链接入手,打开链接找到“Browse code”,点击后进入github页面,这是这个子项目的页面,点击左边第一个tab页“code”,注意这里跳转到了整个教程示例的根目录,再点右侧按钮“code”克隆或下载zip包,得到所有示例代码。
-
-
示例代码目录结构
-
入门教程位于GetStarted目录:
FirstApp,首个应用
Notes,快速入门
Tutorials目录,教程的每个项目
其余目录:
XamlSamples,XAML的综合示例,演示了各种效果,对应《XMAL基础》章节
FormsGallery,控件示例,对应《XAML控件》章节。注意,这个示例似乎有些问题,修改了代码却没有效果。
-
布局
-
StackLayout堆积布局
-
Margin,间距,与相邻元素之间的距离
Padding,填充,与子元素的距离,体现为内部的四边空白
-
界面元素
-
Label标签
-
VerticalOptions:纵向布局
复杂的多格式文本:
FormattedText 属性是 FormattedString 类型,包含一个或多个 Span 实例。
-
-
Button按钮
-