Xamarin.Forms移动开发系列3:项目剖析
摘要 本文主要进行Xamarin.Forms应用程序剖析。
前言
本文介绍Xamarin.Forms应用程序剖析。
由于本系列重点研究对象为Xamarin.Forms,所以对Xamarin.Android、Xamarin.iOS项目只是初步剖析。
开发环境
1.Visual Studio 2019 16.0.2
2.Xamarin.Forms 3.6.0.344457
项目结构
一个解决方案包含三个项目,如下图所示:
App1:此项目为.NET Standard库项目,其中包含所有的共享代码和共享UI。
App1.Android:此项目包含Android特定代码,是Android程序的入口点。
App1.iOS:此项目包含iOS特定代码,是iOS程序入口点。
Xamarin.Forms
此处所说的Xamarin.Forms是指.NET Standard库项目的内容:
● App.xaml:XAML标记文件,定义应用程序的资源字典。
● App.xaml.cs:App.xaml的Code-Behind文件,负责实例化每个平台的首页,并处理应用程序生命周期。
● MainPage.xaml:首页的XAML标记文件,定义首页UI。
● MainPage.xaml.cs:首页的Code-Behind文件,控制用户与首页UI交互时执行的业务逻辑。
Application类
App类继承自Xamarin.Forms.Application类,是Xamarin.Forms的起始点。
Application类主要提供以下功能:
● MainPage属性:用于设置APP的初始页面。
● Properties属性:用于跨生命周期存储简单值的Dictionary<string,object>。
● Current属性:对当前Application对象的引用。
● OnStart方法:应用程序启动时调用。
● OnSleep方法:应用程序转到后台时调用。
● OnResume方法:应用程序从后台恢复时调用。
public partial class App : Application
{
public App()
{
//初始化App.xaml
InitializeComponent();
//设置初始页面 即:MainPage.xaml
MainPage = new MainPage();
}
/// <summary>
/// 应用程序启动时调用
/// </summary>
protected override void OnStart() { }
/// <summary>
/// 应用程序转到后台时调用
/// </summary>
protected override void OnSleep()
{
//用Properties字典存储值
Application.Current.Properties["msg"] = "Hello Properties";
}
/// <summary>
/// 应用程序从后台恢复时调用。
/// </summary>
protected override void OnResume()
{
//从Properties字典读取值
if (Application.Current.Properties.ContainsKey("msg"))
{
var msg = Application.Current.Properties["id"] as string; //msg is "Hello Properties"
}
}
}
提示:Properties字典只能序列化基元类型用于存储,存储其他类型可能会在无提示的情况下失败。
Xamarin.Android
主要包含:
1.AndroidManifest.xml:Android清单文件,该文件描述了对 Xamarin.Android 应用程序的所有要求(包括名称、版本号和权限)。
该文件可以手动修改xml文件代码,也可以通过右键Android项目=》属性=》Android清单来修改。
2.Assets:包含应用程序运行需要的文件(包括字体、本地数据文件和文本文件)。
3.Resources:包含应用程序资源,例如图片、颜色、样式和布局。
● drawable - 存放不同分辨率的图像资源。
● mipmap - 存放不同分辨率的启动图标。
● layout - 存放Android设计器文件(.axml),再Android原生开发中,用于存放界面。
● values - 存放用于存储简单值得xml文件。
● Resource.designer.cs - 存放每个资源的唯一ID,它由 Xamarin.Android 工具自动创建,并在必要时重新生成。不应手动编辑此文件,因为 Xamarin.Android 将覆盖对其进行的任何手动更改。
4.MainActivity.cs
Android程序入口,好比C#的Program.cs中的Main函数。
Xamarin.iOS
主要包含:
1.Asset Catalogs:资源目录,存放图片、图标等资源。
2.Resources:存储其他媒体的资源文件夹。
3.LaunchScreen.storyboard:包含应用程序界面的可视化设计,只能在iOS Designer图形编辑器中打开。
4.Entitlements.plist:指定应用程序功能。
5.Info.plist:设置应用程序属性,如程序名称,图标,启动图片等。
6.Main.cs:应用程序主入口点,传入主应用程序类AppDelegate来启动程序。
7.AppDeletegate.cs:此文件包含主应用程序类,负责创建窗口、构建用户界面和从操作系统侦听事件。
欢迎添加个人微信号:Like若所思。
欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!
Xamarin.Forms移动开发系列3:项目剖析的更多相关文章
- Xamarin.Forms移动开发系列5 :XAML标记扩展
摘要 本文主要讲述Xamarin.Forms中XAML的标记扩展. 前言 在Xamarin.Forms移动开发系列4 :XAML基础一文中提到过XAML标记扩展,本文将对标记扩展进行更深入的了解. 大 ...
- Xamarin.Forms移动开发系列1:介绍和安装
摘要 Xamarin成立于2011年5月16日.Xamarin 是一套基于C#语言的跨平台移动应用开发工具,2016年2月24日被微软正式收购. 前言 很早就已经听说强大的.NET生态中有一个移动开发 ...
- Xamarin.Forms移动开发系列4 :XAML基础
摘要 本文介绍Xamarin.Forms创建用户界面的语言:XAML基础部分. 前言 本文介绍Xamarin.Forms定义用户界面的语言:XAML. 本篇篇幅较长,主要讲述XAML语法,以及对其他基 ...
- Xamarin.Forms移动开发系列2:创建和调试
摘要 本文将介绍如何通过VS2019创建Xamarin.Forms应用程序,以及如何进行调试. 前言 本文介绍Xamarin.Froms应用程序的创建和调试. 开发环境 1.Visual Studio ...
- Xamarin.Forms教程开发的Xcode的下载安装
Xamarin.Forms教程开发的Xcode的下载安装 Xamarin.Forms教程开发的Xcode的下载安装,Xcode是开发iOS应用程序的图形化开发工具.本节将讲解Xamarin.Forms ...
- Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具
开发Xamarin.Forms应用程序需要的工具 Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具,2014年5月8日在发布的Xamrin 3中引进了Xamarin.Fo ...
- Xamarin.Forms跨平台开发入门-第二部分:深入解析
英文原文: https://developer.xamarin.com/guides/xamarin-forms/getting-started/hello-xamarin-forms/deepdiv ...
- 使用Xamarin.Forms跨平台开发入门 Hello,Xamarin.Forms 第一部分 快速入门
本文介绍了如何使用VisualStudio开发Xamarin.Forms 应用程序和使用Xamarin.Forms开发应用的基础知识,包括了构建和发布Xamarin.Forms应用的工具,概念和步骤. ...
- Xamarin.Forms 移动开发
Xamarin 提供两种原生app开发技术:1. Xamarin Native, 包括 Xamarin.Android, Xamarin.iOS, Xamarin.Mac 2. Xamarin 跨平台 ...
随机推荐
- Spring Cloud和Spring Boot的版本问题
很多人在使用springboot和springcloud,但是对于这两者之间的版本关系不是很清楚,特别是在面临升级的时候不知道该如何操作.本文简要摘录的官方文档的部分内容作为依据,供广大同行参考. 问 ...
- 队列和 BFS —— 栈和 DFS
队列和 BFS: 广度优先搜索(BFS)的一个常见应用是找出从根结点到目标结点的最短路径. 示例 这里我们提供一个示例来说明如何使用 BFS 来找出根结点 A 和目标结点 G 之间的最短路径. 洞悉 ...
- 第八周论文学习03 An Efficient Tree-based Power Saving Scheme for Wireless Sensor Networks with Mobile Sink
来源:IEEE Sensors Journal Year: 2016, Volume: 16, Issue: 20 Pages: 7545 - 7557, DOI: 10.1109/JSEN.2016 ...
- select下拉框option的样式修改
select原样式: 进行样式修改后的样式: 附上修改代码: //select外面必须包裹一个div,用来覆盖select原有的样式<div class="option"&g ...
- VS2017新建项目的模板之配置
也不知道之前装VS2017的时候,做了什么操作,新建一个WinForm项目,自动记住了我当时新建的窗体的大小816*639(默认的300*300),现在每次新建窗体都这个大小,忍了一段时间,实在忍无可 ...
- Docker(Linux)学习笔记以及Redis/MariaDB的容器使用后台全自动启动
1:Docker安装,由于Docker后续pull镜像的服务器默认是在国外的,速度实在是太慢,这里使用阿里云的镜像 阿里云的Docker CE 镜像源站进行安装 docker ===========U ...
- Python - MySQL - mysql-connector -第二十四天
序言 搭建MySQL环境MySQL Server. 请参考:https://blog.csdn.net/m0_37788308/article/details/79965378 或者 https:// ...
- python3 用户名和密码三次错误
一.需求 1)密码输错超过三次进行锁定: 2)如果用户名在锁定文件中提示错误: 二.流程图 三.代码 # Aduthor:CCIP-Ma import sys f=open("passwor ...
- C++优先队列例子
#pragma GCC optimize(3) #include <bits/stdc++.h> #define N 105 using namespace std; struct Nod ...
- 前端开发JS——数组
25.数组 1)声明数组: ①构造函数创建数组 var arr = new Array(); console.log(arr): //[] var arr = new Array(2 ...