Flutter android和ios闪屏页配置
一.概念理解
闪屏页
1.当点击app开始的一瞬间,所呈现出来的页面就是闪屏页。
2.为什么会有闪屏也,由于app启动需要加载代码,这个过程需要耗时,在没有加载完成之前,是看不到app真正的页面。所以app在没有完全加载完时,系统会默认显示一个页面。
3.通常这个闪屏页如果没有进行配置,能看到的就是白屏页或黑屏页。另外在闪屏页期间程序是无法控制的,所以在这个阶段所看到的页面都是静态页面。
启动页
1.启动页是在闪屏页之后,app真正加载完成了。这个时候程序是可控制的,一般用于广告图的展示,或者引导图的展示。
2.启动页也不是必须的,如果不加启动页,就直接显示首页了。
二.显示方式
1.闪屏页
主流app展示方式如下:分别是在默认模式和深色模式下的呈现方式
上边页面配置拆解:
上边展示的页面就是闪屏页,主要分为两个部分,背景色+前景图
背景色:一般都为单色,可根据系统主题适配,比如深色模式。
前景图:一般都为logo图标+文字。图片是分开展示的,分为上中下,可适当配置。
为什么要这样配置:程序推荐的方式,适配率比较高,比如说安卓大部分机型都能适配。
不推荐直接展示一整张图片
更多内容可看一下文章:https://zhuanlan.zhihu.com/p/342038493
如下图:这是在大屏端(pad)的呈现方式,很明显图片被裁减缺失了一部分。
图片为什么被裁减了:由于图片是整个屏幕显示,需要适配不同机型,会对图片进行等比例缩放,超出的部分会被裁减。
这就是为什么不推荐显示一整张图的原因,有没有解决的办法呢,简单来说可以在做图片的时候,主要的内容信息不要显示在图片的边缘。这样即使被裁减了,也不会丢失图片主要信息,看起来图片还是完整的。

3.启动页如下图
上边图片就是启动页的展示方式:启动页一般是广告推广和进行用户引导。另外还能起到预加载的作用,比如项目功能多,上来就需要加载很多模块,如果不加个启动页,用户等待的时候过长,体验不好。当然也可以不加启动页,直接显示首页。
三.闪屏页配置
1.android端配置
在项目res中drawable目录中创建splash.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><!--闪屏页背景色--><item><shape><solid android:color="@color/color_FFFFFF" /></shape></item><!--中间前景图--><item><bitmapandroid:tint="@color/color_title_bar"android:gravity="center"android:src="@drawable/ic_splash_center" /></item><!--底部前景图--><item android:bottom="@dimen/space_70"><bitmapandroid:gravity="bottom"android:src="@drawable/ic_splash_bottom" /></item></layer-list>
最后在主题中引入:
<style name="welcomeTheme" parent="AppTheme"><item name="android:windowBackground">@drawable/splash</item></style>
这是安卓通用的配置方式,不过这里还有个问题。
android 12上的闪屏页配置

主题配置如下:
implementation "androidx.core:core-splashscreen:1.0.0-beta02"
<?xml version="1.0" encoding="utf-8"?>
<resources><style name="Theme.App" parent="@android:style/Theme.NoTitleBar.Fullscreen"><item name="android:statusBarColor">:color/transparent</item><item name="android:navigationBarColor">:color/transparent</item><item name="android:windowDrawsSystemBarBackgrounds">true</item></style><style name="LaunchTheme" parent="Theme.SplashScreen"><item name="windowSplashScreenBackground">/splashScreenBackground</item><item name="windowSplashScreenAnimatedIcon">/splashscreen_icon</item><item name="windowSplashScreenAnimationDuration">2000</item><item name="postSplashScreenTheme">/Theme.App</item></style><style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"><item name="android:windowBackground">?android:colorBackground</item></style>
</resources>
splashscreen_icon文件如下:是个小动画
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"xmlns:aapt="http://schemas.android.com/aapt"><aapt:attr name="android:drawable"><vectorandroid:width="108dp"android:height="108dp"android:viewportHeight="432"android:viewportWidth="432"><!--Scale down the icon and translate if to fitwithin the inner 2/3 (scale <= 0.67) or the viewport.--><groupandroid:translateX="97"android:translateY="97"android:scaleX="0.55"android:scaleY="0.55"><clip-path android:pathData="m322.02,167.89c12.141,-21.437 25.117,-42.497 36.765,-64.158 2.2993,-7.7566 -9.5332,-12.802 -13.555,-5.7796 -12.206,21.045 -24.375,42.112 -36.567,63.166 -57.901,-26.337 -127.00,-26.337 -184.90,0.0 -12.685,-21.446 -24.606,-43.441 -37.743,-64.562 -5.6074,-5.8390 -15.861,1.9202 -11.747,8.8889 12.030,20.823 24.092,41.629 36.134,62.446C47.866,200.90 5.0987,267.15 0.0,337.5c144.00,0.0 288.00,0.0 432.0,0.0C426.74,267.06 384.46,201.32 322.02,167.89ZM116.66,276.03c-13.076,0.58968 -22.531,-15.277 -15.773,-26.469 5.7191,-11.755 24.196,-12.482 30.824,-1.2128 7.8705,11.451 -1.1102,28.027 -15.051,27.682zM315.55,276.03c-13.076,0.58968 -22.531,-15.277 -15.773,-26.469 5.7191,-11.755 24.196,-12.482 30.824,-1.2128 7.8705,11.451 -1.1097,28.027 -15.051,27.682z" /><pathandroid:fillColor="#3ddc84"android:pathData="m322.02,167.89c12.141,-21.437 25.117,-42.497 36.765,-64.158 2.2993,-7.7566 -9.5332,-12.802 -13.555,-5.7796 -12.206,21.045 -24.375,42.112 -36.567,63.166 -57.901,-26.337 -127.00,-26.337 -184.90,0.0 -12.685,-21.446 -24.606,-43.441 -37.743,-64.562 -5.6074,-5.8390 -15.861,1.9202 -11.747,8.8889 12.030,20.823 24.092,41.629 36.134,62.446C47.866,200.90 5.0987,267.15 0.0,337.5c144.00,0.0 288.00,0.0 432.0,0.0C426.74,267.06 384.46,201.32 322.02,167.89ZM116.66,276.03c-13.076,0.58968 -22.531,-15.277 -15.773,-26.469 5.7191,-11.755 24.196,-12.482 30.824,-1.2128 7.8705,11.451 -1.1102,28.027 -15.051,27.682zM315.55,276.03c-13.076,0.58968 -22.531,-15.277 -15.773,-26.469 5.7191,-11.755 24.196,-12.482 30.824,-1.2128 7.8705,11.451 -1.1097,28.027 -15.051,27.682z"android:strokeWidth="1.93078" /><group android:name="anim"><pathandroid:fillAlpha="0.999"android:fillColor="#979797"android:fillType="nonZero"android:pathData="m-197.42,638.59c0.0,0.0 -5.9627,-259.30 46.113,-215.87 32.895,27.437 76.838,-65.597 91.553,-46.592 2.7119,-7.7182 95.045,109.16 139.74,17.953 10.678,-21.792 43.788,-64.489 78.236,-16.164 54.226,76.069 110.90,-100.75 179.84,-17.966 36.393,43.701 96.377,-23.605 148.05,19.889 42.614,35.869 83.166,3.7255 109.76,61.101 24.321,52.465 35.893,197.64 35.893,197.64L631.77,92.867L-197.42,92.867Z"android:strokeAlpha="1"android:strokeColor="#00000000"android:strokeWidth="12" /></group></group></vector></aapt:attr><target android:name="anim"><aapt:attr name="android:animation"><objectAnimatorandroid:duration="1000"android:propertyName="translateY"android:repeatCount="0"android:valueFrom="0"android:valueTo="-432"android:valueType="floatType"android:interpolator="@android:interpolator/accelerate_decelerate" /></aapt:attr></target><target android:name="anim"><aapt:attr name="android:animation"><objectAnimatorandroid:duration="500"android:propertyName="translateX"android:repeatCount="-1"android:repeatMode="reverse"android:valueFrom="-162"android:valueTo="162"android:valueType="floatType"android:interpolator="@android:interpolator/accelerate_decelerate" /></aapt:attr></target>
</animated-vector>
在AndroidManifest中引用
<activityandroid:name=".MainActivity"android:exported="true"android:launchMode="singleTop"android:theme="@style/LaunchTheme"android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"android:hardwareAccelerated="true"android:windowSoftInputMode="adjustResize"><!-- Specifies an Android theme to apply to this Activity as soon asthe Android process has started. This theme is visible to the userwhile the Flutter UI initializes. After that, this theme continuesto determine the Window background behind the Flutter UI. --><meta-dataandroid:name="io.flutter.embedding.android.NormalTheme"android:resource="@style/NormalTheme"/><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter></activity>
2.ios端配置
关于ios端的配置,比较简单,利用Xcode工具,不需要写代码。
设置图标(Icon)
打开 Assets.xcassets,将项目结构中的图片拉入 AppIcon 中的相应位置,如下图所示。最后,在你的 xcodeproj 中将 App Icons Source 设为 AppIcon,接下来重新 Build 即可。

设置启动页面(Launch Screen)
在我当前的 Xcode 版本(13.0)中,要设置启动页面需要有 Launch Screen File,事实上,这个文件可以使用 .storyboard。
我们在项目中创建 .storyboard文件,我将其命名为 “Launch Screen.storyboard”。
打开我们的 storyboard,然后在里面设计即可。
最后,在我们的 xcodeproj 中将 Launch Screen File 设置为 “Launch Screen.storyboard”。
这样就完成了。

相关文章:
Flutter android和ios闪屏页配置
一.概念理解 闪屏页 1.当点击app开始的一瞬间,所呈现出来的页面就是闪屏页。 2.为什么会有闪屏也,由于app启动需要加载代码,这个过程需要耗时,在没有加载完成之前,是看不到app真正的页面。所以app在没有完全加载完时…...
30道高频Vue面试题快问快答
※其他的快问快答,看这里! 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…...
vue-前端实现模糊查询
vue-前端实现模糊查询 开始觉得前端的模糊查询肯定是非常难实现的,但后来发现还是很容易的,几行代码就可以搞定。 原理 从后端获取到所有数据后,将数据存储于两个变量中,目的是为了其中一个作为模糊查询的对照组,用…...
QT:tcpSocket 报错The proxy type is invalid for this operation
调用connectToHost时会先检查代理情况。Qt 程序默认使用系统的代理设置会导致这个问题导致,只要关闭系统的代理设置就可以解决这个问题: (1)添加头文件: #include <QNetworkProxy> (2)添加…...
PostgreSQL 技术内幕(十一)位图扫描
扫描算子在上层计算和底层存储之间,向下扫描底层存储的数据,向上作为计算的输入源,在SQL的执行层中,起着关键的作用。顺序、索引、位图等不同类型的扫描算子适配不同的数据分布场景。然而,扫描算子背后的实现原理是怎样…...
C# WebSocket 服务器
*******************websocket服务器************************************** 第一步:创建HttpListener类,并启动监听: var listener new HttpListener(); listener.Prefixes.Add("http://10.10.13.140:8080/"); …...
自动化实战 - 测试个人博客系统
前言 本篇使用Selenium3Junit5对个人博客进行自动化测试,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言一.web自动化测试用例二.测试准备1.注册界面自动化测试测试过程中遇到的Bug: 2.登录界面自动…...
TCP/IP详解
TCP/IP详解 一、网络基础1.TCP/IP网络分层2.IP地址和端口号3.封装与分用4.客户-服务端模型 二、链路层1.以太网IEEE802封装2.环回接口 Loopback Interface3.最大传输单元MTU和路径MTU 三、网络层 - IP1.IP首部的关键信息2.IP路由选择3.子网寻址和子网掩码4.ICMP和IGMP 四、传输…...
2023年的低代码:数字化、人工智能、趋势及未来展望
前言 正如许多专家预测的那样,低代码平台在2023年将展现更加强劲的势头。越来越多的企业正在纷纷转向低代码开发,他们希望能够快速开发内部应用程序,并在经济衰退可能出现的情况下保持灵活性。在这个大背景下,低代码平台为企业软件…...
【gogogo专栏】golang并发编程
golang并发编程 并发编程的工具goroutine介绍协程管理器sync.WaitGroup channel介绍readChannel和writeChannelclose的用法select的用法 通讯示例总结 并发编程的工具 在golang中,并发编程是比较简单的,不像java中那么麻烦,golang天然的支持协…...
深入理解JVM虚拟机第二十二篇:详解JVM当中与操作数栈相关的字节码指令
大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…...
Vue报错解决Error in v-on handler: “Error: 无效的节点选择器:#div1“
因为我们在创建元素之前用了#div1"所有它会报错,解决方案简单粗暴咱们直接用 setTimeout(createEdit, 1)解决问题了 原理:vue的虚拟dom创建完成以后再调用真是dom就没啥问题 function createEdit() {const editor new E(#div1)editor.config.hei…...
R | R包安装报错-github连接速度慢或无法访问 | metaboanalystR | Retip | rJava安装
R | R包安装报错-github连接速度慢或无法访问 | metaboanalystR | Retip | rJava安装 一、metaboanalystR 安装1.1 Bioconductor报错,无网络连接1.2 github520-修改hosts文件 二、retip安装2.1 rJava包加载报错及安装2.2 安装Retip包 三、从Bioconductor安装Rdisop报…...
博阳精讯、凡得科技访问上海斯歌:共探BPM流程服务新高地
10月27日下午,来自博阳精讯、凡得科技的流程领域专家、领导一行参观访问了上海斯歌总部。三方举行了深度交流会谈,分享了彼此对流程领域的前沿洞察和技术实践,共同探索了BPM流程服务科技力与价值力的新高地。 本次研讨会上,博阳精…...
响应式艺术作品展示前端html网站模板源码
响应式艺术作品展示网站模板是一款适合各种艺术作品在线展示的响应式网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。 转载自 https://www.qnziyw.cn/wysc/qdmb/23778.html...
大语言模型(LLM)综述(六):大型语言模型的基准和评估
A Survey of Large Language Models 前言7 CAPACITY AND EVALUATION7.1 基本能力7.1.1 语言生成7.1.2 知识利用7.1.3 复杂推理 7.2 高级能力7.2.1 人类对齐7.2.2 与外部环境的交互7.2.3 工具操作 7.3 基准和评估方法7.3.1 综合评价基准7.3.2 评估方法 7.4 实证评估7.4.1 实验设…...
【Python自学笔记】Flask调教方法Internel Server Error
收到老师的小组作业任务说是写一个自动报告程序,用PythonSQLiteHTML实现,好吧。 前面没什么问题,打开VSCode,连数据库读数据处理可视化模板拼凑,最后调用Flask框架出网页报告的时候总报错连接不了。 但换了jinjia2的渲…...
【AICFD案例教程】汽车外气动-AI加速
AICFD是由天洑软件自主研发的通用智能热流体仿真软件,用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程,帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…...
P1547 [USACO05MAR] Out of Hay S 题解
文章目录 题目描述输入格式输出格式样例样例输入样例输出 完整代码 题目描述 Bessie 计划调查 N N N( 2 ≤ N ≤ 2 000 2 \leq N \leq 2\,000 2≤N≤2000)个农场的干草情况,它从 1 1 1 号农场出发。农场之间总共有 M M M( 1 ≤…...
2023.11.10联测总结
T 1 T1 T1求的是有多少个区间的异或和是 k k k的因子, n , k ≤ 1 0 5 n,k \leq 10^5 n,k≤105。 这道题用前缀和维护一下,暴力枚举所有区间就有 80 80 80分。 有一瞬间想过枚举因数,但是脑抽以为要 O ( n ) \mathcal O(n) O(n)枚举&#x…...
Layui-admin后台管理系统:3倍开发效率的企业级解决方案
Layui-admin后台管理系统:3倍开发效率的企业级解决方案 【免费下载链接】Layui-admin 一个现成的 LayuiVue的后台系统模板,开箱即用 项目地址: https://gitcode.com/gh_mirrors/layu/Layui-admin 在当今快速迭代的商业环境中,企业后台…...
ThinkPHP5.0.23 RCE漏洞实战:用Docker快速复现并理解漏洞原理
ThinkPHP5.0.23 RCE漏洞深度解析:从Docker复现到内核原理剖析 在Web安全研究领域,框架级漏洞往往具有"牵一发而动全身"的特性。ThinkPHP作为国内PHP开发者使用最广泛的框架之一,其5.0.23版本爆出的远程代码执行(RCE)漏洞堪称经典教…...
手把手教你配置STM32 IAP跳转:从BootLoader关中断到APP开中断的完整流程
STM32 IAP跳转实战指南:从BootLoader到APP的中断管理全解析 引言 在嵌入式开发领域,IAP(In-Application Programming)技术为产品固件升级提供了极大便利,但其中的跳转过程却暗藏玄机。许多开发者第一次尝试实现STM32的…...
智能自动化神器:3个核心功能彻底改变你的英雄联盟游戏体验
智能自动化神器:3个核心功能彻底改变你的英雄联盟游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款为英…...
超级结MOSFET PCB散热如何设计优化
Q1:超级结 MOSFET 散热的核心难点是什么?为何散热设计直接影响性能?SJ-MOSFET 散热核心难点在于 **“低导通电阻下的高密度发热 高速开关的附加损耗 小型化封装的散热限制”。虽然 SJ-MOSFET 导通损耗低,但大电流、高频应用下&a…...
从 16 亿营收的 Momcozy 看:AI Agent 怎么做海外电商战略分析
【AI Agent 电商 Ep.01】附完整 Prompt 包 5 道调研题 以 Momcozy 为例 可复用 SOP— 01 一个反常识的开场 先问你一个问题。 如果我告诉你,在你眼皮底下,有一家深圳公司——2017 年才成立、A 轮融资、深圳普通写字楼里、500 人团队——去年干出了…...
**发散创新:基于Go语言的日志指标采集与可视化实战**在现代分布式系统中,**日志 + 指标*
发散创新:基于Go语言的日志指标采集与可视化实战 在现代分布式系统中,日志 指标已成为运维监控的核心支柱。如何高效地从服务中提取关键指标(如请求耗时、错误率、QPS),并将其结构化存储用于后续分析?本文…...
超元力悬浮玻璃剧场:科技与美学共生,书写空间叙事新语言
超元力悬浮玻璃剧场作为新型沉浸式体验空间,将建筑美学、数字科技与感官体验巧妙结合,跳出了传统剧场的设计思维,以通透、悬浮、环绕的空间形态,重新定义了观演的意义。它不再是简单的影像播放载体,而是一个能够讲述故…...
Adobe-GenP 3.0终极指南:一键快速激活Adobe CC全系列软件的完整教程
Adobe-GenP 3.0终极指南:一键快速激活Adobe CC全系列软件的完整教程 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你知道吗?对于创意工作者…...
告别手动配置!用Docker一键部署树莓派巴法云客户端,支持TCP/MQTT自动重连
树莓派Docker巴法云:打造高可靠物联网客户端的工程实践 家里闲置的树莓派终于有了用武之地——作为巴法云客户端实现智能家居控制。但直接运行Python脚本总会遇到网络波动导致连接中断、系统重启后需手动恢复等问题。本文将分享如何用Docker容器化技术构建具备自动恢…...
