上节继续,本文将研究splashscreen,也就是程序的启动界面,通常有2二种应用场景:

1、程序太复杂,主界面完成加载需要很长时间,为了优化用户体验,可以先放一个启动图片,缓解用户等待的焦虑。

2、播放启动广告,手机应用上很常见,进入主程序前,强制让用户看一会儿广告。

在tauri中也有二种实现方式:

一、前端与Rust配合

1.1 先调整tauri.config.json

要点在于:将主窗口home隐藏,然后将splashscreen窗口显示,为了简单,这里只显示1个小图片,该图片可放在react的public目录下

这样启动时,就只会显示splashscreen窗口,然后在main.rs中暴露1个方法:

1.2 前端监听DOMContentLoaded事件

前文讲过,如何在js中获取tauri window的引用,这里就用上了,大致思路是主界面的dom加载完成后,调用api把spashscreen关掉,然后显示出主窗口

运行效果:

二、纯Rust代码实现

use tauri::Manager;

fn main() {
tauri::Builder::default()
.setup(|app| {
let splashscreen_window = app.get_window("splashscreen").unwrap();
let main_window = app.get_window("home").unwrap();
// we perform the initialization code on a new task so the app doesn't freeze
tauri::async_runtime::spawn(async move {
// initialize your app here instead of sleeping :)
println!("Initializing...");
//等待5秒后,再显示主窗口
std::thread::sleep(std::time::Duration::from_secs(5));
println!("Done initializing."); // After it's done, close the splashscreen and display the main window
splashscreen_window.close().unwrap();
main_window.show().unwrap();
});
Ok(())
})
.run(tauri::generate_context!())
.expect("failed to run app");
}

效果差不多,只是splashscreen窗口停留多久,一般是根据主窗口加载时间预估,稍稍有那么一点点不精确。

参考文章:

https://tauri.app/v1/guides/features/splashscreen

tauri学习(5)-Splashscreen启动界面的更多相关文章

  1. 开源中国安卓client源代码学习(一) 渐变启动界面

    开源中国安卓client源代码学习(一) 渐变启动界面 准备学习安卓开发, 看到网上有人推荐开源中国安卓client的源代码, 说里面包括了大部分技术, 于是准备好好研究研究. 特开通此系列博客来记录 ...

  2. 写启动界面Splash的正确姿势,解决启动白屏(转)

    原文链接:http://www.jianshu.com/p/cd6ef8d3d74d 从我学习写第一个android项目以来,我都是这样写着启动界面: 在里面做一些事,比如:第一次启动时拷贝数据. 然 ...

  3. Android应用--新浪微博客户端新特性滚动视图和启动界面实现

    新浪微博客户端新特性滚动视图和启动界面实现 2013年8月20日新浪微博客户端开发之启动界面实现 前言: 使用过新浪微博客户端的童鞋都清楚,客户端每一次升级之后第一次启动界面就会有新特性的介绍,用户通 ...

  4. WinForm界面开发之 启动界面

    我们在开发桌面应用程序的时候,由于程序启动比较慢,往往为了提高用户的体验,增加一个闪屏,也就是SplashScreen,好处有:1.让用户看到加载的过程,提高程序的交互响应:2.可以简短展示或者介绍程 ...

  5. Xcode加入应用图标以及启动界面

    寻找了许久的资料,记录下Xcode加入应用图标以及启动界面的学习笔记: 很实用的网址: 1.(苹果官网)Designing for iOS 2.iOS 8 人机交互指南 图标和图片的尺寸參考: 更加具 ...

  6. Android 设置启动界面

    启动界面的意义是为了让后台处理耗时的复杂工作,当工作处理完成后,即可进入主界面.相比让用户等待布局加载完成,使用一张图片作为启动背景,会带来更好的体验. 首先,需要建立一个简单的布局: <?xm ...

  7. 【No.5 Ionic】修改 应用名,icon,启动界面

    修改 应用名 直接 修改 config.xml中的name 修改icon 和 启动界面 在resources目录有个 icon.png  和 splash.png 文件,直接把文件覆盖执行重新生成命令 ...

  8. iOS-APP中添加启动界面

    iOS,非常高兴的又回到了这个领域.纠结的就业之路...找工作的这段时间里,原本以为是iOS的游戏开发,却一直只有后台的offer,到Android,最后正式上班的时候却被告知调到了iOS开发,当然不 ...

  9. Qt带进度条的启动界面(继承QSplashScreen,然后使用定时器)

    通过继承QSplashScreen类,得到CMySplashScreen类,然后在CMySplashScreen中定义QProgressBar变量,该变量以CMySplashScreen为父类,这样就 ...

  10. Android开发(25)--framebyframe帧动画并实现启动界面到主界面的跳转

    Drawable animation可以加载Drawable资源实现帧动画.AnimationDrawable是实现Drawable animations的基本类.推荐用XML文件的方法实现Drawa ...

随机推荐

  1. MySQL保姆级安装教程(附资源包+5分钟极速配置+环境变量调试技巧)

    mysql简介 MySQL 是一种开源关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司于 1995 年开发,现由 Oracle 公司维护.它采用客户端-服务器架构,支持多线程处理和高 ...

  2. golang 接口按需获取资源

    场景 爬虫业务场景,我们需要调用三方接口获取代理ip地址,每个ip地址可以使用的时间有限和价格的,本着不浪费资源,我们在这里做一层封装. 当有其他业务调用我们接口的时候,会拉起定时任务,这个定时任务的 ...

  3. Pytorch 看起来好像没占gpu的样子的原因

    今天好哥们儿赞助的3080到手了,欣喜若狂的装上 然后跑了跑MNIST,看着任务管理器CPU跑100%,GPU跑3%,查了半天解决不了,郁闷了好一会儿.. 后来在https://www.bilibil ...

  4. 在deepin环境下安装qt开发环境和dtk开发环境

    环境 deepinV20.2.2 第一步 进入系统,进入/etc/apt目录 以管理员身份打开(为了编辑源) 第二步 编辑源sources.list 放出第二行源保存并退出 第三步 进入终端,执行su ...

  5. Django中的文件操作

    一.静态文件的加载 1.使用步骤 ①.在工程目录下创建static目录,创建css/js/images等目录,并添加相关资源 ②.在settings.py中配置STATICFILES_DIRS STA ...

  6. Django中的分页器以及手绘验证码

    一.分页器 1.分页器的好处 通过分页管理多条数据,可以美化界面并能提高查询效率 2.一般方式进行分页 def get_students(request): page = int(request.GE ...

  7. Vue <img :src=""/> 图片不显示

    场景 图片路径被原样输出,无法正确加载图片: <img :src="imgSrc"/> 原因 webpack 会将:src 动态绑定的值解析成字符串,原样输出: 解决办 ...

  8. 数栈干货分享!babel-plugin-import最全源码详解

    ​ 本文将带领大家解析babel-plugin-import 实现按需加载的完整流程,解开业界所认可 babel 插件的面纱. 首先供上babel-plugin-import插件 一.初见萌芽 首先 ...

  9. 一看就懂!任务提交的资源判断在Taier中的实践

    Taier 介绍 Taier 是袋鼠云开源项目之一,是一个分布式可视化的DAG任务调度系统. 旨在降低ETL开发成本.提高大数据平台稳定性,大数据开发人员可以在 Taier 直接进行业务逻辑的开发,而 ...

  10. PowerShell执行命令提示找不到驱动器。名为“xx”的驱动器不存在。

    前言 问题截图 1. VSCode中提示错误 2. PowerShell中提示错误,任何命令都提示此错误(排程变量命令) 网上的解决方案 1. VSCode中提示,修改相关VSCode首选项设置 2. ...