系列目录

1、【Xamarin.Forms 1】App的创建与运行

引言

本篇文章将介绍Xamarin.FormsApp 基础知识和 App的启动。

开发环境

  1. Visual Studio 2019 16.6.2
  2. Xamarin.Forms 4.6.0.726
  3. Android 5.0 (API 级别21 - Lollipop)以上

本文主要内容

一、项目总的结构组成

在我们创建了HelloXamarinApp项目时,IDE会默认创建3个项目:HelloXamarinAppHelloXamarinApp.AndroidHelloXamarinApp.iOS

  • HelloXamarinApp 为功能的项目,主要包括界面的布局、信息等公共的内容。
  • HelloXamarinApp.Android Android项目的入口,用来生成Apk文件的项目工程。
  • HelloXamarinApp.iOS iOS项目的入口,用来生成iOS App文件的项目工程。

二、Android项目的目录结构

  • AndroidManifest.xml:Android清单,用于描述功能和需求
  • Resource:Android资源文件夹,用于存放图片,布局,样式,颜色,等等内容;
  • MainActivity.cs:主活动界面,Xamarin.Forms公共库中写的页面等都在这个界面上显示;

三、AndroidManifest.xml

  • AndroidManifest.xml功能非常强大,用于描述App的功能和需求,如支持的sdk最低版本,目标版本、App安装后显示的名称、App使用的相关手机权限等。
  • 在IDE中,可以通过在Android项目属性中的Android清单选项中可以图形化进行维护。
  • 一般情况我们只需了解Android清单选项中的内容即可。

选择Android项目,右键->属性:可以看到清单内容

四、Resource

1、drawablemipmap

  • drawable:推荐用于存放图片、xml等资源文件;
  • mipmap:推荐存放App图标文件,
  • mdpi hdpi xhdpi xxhdpi xxxhdpi:分别存放不同分辨率的图片,Android系统会根据手机分辨率去选择不同分辨率文件夹下的图片。
    • mdpi:HVGA(320*480)
    • hdpi:WVGA(480800),FWVGA(480854)
    • xhdpi:720P(1280*720)
    • xxhdpi:1080P(1920*1080)
    • xxxhdpi:4K(3840-2160)

2、layout

用于描述用户界面布局,在Android原生开发中,所有的界面都是放在这里的。

3、values

  • values包含用于存储简单值的xml文件,如:

    • style.xml:存放样式列表,App中的样式都可以放在此文件中。确保App的全局样式保持一致
    • colors.xml:存放颜色列表,App各种颜色,包括项目的主题颜色等,都可以在此文件中进行定义
    • strings.xml:存放字符串列表(默认是未创建此文件),需要时可以自行添加

五、MainActivity.cs

项目启动时一些初始化工作都可以在此文件中。

  1. MainActivity继承自FormsAppCompatActivity,它是XF在Android平台下提供的基类,封装了框架初始化等方法;
  2. 通过base.OnCreate、Forms.Init、LoadApplication三个步骤,将XF框架初始化,并加载App类;
  3. App类主要有以下功能:
  • MainPage:指定App启动页面;
  • Properties:跨生命周期的属性字典;
  • Current:一个代表当前应用的静态属性。

六、iOS项目

iOS项目的入口文件在Main.cs中,并在此文件中的Main函数中调用AppDelegate类。

AppDelegate类中的函数FinishedLaunching中会进行一些初始化并启动App。

七、HelloXamarinApp

如果你使用wpf开发过项目,一定会很熟悉这种项目结构目录。

看一下App.xaml.cs文件的内容:



【说明:】

  1. MainPage用于指定启动界面,这里指定的是MainPage.xaml界面;
  2. Properties属性字典用于存储数据,可以在程序中任意位置赋值,任意位置取值;
  3. Current代表当前App,它是一个静态变量,可以在程序任意位置调用;
  4. 在程序其他位置获取当前App的方式:Application.Current。

生命周期

App的生命周期在这里看的很清楚:

OnStart:App启动时调用;

OnSleep:App转到后台时调用;

OnResume:App从后台恢复时调用。

参考文章:

1、https://www.jianshu.com/p/306a6616fdd5

2、https://www.jianshu.com/p/85e3f0a41e57

【Xamarin.Forms 2】App基础知识与App启动的更多相关文章

  1. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

  2. Appium自动化测试教程-自学网-app基础知识

    Instrumentation的缺点是不支持跨应用,比如我想要先调起通讯录,在操作其他的app,则不支持. 第一步,应该确定系统哪些模块适合自动化.哪些不适合做自动化,明确做自动化给我们带来的好处是什 ...

  3. C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码

    前言 什么是Xamarin? Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单. Xamarin的产品简化了针对多种平台的应用开发,包括iOS.Android.Windows P ...

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

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

  5. 【Xamarin.Forms 3】页面类型

    系列目录 微信 1.[Xamarin.Forms 1]App的创建与运行 2.[Xamarin.Forms 2]App基础知识与App启动 知乎 1.[Xamarin.Forms 1]App的创建与运 ...

  6. 使用MvvmCross框架实现Xamarin.Forms的汉堡菜单布局

    注:本文是英文写的,偷懒自动翻译过来了,原文地址:Implementing MasterDetail layout in Xamarin.Forms by MvvmCross 欢迎大家关注我的公众号: ...

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

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

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

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

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

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

随机推荐

  1. Java实现 LeetCode 355 设计推特

    355. 设计推特 设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文.你的设计需要支持以下的几个功能: postTwee ...

  2. Java实现最近点问题

    **问题描述:** 给定某空间中(直线空间或平面空间)n个点,请找出它们中的最近点对.你需要完成下列任务: 1.随机产生或手工输入n个点的坐标. 2.输出最近的两个点的坐标. 3.算法尽可能效率高. ...

  3. 第四届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.猜灯谜 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字 ...

  4. Java GUI 键盘事件

    import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField; import java.awt.event. ...

  5. Java实现花朵数

    一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水 ...

  6. throws,throw,try,catch,finally 分别代表什么 意义?

    Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口. 在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例.当一个方法出现异常后便 抛出一个异 ...

  7. c++ vector基本函数、排序、查找用法

    vector用法目录: 1.基本用法 2.vector的删除操作 3.vector的sort排序 4.翻转vector中的所有元素 5.find()函数的用法 6.vector实战(这里写的是我在最开 ...

  8. 面试官:线程池如何按照core、max、queue的执行循序去执行?(内附详细解析)

    前言 这是一个真实的面试题. 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core.max.queue的执行循序去执行?". 我们都知道线程池中代码执行顺 ...

  9. 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 程序员‍‍的上下文是什么? 很多时候一大部分编程开发的人员都只是关注于功能的实现,只 ...

  10. platform驱动架构初探

    platform总线是Linux2.6引入的虚拟总线,这类总线没有对应的硬件结构.与之相反,USB总线和PCI总线在内核中是有对应的bus(USB-bus和PCI-bus)的.为了统一管理CPU这些既 ...