今天小編用HBuilder+MUI開發移動APP,不用Android原生也不用IOS原生,僅僅用HTML5+MUI。小編也是初學者所以如有不准確的地方望大家指出幫助小編改正,同時也可以促進大家的深入學習。
HBuilder的下載官網地址:http://www.dcloud.io/;MUI官網下載地址:https://www.muicss.com/。
HBuilder是免費的,但是僅僅需要登錄,安心注冊,方向登錄使用,完全免費的。
第一次啟動HBuilder需要登錄和簡單的設置不過很easy啦。
啟動HBuilder后,可以再菜單選項卡看到文件、編輯...等等。
鼠標左鍵點擊文件選項卡,可以看到
按照截圖操作后,
按照截圖進行操作后會看到,
在項目管理器中看到剛才新創建的項目,
這就是基本的目錄結構,當然了也可以自定義哈!鼠標左鍵雙擊index.html文件,會看到
按照截圖進行設置即可,這樣比較方便邊看邊改而已。
因為我們新建項目采用的是mui項目模板所以index.html頁面會自動引入mui.min.js和mui.min.css,
<script type="text/javascript" charset="utf-8">
mui.init();
</script>
mui.init();這一行的意思是:插件初始化。官方文檔是這么說明:mui框架將很多功能配置都集中在mui.init方法中,要使用某項功能,只需要在mui.init方法中完成對應參數配置即可,目前支持在mui.init方法中配置的功能包括:創建子頁面、關閉頁面、手勢事件配置、預加載、下拉刷新、上拉加載、設置系統狀態欄背景顏色。而且官方文檔特別強調了:mui需要在頁面加載時初始化很多基礎控件,如監聽返回鍵,因此務必在每個頁面中調用。
下面展示代碼,
這兩張截圖就是全部代碼了,以及在電腦上面顯示的效果,之后會奉上手機端顯示效果圖(僅僅只有安卓手機端的顯示效果圖,因為小編用的是安卓手機)
<!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="js/mui.min.js"></script>
<link href="css/mui.min.css" rel="stylesheet" />
</head>
<body>
<!-- 頭部header開始 -->
<header class="mui-bar mui-bar-nav">
<a class="mui-icon mui-icon-bars mui-pull-left"></a>
<a id="info" class="mui-icon mui-icon-info-filled mui-pull-right" style="color: #999;"></a>
<h1 class="mui-title">index</h1>
</header>
<!-- 頭部header結束 -->
<script type="text/javascript" charset="utf-8">
mui.init({
subpages: [{
url: "html/index_list.html", //子頁面HTML地址,支持本地地址和網絡地址 id: "index_list", //子頁面標志 styles: { top: '45px', //子頁面頂部位置 bottom: '0px' //子頁面底部位置 } }] }); </script> </body> </html>
上面是index.html頁面的全部代碼,mui中頭部是header,默認在頂端顯示,nav默認在底端顯示。index.html頁面中只寫了一個header頭部導航,和一串JavaScript代碼。
官方文檔中這樣說明:在mobile app開發過程中,經常遇到卡頭卡尾的頁面,此時若使用局部滾動,在android手機上會出現滾動不流暢的問題; mui的解決思路是:將需要滾動的區域通過單獨的webview實現,完全使用原生滾動。具體做法則是:將目標頁面分解為主頁面和內容頁面,主頁面顯示卡頭卡尾區域,比如頂部導航、底部選項卡等;內容頁面顯示具體需要滾動的內容,然后在主頁面中調用mui.init方法初始化內容頁面。
mui.init({
subpages:[{
url:your-subpage-url,//子頁面HTML地址,支持本地地址和網絡地址
id:your-subpage-id,//子頁面標志
styles:{ top:subpage-top-position,//子頁面頂部位置 bottom:subpage-bottom-position,//子頁面底部位置 width:subpage-width,//子頁面寬度,默認為100% height:subpage-height,//子頁面高度,默認為100% ...... }, extras:{}//額外擴展參數 }] });
參數說明:styles表示窗口屬性,參考5+規范中的WebviewStyle;特別注意,height和width兩個屬性,即使不設置,也默認按100%計算;因此若設置了top值為非"0px"的情況,建議同時設置bottom值,否則5+ runtime根據高度100%計算,可能會造成頁面真實底部位置超出屏幕范圍的情況;left、right同理。
<!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" />
</head>
<body>
<div class="mui-content">
<button type="button" class="mui-btn mui-btn-primary mui-btn-block">index_list</button>
</div>
<script src="../js/mui.min.js"></script>
<script type="text/javascript">
mui.init();//初始化
</script>
</body>
</html>
上面是index_list.html頁面的全部代碼。index.html和index_list.html兩個頁面結合在一起形成了這個效果:
index.html的作用就是顯示固定導航,inde_list.html顯示具體列表內容,列表項的滾動是在index_list.html所在webview中使用原生滾動,既保證了滾動條不會穿透頂部導航,符合app的體驗,也保證了列表流暢滾動,解決了區域滾動卡頓的問題。 index_list.html就是index.html的子頁面,創建代碼比較簡單,如下:
mui.init({
subpages: [{
url: "html/index_list.html", //子頁面HTML地址,支持本地地址和網絡地址
id: "index_list", //子頁面標志
styles: { top: '45px', //子頁面頂部位置,mui標題欄默認高度為45px bottom: '0px' //子頁面底部位置,默認為0px,可不定義 } }] });
說明:html是在本項目下新建的一個子文件夾,index_list.html頁面在html文件夾下面。
安卓手機端測試效果圖:
真機測試參數:Android 4.2.2 OS,關於如何真機測試,小編拿安卓手機舉例,一部安卓手機4.2及以上版本系統,一根數據線,然后需
要在電腦上安裝一個手機助手。第一步通過數據線將手機與電腦相連;第二步查看HBuilder菜單欄下方的工具欄中
點擊截圖箭頭所指的那個按鈕旁邊的方向向下的箭頭,如果看到
如果看到上面這張截圖所示的效果,那么點擊這個按鈕即可在手機端看到,期間手機和電腦之間不能斷開連接;如果沒有掃描出手機,那么啟動手機助手,然后關閉HBuilder刷新桌面,之后啟動HBuilder然后重復以上步驟檢查手機是否被識別出來,如果還未識別出手機那么請百度吧,具體情況具體分析。
這只是一個簡單的demo而已,建議大家自己試試看,還有就是要養成看官方文檔的習慣,遇到問題先去查詢官方文檔。
官方文檔地址:http://dev.dcloud.net.cn/mui/ui/,http://www.html5plus.org/doc/zh_cn/webview.html
或許有人會說小編我的這篇博客很爛,但是小編覺得真的很基礎,切記不要養成高端看不透徹,低端基礎看不上的習慣,這個習慣很不好。
轉載請注明出處,謝謝。