tauri学习(5)-Splashscreen启动界面

2022-08-23 16:06:23 浏览数 (1)

接上节继续,本文将研究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代码实现

代码语言:javascript复制
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

0 人点赞