MUI進(jìn)行APP混合開發(fā)實(shí)現(xiàn)下拉刷新和上拉加載 原創(chuàng)
首先,我們的環(huán)境是使用HBuilder通過MUI開發(fā)APP,這種混合開發(fā)適合安卓和蘋果兩個(gè)平臺,本次我們給大家寫的代碼是把上拉加載和下拉刷新單獨(dú)分離開,一起來學(xué)習(xí)下。
為實(shí)現(xiàn)下拉刷新功能,大多H5框架都是通過DIV模擬下拉回彈動(dòng)畫,在低端android手機(jī)上,DIV動(dòng)畫經(jīng)常出現(xiàn)卡頓現(xiàn)象(特別是圖文列表的情況); 通過雙webview解決這個(gè)DIV的拖動(dòng)流暢度問題;拖動(dòng)時(shí),拖動(dòng)的不是div,而是一個(gè)完整的webview(子webview),回彈動(dòng)畫使用原生動(dòng)畫;在iOS平臺,H5的動(dòng)畫已經(jīng)比較流暢,故依然使用H5方案。兩個(gè)平臺實(shí)現(xiàn)雖有差異,但經(jīng)過封裝,可使用一套代碼實(shí)現(xiàn)下拉刷新。
第一步: 創(chuàng)建子頁面,因?yàn)橥蟿?dòng)的其實(shí)是個(gè)子頁面的整體
mui.init({
subpages:[{
url:pullrefresh-subpage-url,//下拉刷新內(nèi)容頁面地址
id:pullrefresh-subpage-id,//內(nèi)容頁面標(biāo)志
styles:{ top:subpage-top-position,//內(nèi)容頁面頂部位置,需根據(jù)實(shí)際頁面布局計(jì)算,若使用標(biāo)準(zhǔn)mui導(dǎo)航,頂部默認(rèn)為48px; .....//其它參數(shù)定義
}
}]
});
第二步:內(nèi)容頁面需按照如下DOM結(jié)構(gòu)構(gòu)建
<!--下拉刷新容器-->
<div id="pullrefresh" class="mui-content mui-scroll-wrapper">
<div class="mui-scroll">
<!--數(shù)據(jù)列表-->
<ul class="mui-table-view mui-table-view-chevron">
<li class="mui-table-view-cell">1</li>
</ul>
</div>
</div>
第三步:通過mui.init方法中pullRefresh參數(shù)配置下拉刷新各項(xiàng)參數(shù)
mui.init({
pullRefresh : {
container:"#pullrefresh",//下拉刷新容器標(biāo)識,querySelector能定位的css選擇器均可,比如:id、.class等
down : {
contentdown : "下拉可以刷新",//可選,在下拉可刷新狀態(tài)時(shí),下拉刷新控件上顯示的標(biāo)題內(nèi)容
contentover : "釋放立即刷新",//可選,在釋放可刷新狀態(tài)時(shí),下拉刷新控件上顯示的標(biāo)題內(nèi)容
contentrefresh : "正在刷新...",//可選,正在刷新狀態(tài)時(shí),下拉刷新控件上顯示的標(biāo)題內(nèi)容
callback : fn //必選,刷新函數(shù),根據(jù)具體業(yè)務(wù)來編寫,比如通過ajax從服務(wù)器獲取新數(shù)據(jù);
} }
});
第四步:設(shè)置執(zhí)行函數(shù)
function fn() {
//業(yè)務(wù)邏輯代碼,比如通過ajax從服務(wù)器獲取新數(shù)據(jù); ...... //注意,加載完新數(shù)據(jù)后,必須執(zhí)行如下代碼,注意:若為ajax請求,則需將如下代碼放置在處理完ajax響應(yīng)數(shù)據(jù)之后
mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); //這行代碼會(huì)隱藏掉 正在加載... 容器
}
以上就是關(guān)于下拉刷新的MUI寫法以及相關(guān)的function 函數(shù),下面來看看下拉加載:
第一步,第二步 和下拉刷新的一樣
第三步:通過mui.init方法中pullRefresh參數(shù)配置下拉刷新各項(xiàng)參數(shù)
mui.init({
pullRefresh : {
container:"#pullrefresh",//待刷新區(qū)域標(biāo)識,querySelector能定位的css選擇器均可,比如:id、.class等
up : {
contentrefresh : "正在加載...",//可選,正在加載狀態(tài)時(shí),上拉加載控件上顯示的標(biāo)題內(nèi)容
contentnomore:'沒有更多數(shù)據(jù)了',//可選,請求完畢若沒有更多數(shù)據(jù)時(shí)顯示的提醒內(nèi)容;
callback : fn //必選,刷新函數(shù),根據(jù)具體業(yè)務(wù)來編寫,比如通過ajax從服務(wù)器獲取新數(shù)據(jù);
}
}
});
第四步:設(shè)置執(zhí)行函數(shù)
function fn() {
//業(yè)務(wù)邏輯代碼,比如通過ajax從服務(wù)器獲取新數(shù)據(jù); ...... //注意,加載完新數(shù)據(jù)后,必須執(zhí)行如下代碼,true表示沒有更多數(shù)據(jù)了,
兩個(gè)注意事項(xiàng): //1、若為ajax請求,則需將如下代碼放置在處理完ajax響應(yīng)數(shù)據(jù)之后 //
2、注意this的作用域,若存在匿名函數(shù),需將this復(fù)制后使用
var _this = this;
_this.endPullupToRefresh(true|false);
}
上面就是上拉加載這個(gè)代碼的詳細(xì)寫法以及函數(shù)。
本次我們分開給大家把下拉刷新和上拉加載都給大家分享了,如果有任何不明白了地方,可以在下面的留言地方留言討論。
相關(guān)文章
Android編程實(shí)現(xiàn)兩點(diǎn)觸控功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)兩點(diǎn)觸控功能的方法,涉及Android事件響應(yīng)與處理相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Android編程錄音工具類RecorderUtil定義與用法示例
這篇文章主要介紹了Android編程錄音工具類RecorderUtil定義與用法,結(jié)合實(shí)例形式分析了Android錄音工具類實(shí)現(xiàn)開始錄音、停止錄音、取消錄音、獲取錄音信息等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
Android向node.js編寫的服務(wù)器發(fā)送數(shù)據(jù)并接收請求
這篇文章主要為大家詳細(xì)介紹了Android向node.js編寫的服務(wù)器發(fā)送數(shù)據(jù),并接收請求,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
完美解決關(guān)于禁止ViewPager預(yù)加載的相關(guān)問題
本篇文章主要介紹了完美解決關(guān)于禁止ViewPager預(yù)加載的相關(guān)問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
實(shí)例詳解android studio如何導(dǎo)入.so文件的方法
通過實(shí)例給大家詳細(xì)講解了如何在android studio如何導(dǎo)入.so文件以及中間遇到的問題解決辦法,需要的讀者們可以仔細(xì)學(xué)習(xí)一下。2017-12-12
Android仿微信5實(shí)現(xiàn)滑動(dòng)導(dǎo)航條
這篇文章主要為大家詳細(xì)介紹了Android仿微信5實(shí)現(xiàn)滑動(dòng)導(dǎo)航條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
RxJava2.x實(shí)現(xiàn)定時(shí)器的實(shí)例代碼
本篇文章主要介紹了RxJava2.x實(shí)現(xiàn)定時(shí)器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
Android 重力傳感器在游戲開發(fā)中的應(yīng)用
本文主要介紹Android 重力傳感器,這里整理了詳細(xì)的資料,并且詳細(xì)的說明重力傳感器的使用方法,有興趣的小伙伴可以參考下2016-08-08

