第四篇:移动APP开发- 页面跳转

前面三篇大体讲述了Hbuilder开发APP相关信息,下面针对页面部分进行详细说明。

主页

主页部分就是打开APP后,跳出的第一个页面,这里采用的页面布局如下:

我们看到的这个页面实际由两个页面组成。因为底部的Tab是公用部分,所以对应嵌套4个页面。

也就是说现在一共有5个页面分别是:

  1. index.html:只是底部固定有Tab的页面
  2. home.html:带有九宫格以及顶部搜索功能的页面
  3. inventory.html:库存界面
  4. statistics.html:统计界面
  5. setting.html.html:我的界面

其中index.html是底部不变界面,其他界面通过点击底部Tab进行切换。

一、页面开发前提

在开发页面之前,首先记住mui开发的一些注意事项:

1.固定栏靠前

这个就是说html页面body中分两类元素,一个是固定栏(带有.mui-bar属性的节点一个是内容。固定栏常见组件包括:顶部导航栏(.mui-bar-nav)、底部工具条(.mui-bar-footer)、底部选项卡(.mui-bar-tab);这些元素使用时需遵循一个规则:放在.mui-content元素之前,即使是底部工具条和底部选项卡,也要放在.mui-content之前,否则固定栏会遮住部分主内容;

2.一切内容都要包裹在mui-content中

除了固定栏之外,其它内容都要包裹在.mui-content中,否则就有可能被固定栏遮罩。具体原因就是决定定位fix的原因了。

注意事项结束了,进入正式页面讲解

二、页面开发中的问题

首先创建含mui.html,名字就叫做index.html,里面包含了引入的css以及js文件,下面添加mui中的tab

<nav class="mui-bar mui-bar-tab" id="nav">
    <a class="mui-tab-item mui-active" href="home.html" id="tab_home">
        <span class="mui-icon mui-icon-home"></span>
        <span class="mui-tab-label">首页</span>
    </a>
    <a class="mui-tab-item" id="tab_inventory">
        <span class="mui-icon mui-icon-email"></span>
        <span class="mui-tab-label">库存</span>
    </a>			
    <a class="mui-tab-item" id="tab_statistics">
        <span class="mui-icon mui-icon-contact"></span>
        <span class="mui-tab-label">统计</span>
    </a>			
    <a class="mui-tab-item" id="tab_myinfo">
        <span class="mui-icon mui-icon-gear"></span>
        <span class="mui-tab-label">我的</span>
    </a>
</nav>	

添加后页面显示:

底部Tab加上了,下面就要把各个Tab代表的页面加载进来。我们在做网页开发的时候可能使用div隐藏以及显示来做(原谅我前端是渣渣)或者使用a标签进行跳转。但是移动APP中不建议这么做,因为网页跳转我们都知道会有等待以及屏幕白一会。演示下:

看到了吧,APP肯定不想白这么一下的,所以就需要选择页面跳转方式了,知识点来了:

1.首先所有页面在第一次加载时都要调用mui.init()方法,因为里面加载了手机要用到的监听之类的,例如监听手机屏幕下拉刷新什么的。

2.页面跳转Mui提供三种方式:

  • 初始化时创建子页面
  • 直接打开新页面
  • 预加载页面

这三种方式区别:

第一种方式是打开子页面的方式,二三种不是。什么是子页面,相当于html中的iframe,这玩意可以一级连着一级,例如A的子页面B,B的子页面C,在C中可以拿到A的元素等,我理解就是嵌套。而非子页面就相当于打开一个新页面了。

那么什么时候使用子页面方式呢?

  • 侧滑菜单(子页面和主页面一起滑过来,不是子页面的话不随着主页面滑过来,你还要自己处理)
  • 子页面使用频繁切换的情况
  • 子页面适用与下拉刷新和上拉加载(如果不是子页面下拉没效果的)

而非子页面的打开方式更适用于详情页等。

那么什么是预加载呢?

故名思意,就是先加载着,也就是先不用。

而预加载可以在init中预加载(很久才会用),另一种就是直接打开的方式。

下面就将home.html作为主页加入到index.html中,这里采用预加载的方式。

先单独看home.html编写页面效果:

顶部搜索框(滑动窗口暂不实现)

<header class="mui-bar mui-bar-nav" style="background-color: #00A9F6;">
    <a class="mui-action-menu mui-icon mui-icon-bars mui-pull-left"></a>
    <div class="mui-input-row mui-search" style="position: absolute;left: 80px;">
        <input type="search" class="mui-input-clear" placeholder="商品、订单、库存">
    </div>
</header>

图片轮播以及九宫格

                <div class="mui-content">
			<!--轮播图片-->
			<div id="slider" class="mui-slider" style="height: 120px;">
				<div class="mui-slider-group mui-slider-loop">
					<!-- 额外增加的一个节点(循环轮播:第一个节点是最后一张轮播) -->
					<div class="mui-slider-item mui-slider-item-duplicate">
						<a href="#">
							<img src="../images/yuantiao.jpg">
						</a>
					</div>
					<!-- 第一张 -->
					<div class="mui-slider-item">
						<a href="#">
							<img src="../images/shuijiao.jpg">
						</a>
					</div>
					<!-- 第二张 -->
					<div class="mui-slider-item">
						<a href="#">
							<img src="../images/muwu.jpg">
						</a>
					</div>
					<!-- 第三张 -->
					<div class="mui-slider-item">
						<a href="#">
							<img src="../images/cbd.jpg">
						</a>
					</div>
					<!-- 第四张 -->
					<div class="mui-slider-item">
						<a href="#">
							<img src="../images/yuantiao.jpg">
						</a>
					</div>
					<!-- 额外增加的一个节点(循环轮播:最后一个节点是第一张轮播) -->
					<div class="mui-slider-item mui-slider-item-duplicate">
						<a href="#">
							<img src="../images/shuijiao.jpg">
						</a>
					</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>
			
			<br/>
			<!--9宫格-->
	        <ul class="mui-table-view mui-grid-view mui-grid-9">
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#" id="product">
	                    <span class="mui-icon mui-icon-home"></span>
	                    <div class="mui-media-body">商品管理</div></a></li>
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#" id="buymenu">
	                    <span class="mui-icon mui-icon-email"><span class="mui-badge">5</span></span>
	                    <div class="mui-media-body">采购单</div></a></li>
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#">
	                    <span class="mui-icon mui-icon-chatbubble"></span>
	                    <div class="mui-media-body">销售单</div></a></li>		                 
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#">
	                    <span class="mui-icon mui-icon-location"></span>
	                    <div class="mui-media-body">客户管理</div></a></li>
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#">
	                    <span class="mui-icon mui-icon-search"></span>
	                    <div class="mui-media-body">库存管理</div></a></li>
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#">
	                    <span class="mui-icon mui-icon-phone"></span>
	                    <div class="mui-media-body">订单管理</div></a></li>
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#">
	                    <span class="mui-icon mui-icon-gear"></span>
	                    <div class="mui-media-body">账务管理</div></a></li>
	            <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#">
	                    <span class="mui-icon mui-icon-info"></span>
	                    <div class="mui-media-body">统计管理</div></a></li>
	           <li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"><a href="#">
	                    <span class="mui-icon mui-icon-more"></span>
	                    <div class="mui-media-body">系统管理</div></a></li>
	        </ul> 
		</div>

当然了,图片轮播有JS控制的

                mui.init({
			swipeBack:true //启用右滑关闭功能
		});
		
		//图片轮播
		var slider = mui("#slider");
		slider.slider({
			interval: 5000
		});

好了回到正题,将剩余的几个页面自己编写完,然后在index.html中添加js控制这些页面预加载同时根据点击隐藏显示页面

//控制tab点击
     	mui.plusReady(function(){
            var arr =document.getElementsByClassName("mui-tab-item");
            var objYe = ["page/home.html","page/inventory.html","page/ajax.html","page/setting.html"];//预加载页面
            var objStyle = {top:"0px",bottom:"60px"};//样式
            var objs=[];
            var self = plus.webview.currentWebview();//取到当前的主页窗口,这个语法是html5+中语法
   
            for (var i=0;i<arr.length;i++){
	            !function(i){
		            var obj = plus.webview.create(objYe[i],objYe[i],objStyle);
		            objs.push(obj);		        
		            arr[i].addEventListener("tap",function(){
		                for(var j=0;j<arr.length;j++){
		                    if(j!=i){objs[j].hide()}
		                    else{objs[j].show()}
		                }
		                self.append(objs[i])
		             })
	             }(i)
            }
             mui.trigger(arr[0],"tap"); 
        })

其中涉及的plus.webview.currentWebview()方法是html5中文档。

文档地址为:http://www.html5plus.org/doc/zh_cn/accelerometer.html

这样就完成了最开始展示的页面了。注意:该种方式在开发视图中点击是不好使的,但是在真机模拟中是可以的。

总结:

该章节介绍了页面跳转几种方式以及使用HTML5+API进行开发,后面将进行跳转页面并获取列表数据的操作。即首页九宫格点击商品管理,跳转到商品列表界面,同时商品列表可以点击进入详情页。列表到详情页也是一个具体实现实例。

 

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值