摘要 本文主要进行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:项目剖析的更多相关文章

  1. Xamarin.Forms移动开发系列5 :XAML标记扩展

    摘要 本文主要讲述Xamarin.Forms中XAML的标记扩展. 前言 在Xamarin.Forms移动开发系列4 :XAML基础一文中提到过XAML标记扩展,本文将对标记扩展进行更深入的了解. 大 ...

  2. Xamarin.Forms移动开发系列1:介绍和安装

    摘要 Xamarin成立于2011年5月16日.Xamarin 是一套基于C#语言的跨平台移动应用开发工具,2016年2月24日被微软正式收购. 前言 很早就已经听说强大的.NET生态中有一个移动开发 ...

  3. Xamarin.Forms移动开发系列4 :XAML基础

    摘要 本文介绍Xamarin.Forms创建用户界面的语言:XAML基础部分. 前言 本文介绍Xamarin.Forms定义用户界面的语言:XAML. 本篇篇幅较长,主要讲述XAML语法,以及对其他基 ...

  4. Xamarin.Forms移动开发系列2:创建和调试

    摘要 本文将介绍如何通过VS2019创建Xamarin.Forms应用程序,以及如何进行调试. 前言 本文介绍Xamarin.Froms应用程序的创建和调试. 开发环境 1.Visual Studio ...

  5. Xamarin.Forms教程开发的Xcode的下载安装

    Xamarin.Forms教程开发的Xcode的下载安装 Xamarin.Forms教程开发的Xcode的下载安装,Xcode是开发iOS应用程序的图形化开发工具.本节将讲解Xamarin.Forms ...

  6. Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具

    开发Xamarin.Forms应用程序需要的工具 Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具,2014年5月8日在发布的Xamrin 3中引进了Xamarin.Fo ...

  7. Xamarin.Forms跨平台开发入门-第二部分:深入解析

    英文原文: https://developer.xamarin.com/guides/xamarin-forms/getting-started/hello-xamarin-forms/deepdiv ...

  8. 使用Xamarin.Forms跨平台开发入门 Hello,Xamarin.Forms 第一部分 快速入门

    本文介绍了如何使用VisualStudio开发Xamarin.Forms 应用程序和使用Xamarin.Forms开发应用的基础知识,包括了构建和发布Xamarin.Forms应用的工具,概念和步骤. ...

  9. Xamarin.Forms 移动开发

    Xamarin 提供两种原生app开发技术:1. Xamarin Native, 包括 Xamarin.Android, Xamarin.iOS, Xamarin.Mac 2. Xamarin 跨平台 ...

随机推荐

  1. lanyu 激活idea

    编辑 C:\Windows\System32\drivers\etc\hosts 文件,最后面加入下面两行 0.0.0.0 account.jetbrains.com 0.0.0.0 www.jetb ...

  2. 在net Core3.1上基于winform实现依赖注入实例

    目录 在net Core3.1上基于winform实现依赖注入实例 1.背景 2.依赖注入 2.1依赖注入是什么? 2.1依赖注入的目的 2.2依赖注入带来的好处 2.2.1生命周期的控制 2.2.2 ...

  3. pytorch——auto-encoders

    自动编码器的训练方法: (1)Loss function for binary inputs (2)Loss function for real-valued inputs

  4. 使用selenium爬虫抓取数据

    写在前面 本来这篇文章该几个月前写的,后来忙着忙着就给忘记了.ps:事多有时候反倒会耽误事.几个月前,记得群里一朋友说想用selenium去爬数据,关于爬数据,一般是模拟访问某些固定网站,将自己关注的 ...

  5. java、JavaScript获取微信用户信息登录优化方案

    1.获取微信用户信息要调用微信的好几个接口,再加上自己系统的接口就会变的很慢,影响用户体验,之前走过的弯路我就不赘述了,直接说新的方案. 2.第一步都是向微信发起获取用户code请求: 请求接口:ht ...

  6. 尽解powershell的workflow

    尽解powershell的workflow -------1[简介]--------- Microsoft .NET Framework 4.0 发布于2010年4月左右..net4 的新特性,是并行 ...

  7. C# - VS2019 WinFrm程序调用ZXing.NET实现条码、二维码和带有Logo的二维码的识别

    前言 C# WinFrm程序调用ZXing.NET实现条码.二维码和带有Logo的二维码的识别. ZXing.NET导入 GitHub开源库 ZXing.NET开源库githib下载地址:https: ...

  8. 一款对Postman支持较好的接口文档生成工具

    最近要编写接口文档给测试和前端看,通过网上查阅资料,也认识了很多款接口文档生成工具,比如易文档.ApiPost.ShowDoc.YApi.EoLinker.DOClever.apizza等,通过对这几 ...

  9. IOS开发实战-Xcode创建HelloWorld项目

    一.创建工程打开Xcode开发工具,在Welcome界面选择”Create a new Xcode project”选项 在选择模板窗口,选择”Single View Application” 确定模 ...

  10. PHP 数组函数大全

    PHP数组函数是核心的一部分.无需安装即可使用这些函数 函数名称 描述 array_change_key_case 将数组中的所有键名修改为全大写或小写 array_chunk 将一个数组分割成多个 ...