欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

MUI进行APP混合开发实现下拉刷新和上拉加载 原创

程序员文章站 2023-11-24 18:58:52
首先,我们的环境是使用hbuilder通过mui开发app,这种混合开发适合安卓和苹果两个平台,本次我们给大家写的代码是把上拉加载和下拉刷新单独分离开,一起来学习下。 为...

首先,我们的环境是使用hbuilder通过mui开发app,这种混合开发适合安卓和苹果两个平台,本次我们给大家写的代码是把上拉加载和下拉刷新单独分离开,一起来学习下。

为实现下拉刷新功能,大多h5框架都是通过div模拟下拉回弹动画,在低端android手机上,div动画经常出现卡顿现象(特别是图文列表的情况); 通过双webview解决这个div的拖动流畅度问题;拖动时,拖动的不是div,而是一个完整的webview(子webview),回弹动画使用原生动画;在ios平台,h5的动画已经比较流畅,故依然使用h5方案。两个平台实现虽有差异,但经过封装,可使用一套代码实现下拉刷新。

第一步: 创建子页面,因为拖动的其实是个子页面的整体

mui.init({ 
	subpages:[{ 
	url:pullrefresh-subpage-url,//下拉刷新内容页面地址 
	id:pullrefresh-subpage-id,//内容页面标志
	 styles:{ top:subpage-top-position,//内容页面顶部位置,需根据实际页面布局计算,若使用标准mui导航,顶部默认为48px; .....//其它参数定义 
	 } 
	}] 
});

第二步:内容页面需按照如下dom结构构建

<!--下拉刷新容器-->
<div id="pullrefresh" class="mui-content mui-scroll-wrapper">
  <div class="mui-scroll">
    <!--数据列表-->
    <ul class="mui-table-view mui-table-view-chevron">
      <li class="mui-table-view-cell">1</li>
    </ul>
  </div>
</div> 	 

第三步:通过mui.init方法中pullrefresh参数配置下拉刷新各项参数

mui.init({ 
	pullrefresh : { 
		container:"#pullrefresh",//下拉刷新容器标识,queryselector能定位的css选择器均可,比如:id、.class等 	
		down : {
			contentdown : "下拉可以刷新",//可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容 
			contentover : "释放立即刷新",//可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容 
			contentrefresh : "正在刷新...",//可选,正在刷新状态时,下拉刷新控件上显示的标题内容 
			callback : fn //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
		 } } 
});

第四步:设置执行函数

function fn() {
	 //业务逻辑代码,比如通过ajax从服务器获取新数据; ...... //注意,加载完新数据后,必须执行如下代码,注意:若为ajax请求,则需将如下代码放置在处理完ajax响应数据之后 	
	 
	 mui('#pullrefresh').pullrefresh().endpulldowntorefresh(); //这行代码会隐藏掉 正在加载... 容器
	 
}

以上就是关于下拉刷新的mui写法以及相关的function 函数,下面来看看下拉加载:

第一步,第二步 和下拉刷新的一样

第三步:通过mui.init方法中pullrefresh参数配置下拉刷新各项参数

mui.init({ 
  pullrefresh : { 
    container:"#pullrefresh",//待刷新区域标识,queryselector能定位的css选择器均可,比如:id、.class等 
    up : { 
      contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容 
      contentnomore:'没有更多数据了',//可选,请求完毕若没有更多数据时显示的提醒内容; 
      callback : fn //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据; 
    } 
  } 
});

第四步:设置执行函数

function fn() { 
  //业务逻辑代码,比如通过ajax从服务器获取新数据; ...... //注意,加载完新数据后,必须执行如下代码,true表示没有更多数据了,
  两个注意事项: //1、若为ajax请求,则需将如下代码放置在处理完ajax响应数据之后 //
  2、注意this的作用域,若存在匿名函数,需将this复制后使用
   
  var _this = this;
   
  _this.endpulluptorefresh(true|false); 
}

上面就是上拉加载这个代码的详细写法以及函数。

本次我们分开给大家把下拉刷新和上拉加载都给大家分享了,如果有任何不明白了地方,可以在下面的留言地方留言讨论。