guide,英语的意思有指导,指南,向导。由此,可见,guide的重要性。guide,就像两个陌生人之间的第一印象。第一印象的好坏,往往就决定了,使用app的人对你这个app的敢兴趣程度。
其实,在guide之前,还有一个splash页面。splash页面,是点击app快捷图标,第一个展现在眼前的页面。该页面,是配置在manifest.json中的,很多东西都配置在manifest.json中的。那么,打开一个app,展现在打开app人眼前的是页面先后顺序是:splash页面,guide页面,app内容页面。
最美的东西,看多了,也会厌倦。那么,guide页面也是如此。你每次打开,总是看到相同的展示页面(一般仅仅展示,没有实际的操作功能),也会感到反感。那么,灵活的使用guide页面就比较重要了。可以这样一种假象。比如安装app后,第一次打开展示guide页面,更新后展示guide页面,或有新的觉得值得展示的时候展示guide页面。其他的时候,直接从splash页面到app内容页面。
不过,用HBuilder开发app应用,调试的时候,快捷图标(暂且这样叫吧,如同桌面程序。还没研究官方怎么个叫法)和splash页面总会是HBuilder自己的图标和页面。这个,没办法更改。就算你在mainfest.json中配置了也是一样。官方的意思是,你要打包成app后,你才能有自己的快捷图标和splash页面。有强迫症,追求完美的我,总是感觉到不爽。不过,自己暂时也没办法。如果打包成app的话,对于ios系统的,可以打包整越狱包或签名的证书包。越狱包是容易,打包了,安装不了。证书包,这个暂时我也没弄好。好了,纠结归纠结。还是开始guide引导页面的制作吧。
在未知之前,看看官方给的例子也是蛮好的。打开官方的HellMui的APP,点击点击。然后把官方APP源码下载下来。下载看看吧。
https://github.com/dcloudio/mui/tree/master/examples/hello-mui
官方,其他APP源码下载:https://github.com/dcloudio/casecode
H5APP其他案例:http://dcloud.io/case/#group-1
如果,对HBuilder,mui,html5+ 一点都不了解,可以先看看官方的介绍,开发指南什么的。http://ask.dcloud.net.cn/article/591 这里仅仅一篇开发指南,更多介绍,更多资料,可以自己去找去查。如果想的话。
对于一条线段,有个起点,对于一个项目,有文档类,对于一个类,有构造函数。H5APP项目也一样。先创建吧。打开HBuilder,一次点击:“文件”->“新建”->“移动App”。然后会跳出一个创建引导面板。如图。
填写应用名称,选择模板。为了方便而不累赘,我们选择“mui项目”模板。点击完成。然后,基础的配置,css,jss等已经创建好了。
项目的icon中,有个A,表示该项目是APP项目。尘归尘,土归土,css归css,js归js包。自己也可以另建包。一般我都会自己另建包路径的。
刚创建项目,项目中,仅仅就只有这几个文件。需要自己渐渐的扩充和壮大。
项目中的index.html文件,就是文档类了。打开app,调用的一个页面就是html页面。打开该html页面,除了和正常的html页面一样外,还多了一条js语句:mui.init();初始mui,里边可以带参数。在h5+中,为了性能,为了为了。页面一般都是以webview为单位的,可以多个webview共存。还可以预加载,还可以侦听各种事件。比如展示webview,webview加载完成等等。其实,这些对于as,都是很轻松,很容易的事情。flash很早很早,早了不知道多少年就有的功能。还能更流畅,更人性化。现在也只是感叹感叹了。未遇好主。
在项目中,我们会侦听初始化完成的状态。就好像在传统的html中,我们会侦听window.onload一样。而h5+APP应用中,我们侦听的是mui.plusReady事件。可以写mui.plusReady(function(){ };); 也可以写mui.addEventListener(“plusReady” , function(){ };);。只有初始化完成,我们才好使用h5+的功能。
那么,我们先创建一个guide.html引导页面。该页面的代码。见文章尾部。然后,在index.html中调用它。这里我们可以用预加载的方式来加载它。也可以直接用webview.creat来创建他。请看,我用预加载的方式。
<!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> <script src="static/style/js/mui.min.js"></script> <link href="static/style/css/mui.min.css" rel="stylesheet"/> <script type="text/javascript" charset="utf-8"> mui.init(); mui.plusReady(function(){ var firstInFlag = plus.storage.getItem('firstInFlag'); //取存的数据 var targetId , targetUrl; firstInFlag = true; //这里总给true,让每次都启动欢迎画面 if (firstInFlag) { targetUrl = 'page/common/guide.html'; targetId = 'page-guide'; } else { targetUrl = 'page/home.html'; targetId = 'page-home'; } plus.navigator.setFullscreen(true); //进来的时候,就让app处于全屏状态 var tagetWebView = mui.preload({url:targetUrl , id:targetId}); tagetWebView.show("slide-in-right", 400, function() { plus.navigator.closeSplashscreen(); //关闭splash,配置中可以设置自动关闭 }); }) </script> </head> <body> </body> </html>
guide页面,大的方面,可以做成一个轮播的形式。手指滑动变更页面。也可以定时滑动页面。内部呢,对于一个完整的页面,你当然可以用js写它的动画了。轮播的滑动以及定时滑动。我们用到了mui-slider。看guide.html。里边有完整的代码。这里贴一部分。反正可以轮播,可以手指滑动播,点击,可以响应。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello MUI</title> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <link rel="stylesheet" href="../../static/style/css/mui.css"> <style> #close { position: absolute; width: 160px; left: 50%; margin-left: -80px; bottom: 15%; padding: 10px; color: hotpink; border-color: hotpink; } .item-back { width: 100%; height: 100%; position: relative; } </style> </head> <body> <div id="slider" class="mui-slider mui-fullscreen" style="background-color: #000000;"> <div class="mui-slider-group"> <div class="mui-slider-item"> <img class="item-back" src="../../static/image/guide/g1.jpg" /> </div> <div class="mui-slider-item"> <img class="item-back" src="../../static/image/guide/g2.jpg" /> </div> <div class="mui-slider-item"> <img class="item-back" src="../../static/image/guide/g3.jpg" /> </div> <div class="mui-slider-item"> <img class="item-back" src="../../static/image/guide/g4.jpg" /> <div class="animate"> <button id="close" class="mui-btn mui-btn-danger mui-btn-outlined" style="border-width: 2px; font-weight: bold;">立即体验</button> </div> </div> </div> <div class="mui-slider-indicator"> <div class="mui-indicator mui-active"></div> <div class="mui-indicator"></div> <div class="mui-indicator"></div> <div class="mui-indicator"></div> </div> </div> <script src="../../static/style/js/mui.min.js"></script> <script> var preHome; mui.back = function(){}; mui.plusReady(function(){ if(mui.os.ios) { plus.navigator.setFullscreen(true); } plus.navigator.closeSplashscreen(); preHome = mui.preload({ url: "../common/prelude.html", id: "page-prelude" }); }); document.getElementById('close').addEventListener('tap' , function(e){ plus.storage.setItem("firstInFlag", plus.runtime.version); plus.webview.currentWebview().close(); preHome.show("pop-in", 200); }); document.querySelector('.mui-slider').addEventListener('slide' , function(e){ //注意slideNumber是从0开始的; var index = e.detail.slideNumber + 1; if(index == 2 || index == 3) { } }) </script> </body> </html>