精华内容
下载资源
问答
  • Flutter 启动页 消除白屏

    万次阅读 多人点赞 2019-07-09 16:36:52
    文章目录Android 启动页IOS 任何一个app基本都会设计一个启动页,今天我们就来看看怎么在flutter项目中设置启动页。 开始的时候我的第一个想法就是把启动页当成一个Widget,先加载这个Widget然后在显示我们的主...


    任何一个app基本都会设计一个启动页,今天我们就来看看怎么在flutter项目中设置启动页。
    开始的时候我的第一个想法就是把启动页当成一个Widget,先加载这个Widget然后在显示我们的主页面,可是在实践的过程中遇到一个很大的问题,app启动的时候会出现较长时间的白屏,在android手机上很明显,而且性能越差时间越长,ios相对好些。做过android原生开发的都知道android原生也有白屏问题,不过flutter要明显的多,如何解决这个问题?其实我们在创建flutter项目的时候,系统已经帮我们解决了,只不过我们没有注意到而已。

    Android 启动页

    首先打开如下图的文件:
    在这里插入图片描述
    有这么一段
    在这里插入图片描述
    meta-data 中value设置为true代表有启动页,然后打开res->values->style.xml文件如下图:
    在这里插入图片描述
    文件中设置了style,名称为LaunchTheme,注意这个名称不能修改,style加载的是drawable中的launch_background.xml,我们打开这个文件:
    在这里插入图片描述

    默认情况下红框内的item是没有的,这就是我们要设置的启动页的图片,启动页的图片我们存放在drawable下,如下图:
    在这里插入图片描述
    到这里android启动页就是设置完成了。

    IOS

    打开如下目录:
    在这里插入图片描述
    将LaunchImage.png、LaunchImage@2x.png、LaunchImage@3x.png 替换为我们自己启动页图片即可。

    Flutter 系列文章

    展开全文
  • mui 启动页和引导页

    千次阅读 2018-10-08 10:24:08
    一、启动页和引导页的概念 “启动页”(splash):app的启动界面,每次启动都会看到的(每次打开QQ都会看到一只企鹅)。 “引导页”(guide):guide是否展示是可控的,通常首次启动时显示,从第二次启动开始,引导...

    一、启动页和引导页的概念
    “启动页”(splash):app的启动界面,每次启动都会看到的(每次打开QQ都会看到一只企鹅)。
    “引导页”(guide):guide是否展示是可控的,通常首次启动时显示,从第二次启动开始,引导页就不再显示,而是直接进入App主界面了。
    二、启动页的设置

    1. 在manifest.json文件中
      在manifest.json文件的“启动图片(splash)配置”里设置,可以设置“延时关闭启动界面”或者“手动关闭启动界面”,实际开发中,通常需要设置手动关闭splash(HBuilder7.1版本后,启动界面不调用此方法超过6秒后会自动关闭)。

    2. 在main.html文件中
      手动关闭启动页的代码

      plus.navigator.closeSplashscreen();

    二、引导页的设置
    1.在index.html中:
    按照Hello mui启动页的逻辑,首次启动展示引导页,之后启动不再展示。那么就意味着,我们需要一个标识来确定,App是否已经启动过。我们可以在本地存储一个key,(如下例launchFlag),来作为已经启动过App的标识。在入口index.html中,就可以读取这个key,来决定是否展示引导页。
    index.html:

    <!DOCTYPE html>
    <html>
     
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
            <title>入口页面</title>
            <link href="css/mui.min.css" rel="stylesheet" />
            <style type="text/css">
                body {
                    background-color: black;
                }
            </style>
        </head>
     
        <body>
            <script src="js/mui.min.js"></script>
            <script type="text/javascript" charset="utf-8">
                mui.init();
                mui.plusReady(function() {
                    /**
                     * 获取本地存储中launchFlag的值
                     * http://www.html5plus.org/doc/zh_cn/storage.html#plus.storage.getItem
                     * 若存在,说明不是首次启动,直接进入首页;
                     * 若不存在,说明是首次启动,进入引导页;
                     */
                    var launchFlag = plus.storage.getItem("launchFlag");
                    if(launchFlag) {
                        mui.openWindow({
                            url: "main.html",
                            id: "main",
                            extras: {
                                mark: "index" //额外的参数,仅仅是个标识,实际开发中不用;
                            }
                        });
                    } else {
                        mui.openWindow({
                            url: "guide.html",
                            id: "guide"
                        });
                    }
                });
            </script>
        </body>
     
    </html>
    
    
    1. 在guide.html中:

    我们需要放置我们想要展示的内容,利用mui的slider组件,来制作一套引导信息。
    如果使用图片的话,建议大家按照iPhone6 Plus的尺寸制作(其实就是往大了做),然后利用5+提供的方法计算屏幕正确的宽高,设置图片的宽高来撑满屏幕。
    在最后一个引导界面提供一个App主界面入口,也就是“开始体验”这种按钮。(点击“开始体验”的同时,设置表示App已经启动过的标识。)

    <!doctype html>
    <html>
     
        <head>
            <meta charset="UTF-8">
            <title></title>
            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
            <link href="css/mui.min.css" rel="stylesheet" />
            <style type="text/css">
                body {
                    background-color: black;
                }
     
                .guide-img {
                    width: 100%;
                }
     
                #start {
                    position: absolute;
                    bottom: 40px;
                    width: 60%;
                    left: 20%;
                }
            </style>
        </head>
     
        <body>
            <div class="mui-content">
                <div class="mui-slider mui-fullscreen">
                    <div class="mui-slider-group">
                        <div class="mui-slider-item">
                            <a href="javascript:;">
                                <img class="guide-img" src="images/1.jpg">
                            </a>
                        </div>
                        <div class="mui-slider-item">
                            <a href="javascript:;">
                                <img class="guide-img" src="images/2.jpg">
                            </a>
                        </div>
                        <div class="mui-slider-item">
                            <a href="javascript:;">
                                <img class="guide-img" src="images/3.jpg">
                            </a>
                        </div>
                        <div class="mui-slider-item">
                            <a href="javascript:;"><!--javascript: 是一个伪协议,javascript:是表示在触发<a>默认动作时,执行一段JavaScript代码,而 javascript:; 表示什么都不执行,这样点击<a>时就没有任何反应。-->
                                <img class="guide-img" src="images/4.jpg">
                                <button class="mui-btn mui-btn-blue mui-btn-outlined" type="button" id="start">开始体验</button>
                            </a>
                        </div>
                    </div>
                </div>
            </div>
            <script src="js/mui.min.js"></script>
            <script type="text/javascript">
                mui.init();
                mui.plusReady(function() {
                    /**
                     * 获取系统状态栏高度
                     * http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.getStatusbarHeight
                     */
                    var sh = plus.navigator.getStatusbarHeight();
                    /**
                     * 获取设备屏幕高度分辨率以及宽度分辨率
                     * http://www.html5plus.org/doc/zh_cn/device.html#plus.screen.resolutionHeight
                     * http://www.html5plus.org/doc/zh_cn/device.html#plus.screen.resolutionWidth
                     */
                    var h = plus.screen.resolutionHeight;
                    var w = plus.screen.resolutionWidth;
                    /**
                     * 设置图片高度,这里图片并不规范;
                     * 实际开发中,建议大家制作iphone6plus规格的图片;
                     */
                    var imgs = document.querySelectorAll(".guide-img");
                    for(var i = 0, len = imgs.length; i < len; i++) {
                        imgs[i].style.height = (h - sh) + "px";
                        imgs[i].style.width = w + "px";
                    }
                    /**
                     * 手动关闭启动页
                     * http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.closeSplashscreen
                     */
                    plus.navigator.closeSplashscreen();
                    document.getElementById("start").addEventListener("tap", function() {
                        /**
                         * 向本地存储中设置launchFlag的值,即启动标识;
                         * http://www.html5plus.org/doc/zh_cn/storage.html#plus.storage.setItem
                         */
                        plus.storage.setItem("launchFlag", "true");
                        mui.openWindow({
                            url: "main.html",
                            id: "main",
                            extras: {
                                mark: "gudie" //同样,这里也只是个标识,实际开发中并不用;
                            }
                        });
                    });
                });
                /**
                 * 重写mui.back(),什么都不执行,反之用户返回到入口页;
                 */
                mui.back = function() {};
            </script>
        </body>
     
    </html>
    
    

    注意:关于

    ”javascript: 是一个伪协议。它可以让我们通过一个链接来调用javascript函数。但是由于这个函数为空,所以我们调用的就是一个空函数,并不会发生任何实质性的改变。同时可以实现a标签的点击运行。

    href="#"是指联接到当前页面,其实是无意义的,页面也不会刷新。这是一个锚链接。
    如果当页面里面的内容很多的时候,有了上下滚动条,使用href=“#"会发生跳转到页面顶部的问题。而使用href=“javascript:;” 就可以避免页面的乱跳!所以,如果我们想要写一个死的a标签,使用会更有利于增加我们的页面的用户友好度!
    如果引导页不能流畅切换,可以参见http://www.cnblogs.com/nangong/p/7e3200a9374c993a1e94b3005ee2a71e.html

    感谢分享https://blog.csdn.net/sophiafei_2000/article/details/78142162

    展开全文
  • Android启动页设置启动模式为 singleTask 经测试,Android 启动页只要启动模式是singleTask,不管你后面进了多少个页面,后面是什么启动模式,就算你把启动页finish掉,按home键退出app,再次进入. android都会重新打开...

    Android启动页设置启动模式为 singleTask

    经测试,Android 启动页只要启动模式是singleTask,不管你后面进了多少个页面,后面是什么启动模式,就算你把启动页finish掉,按home键退出app,再次进入.

    android都会重新打开启动页,
    如果启动页已存在,会走onNewIntent onStart onResume ,
    不存在则走onCreate onStart onResume,
    又因为启动页启动模式是singleTask,
    所以会把同一个栈内的其他acitivity都关掉.

    展开全文
  • 关于android启动页启动模式与singleTask 经测试,android 启动页只要启动模式是singleTask,不管你后面进了多少个页面,后面是什么启动模式,就算你把启动页finish掉,按home键退出app,再次进入 android都会重新打开...

    关于android启动页启动模式与singleTask

    经测试,android 启动页只要启动模式是singleTask,不管你后面进了多少个页面,后面是什么启动模式,就算你把启动页finish掉,按home键退出app,再次进入

    android都会重新打开启动页,如果启动页已存在,会走onNewIntent onStart onResume ,不存在则走onCreate onStart onResume,又因为启动页启动模式是singleTask,所以会把同一个栈内的其他acitivity都关掉.

    展开全文
  • flutter填坑——iOS闪屏页+启动页效果优化 闪屏之后会黑一下进入启动页 问题描述 大部分app都有自己的启动页,我们经常在启动页做一些判断逻辑,例如 是否第一次启动app,第一次启动需要跳转引导页;是否登录状态,...
  • app启动优化和启动页适配方案

    千次阅读 2020-03-10 19:27:16
    写在前面,关于启动页适配方案,百度了一下网上的解决办法,发现很多人使用xml布局文件和启动大图的方式进行启动页适配, 还有进行了宽高比进行多图适配,我反复实验后,发现这两种方式并不是很好,大部分主流机型都...
  • Android 启动页面与广告页面的实现

    万次阅读 多人点赞 2017-03-26 16:46:27
    在我们APP的开发过程中,启动页面是绕不开的,广告页面说不定,但是不得不说,这两个界面都是经常要用到的。接下来我记录一下我的实现过程。项目架构为MVP。  那么先看看我们的需求和流程:(当然这也是可以根据...
  • Android配置启动页

    千次阅读 2019-01-23 20:07:40
    Android中几乎所有app都有启动页这一基本功能,但是用途都不相同。 有的app的启动页用于加载广告,有的启动页用于加载后台,一旦后台数据加载好了才把启动页去了,不过想来很多app是两者兼顾的。 自己写的app是很少...
  • WPF 启动页面

    千次阅读 2017-06-26 19:26:01
    如果我写的有误,请及时与我联系,我立即改之...wpf软件启动时,加载启动页面。软件初始化完成之后关闭页面。 App.xaml.cs代码 (实现加载页面功能) public partial class App : Application { protected ov
  • flutter 启动页设置

    2020-04-19 21:13:21
    1、在main.dart的MaterialApp内,将home对应的组件内容设置成,启动页所在组件 2、在启动页所在路由设置启动图片等 3、在initState()生命周期函数中设置延迟函数,n秒后跳转到其他路由页面即可 代码示例: main.dart: ...
  • 转载请注明出处(万分感谢!...ViewPager 从入门到带你撸个启动页之ViewPager基础入门(一) ViewPager 从入门到带你撸个启动页之Fragment+ViewPager(二) ViewPager 从入门到带你撸个启动页之实战启动页(三)一、
  • 启动页设置 uniapp自带的启动页是一个白底的页面,上面有个uni的logo,然后周围有个圆圈的进度条,这个是启动页。 uniapp中可以自定义启动页,注意两点: 不要勾选“启动界面显示等待雪花” Android启动界面设置中...
  • iOS 启动页实现方案

    2020-06-10 23:24:17
    启动页的定位 1.由于每次打开都能看到,因此启动页常用于广告位,为产品带来盈利。 2.用来判断是跳转主页面还是登陆界面。 3.用来缓冲app的加载时间。 实现思路 在didFinishLaunchingWithOptions里面创建两个Window...
  • vue app启动页

    2020-06-29 14:36:50
    在vue-cli项目中添加页面启动页 <template> <div id="app"> // 启动页内容开始 <div class="wrap" v-if="show"> <div class="pic1"> <img src="@/assets/images/pic1.png" /> ...
  • Android 启动页适配&启动优化

    千次阅读 2019-01-23 20:30:33
    首当其冲的是就是启动页的适配了,尽管只有一张单图,为了保持他不变形绞尽脑汁想了无数办法,最终找到一个简单的方案。先说下当前的分辨率。 主流屏 16:9 1280*720 1.777 1920*1080 1.777 2560*1440 1.777 非主流...
  • 启动页与闪屏

    千次阅读 2017-03-09 10:58:13
    启动页 下载并安装完app后,或者更新版本后,打开产品,首先会出现一页或者滑屏多页图文并茂的页面(抑或只有文字和纯色背景搭配),而这些页面,有些是描述产品的主要功能,或者是传递产品的理念,也或者是产品...
  • Android启动页广告

    千次阅读 2017-12-05 00:02:20
    1、前言在Android项目开发中,经常会遇到需要实现启动页广告的需求。今天就来整理下启动页广告的实现,以便在今后的项目中拿来参考使用。 2、概述实现思路: 1、在启动页初始化阶段,访问后端接口,获取广告数据,广告数据...
  • Android中启动页的实现

    千次阅读 2018-06-13 11:59:33
    我的启动页展示 背景 只要是一个app,每次打开的时候会显示启动页面,然后再进入主界面。下面看几个app的启动页展示: 我的思路 启动页面肯定是要打开就显示的,然后用一个Activity展示。界面...
  • 搞了一个DEMO,不知道启动路径是啥 ...默认启动页为:localhost:8080但是我们每次都手动输入地址非常的麻烦,怎么配置自动起来呢? 1.首先在Springboot项目中添加测试类ControllerTest ,测试类ControllerTest ...
  • Android启动页+引导页

    千次阅读 2017-04-29 19:15:54
    启动页代码如下: package com.example.sportsii.tixinwangapp.activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Build; import ...
  • 启动页有一个停留3秒的广告,同时有一个线程在倒计时,现在问题是点击广告进入广告页后线程时间一到还是会打开主页,覆盖掉广告页,请问大佬们这个逻辑应该怎么写?
  • 关于iOS启动页面

    千次阅读 2016-01-15 20:35:05
    如何让iOS启动页面如何设置多停留一会 ...如果想实现一张图片作为启动页,如下图     如果启动不行 记得clear 一下工程   是启动页停留一段时间 只需要在 AppDelegate     - (BOOL)application:(UI
  • 1、在main.dart的MaterialApp内,将home对应的组件内容设置成,启动页所在组件 2、启动页设置有状态组件,第二个状态类还要with多继承SingleTickerProviderStateMixin 3、在initState生命周期函数中定义动画控制器和...
  • android启动页制作

    千次阅读 2017-02-23 10:12:39
    现在app在启动的时候都是有启动页的,但是直接在启动Activity中加入背景图是会先白屏,在加载到背景图片,下面介绍一种无白屏的启动页。  1.删除启动界面的xml布局,删除setContentView。注释掉Activity中这行代码...
  • APP设计之启动页和广告页

    千次阅读 2018-08-30 15:01:06
    苹果官方对于iOS启动页的设计说明:为了增强应用程序启动时的用户体验,您应该提供一个启动图像。启动图像与应用程序的首屏幕看起来非常相似。当用户在主屏幕上点击您的应用程序图标时,iPhone OS会立即显示这个启动...
  • iOS LaunchScreen设置启动图片 启动页停留时间 转自http://www.2cto.com/kf/201506/407017.html 问题:想实现类似微信启动页一样 设置为一个整页面的图片 问题二:iOS启动页面如何...
  • Android启动页面制作

    千次阅读 2015-11-03 17:47:52
    android应用一般在启动的时候,都会预先加载配置项,耗费相当一部分时间,...设置一个LogoActivity页面作为启动页,在启动页完成延时操作后,跳转MainActivity主页面。 Demo地址: 代码如下: LogoActivity.java packag
  • 启动页停留时间

    2018-01-16 17:09:48
    启动页停留时间现在绝大数应用都有启动页,多数形式是放一张图。 最好是网络请求过来的,下面只说本地默认图 关键是停留时间的控制 特别说明:几种时间控制有误差(系统时间的受内存的影响) 1、Timer 2、new ...
  • Flutter实战之闪屏启动页

    千次阅读 2019-07-14 10:33:02
    在APP启动之前,一般都会SplashPage页面,这页面包含闪屏启动页(启动APP的过渡页面)、引导页(APP简介说明)、广告页(点击在浏览器中打开H5页面、或者直接下载APP文件)。 实现思路 APP的第一个页面就是闪屏启动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,181
精华内容 18,472
关键字:

启动页