PLC-IoT 网关开发札记(3):Xamarin Forms 首页跳转的正确姿势

1. 需求

使用 Xamarin.Forms 默认的模板生成卡片式 App 项目后,App 打开的是第一个卡片页。实用中,往往需要 App 启动后呈现一个 Splash,在 Splash 页面的后台完成系统初始化的一些任务,然后自动跳转或者等待用户点击 “立即体验”/“开始使用” 等按钮,App 再呈现具体的内容。

那么如何正确,安全地实现页面跳转呢?

2. 实现

2.1 App.xaml

<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"x:Class="I2oT.App"><!-- Resources used by multiple pages in the application --><Application.Resources><Thickness x:Key="PageMargin">8</Thickness><!-- Colors --><Color x:Key="PrimaryColor">White</Color><Color x:Key="SecondaryColor">White</Color><Color x:Key="TertiaryColor">Silver</Color><Color x:Key="EditableColor">DarkBlue</Color><Color x:Key="DescriptiveTextColor">#505060</Color><Color x:Key="AppPageBackgroundColor">White</Color><Color x:Key="AppPageColor">#1976D2</Color><Color x:Key="AppForegroundColor">White</Color><Color x:Key="AppBackgroundColor">#1976D2</Color><Color x:Key="AppFillBackgroundColor">White</Color><Color x:Key="AppTextCommonColor">#1976D2</Color><Color x:Key="AppTabBarUnselectedColor">#A3FFFFFF</Color><Color x:Key="AppItemSelectedColor">#F0F0F0</Color><Color x:Key="AppItemUnSelectedColor">#3060C0</Color><Color x:Key="AppTipIconColor">Red</Color><Color x:Key="AppPlaceholderColor">Silver</Color><Style x:Key="PropertyCaptionStyle" TargetType="Label"><Setter Property="TextColor" Value="{StaticResource AppTextCommonColor}"/><Setter Property="FontSize" Value="Small"/><Setter Property="VerticalOptions" Value="Center"/><Setter Property="WidthRequest" Value="88"/></Style><Style x:Key="PropertyCommentStyle" TargetType="Label"><Setter Property="TextColor" Value="{StaticResource AppTextCommonColor}"/><Setter Property="FontSize" Value="Caption"/><Setter Property="VerticalOptions" Value="Center"/><Setter Property="HorizontalOptions" Value="End"/><Setter Property="HorizontalTextAlignment" Value="End"/><Setter Property="WidthRequest" Value="32"/></Style><Style x:Key="PropertyIntegerStyle" TargetType="Slider"><Setter Property="BackgroundColor" Value="Transparent"/><Setter Property="ThumbColor" Value="DarkGreen"/><Setter Property="HorizontalOptions" Value="FillAndExpand"/><Setter Property="MinimumTrackColor" Value="DarkGray"/><Setter Property="MaximumTrackColor" Value="DarkRed"/><Setter Property="HeightRequest" Value="32"/></Style></Application.Resources>
</Application>

App.xaml 中没有什么功能性的内容,它只是一个启动器,在 App.xaml 中定义了一堆颜色和样式。当然还可以在这里定义更多的资源,以<Application.Resources>...</Application.Resources>封装起来,作为 Application 全局的资源。

2.2 App.xaml.cs

using System;
using System.IO;
using System.Net.Http;
using I2oT.Data;
using I2oT.Models;
using I2oT.Views;
using Xamarin.Forms;namespace I2oT
{public partial class App : Application{static I2oTDatabase database;static RemoteGateway gateway;// Create the database connection as a singleton.public static I2oTDatabase Database{get{if (database == null){database = new I2oTDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "I2oT.db"));}return database;}}public static RemoteGateway Gateway{get{if(gateway == null){gateway = new RemoteGateway();}return gateway;}}public App(){InitializeComponent();MainPage = new SplashPage();}protected override void OnStart(){}protected override void OnSleep(){}protected override void OnResume(){}}
}

App.xaml.cs 是功能性代码。我的这个例子中,定义了两个静态对象,分别是

  1. 本地数据库 I2oTDatabase,
  2. 物联网网关 RemoteGateway。这两个对象的使用在后续的开发中会陆续提到,这里先不管它。
  3. 在 App 的构造函数中,多了一句话

MainPage = new SplashPage();

就是它!

MainPage 是 Application 的一个属性,指定 MainPage 相当于把 Application 的当前控制权交给新的对象。在这里,SplashPage 是已经定义好的引导页。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/621238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录 Leetcode349. 两个数组的交集

题目&#xff1a; 代码(首刷看解析 2024年1月14日&#xff09;&#xff1a; class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {unordered_set<int> a;unordered_set<int> res;for(int i 0…

Centos7 安装与卸载mysql

卸载 ps ajx | grep mysql &#xff1a; 查看当前服务器是否有mysql 没有的话就不需要卸载咯。 centos7 通过yum下载安装包通常是以.rpm为后缀&#xff0c;rpm -qa 可以查看当前服务器上所有的安装包&#xff1a; rpm -qa | grep mysql | xargs yum -y remove :将查询到的mysql…

AI辅助编程:同义千问挑战力扣

大家好我是在看&#xff0c;记录普通人学习探索AI之路。 今天我们来聊一聊如何使用AI进行辅助编程。 ChatGPT对于各行各业都带来了工作效率的提升&#xff0c;尤其是程序员这一行。因为ChatGPT可以帮助程序员来生成各种各样的程序代码。 我们先来看一个简单的例子&#xff0c…

多行SQL转成单行SQL

如下图所示 将以上多行SQL转成单行SQL 正则表达式如下 (?s)$[^a-zA-Z()0-9]*结果如下 灵活使用,也未必只能使用Sublime Text

js null和undefined的区别

null和undefined在JavaScript中都表示“无”的概念&#xff0c;但它们在使用和含义上有一些重要的区别。 含义&#xff1a; null 是一个表示“无”的对象&#xff0c;当转换为数值时结果为0。 undefined 是一个表示“缺少值”的原始值&#xff0c;当转换为数值时结果为NaN。…

用java写个redis工具类

下面是一个简单的Redis工具类的示例&#xff0c;使用Java语言编写&#xff1a; import redis.clients.jedis.Jedis;public class RedisUtils {private static Jedis jedis;public static void connect(String host, int port) {jedis new Jedis(host, port);}public static v…

python爬虫01-爬虫介绍

目录 1、爬虫是什么 2、爬虫有什么用 3、爬虫的步骤 4、网页的渲染方式 1、爬虫是什么 爬虫就是写一段代码运行去模仿人访问网站。可以代替人们自动的在互联网进行数据采集和整理。 2、爬虫有什么用 数据采集&#xff1a;爬虫可以自动访问网页并抓取其中的数据&#xff0…

基于卡尔曼滤波的视频跟踪,基于卡尔曼滤波的运动小球跟踪

目录 完整代码和数据下载链接&#xff1a;基于卡尔曼滤波的视频跟踪&#xff0c;基于卡尔曼滤波的运动小球跟踪&#xff08;代码完整&#xff0c;数据齐全&#xff09;资源-CSDN文库 https://download.csdn.net/download/abc991835105/88738577 卡尔曼滤波原理 RBF的定义 RBF理…

ajax+axios——统一设置请求头参数——添加请求头入参——基础积累

最近在写后台管理系统&#xff08;我怎么一直都只写管理系统啊啊啊啊啊啊啊&#xff09;&#xff0c;遇到一个需求&#xff0c;就是要在原有系统的基础上&#xff0c;添加一个仓库的切换&#xff0c;并且需要把选中仓库对应的id以请求头参数的形式传递到每一个接口当中。。。 …

4.【CPP】入门(初始化列表||explicit||static||友元||静态成员变量/函数)

一.初始化列表 1.引入 我们知道在c11中才能在成员对象声明时初始化&#xff0c;像下面这样。 class Date { public: Date(int year, int month, int day): _year(year), _month(month), _day(day) {} private: int _year2000; int _month12; int _day20; };注意&#xff1a;…

Redis:原理速成+项目实战——Redis实战9(秒杀优化)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战8&#xff08;基于Redis的分布式锁及优化&#xff09; &#x1f4da;订阅专栏&…

浅谈一谈pytorch中模型的几种保存方式、以及如何从中止的地方继续开始训练;

一、本文总共介绍3中pytorch模型的保存方式&#xff1a;1.保存整个模型&#xff1b;2.只保存模型参数&#xff1b;3.保存模型参数、优化器、学习率、epoch和其它的所有命令行相关参数以方便从上次中止训练的地方重新启动训练过程。 1.保存整个模型。这种保存方式最简单&#x…

xtu oj 1354 Digit String

题目描述 小明获得了一些密码的片段&#xff0c;包含0∼9,A∼F 这些字符&#xff0c;他猜这些是某个进制下的一个整数的数码串。 小明想知道从2到16进制中&#xff0c;哪些进制下&#xff0c;这个数码串的对应的十进制整数值&#xff0c;等于n? 输入 存在不超过1000个样例&…

C#,史密斯数(Smith Number)的计算方法与源代码

一、关于史密斯数的传说 1、关于理海大学Lehigh University 理海大学&#xff08;Lehigh University&#xff09;&#xff0c;位于宾夕法尼亚州&#xff08;Pennsylvania&#xff09;伯利恒&#xff08;Bethlehem&#xff09;&#xff0c;由富有爱国情怀与民族精神的实业家艾萨…

Java SE入门及基础(12)

do-while 循环 1. 语法 do { //循环操作 } while ( 循环条件 ); 2. 执行流程图 3. 案例 从控制台录入学生的成绩并计算总成绩&#xff0c;输入0 时退出 4. 代码实现 public static void main ( String [] args ) { Scanner sc new Scanner ( System . in )…

SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解

SqlAlchemy使用教程(一) 原理与环境搭建SqlAlchemy使用教程(二) 入门示例及编程步骤 三、使用Core API访问与操作数据库 Sqlalchemy 的Core部分集成了DB API, 事务管理&#xff0c;schema描述等功能&#xff0c;ORM构筑于其上。本章介绍创建 Engine对象&#xff0c;使用基本的…

使用lodash原地起飞,总结了几个常用的lodash方法

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 什么是lodash lodash的按需引入 数组操作 求交集 求合集 求差集 求总和…

如何使用C++编程使得在Windows和Linux输入密码的时候保密 linux:tcgetattr tcsetattr

在C编程中&#xff0c;在执行一些操作的时候&#xff0c;终端需要接收用户名和密码&#xff0c;那么在终端输入密码的时候&#xff0c;如何不让别人看见自己的密码&#xff0c;是一个较为关注的问题&#xff1b; 1、问题分析 定义一个登录函数Login //用户登录主循环bool Lo…

Android蓝牙协议栈fluoride(十一) - 音乐播放(4)

上一篇介绍了蓝牙音频的播放通路和编解码器&#xff0c;接下来介绍Source和Sink如何选择编解码器以及编解码流程。 编解码器选择 连接蓝牙后想要播放音乐&#xff0c;需要协商使用哪种编码器&#xff0c;还需要协商编码器使用什么配置&#xff0c;前面介绍了如何协商编码器的…