2022年mui开发文档.pdf
《2022年mui开发文档.pdf》由会员分享,可在线阅读,更多相关《2022年mui开发文档.pdf(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、mui 开发文档Mui 组件部分请参照官网资料,以下资料也来自官网,主要就是便于在手机上查瞧一、 窗口事件详细内容页面初始化在 app 开发中 , 若要使用 HTML5+ 扩展 api , 必须等 plusready 事件发生后才能正常使用 ,mui 将该事件封装成了mui 、plusReady()方法, 涉及到 HTML5+ 的 api, 建议都写在 mui、plusReady 方法中。如下为打印当前页面URL的示例 : mui、plusReady(function() console、log( 当前页面 URL: +plus 、webview 、currentWebview() 、getU
2、RL(); );扩展阅读mui 、init()mui 插件初始化mui 、ready()当 DOM 准备就绪时 , 指定一个函数来执行。代码块激活字符 : minit 创建子页面在 mobile app 开发过程中 , 经常遇到卡头卡尾的页面 , 此时若使用局部滚动 , 在android 手机上会出现滚动不流畅的问题; mui 的解决思路就是 : 将需要滚动的区域通过单独的 webview 实现, 完全使用原生滚动。具体做法则就是: 将目标页面分解为主页面与内容页面, 主页面显示卡头卡尾区域 , 比如顶部导航、底部选项卡等 ; 内容页面显示具体需要滚动的内容, 然后在主页面中调用mui、ini
3、t方法初始化内容页面。mui、init( subpages: url: your - subpage - url,/ 子页面 HTML地址, 支持本地地址与网络地址 id: your - subpage - id, / 子页面标志 styles: top: subpage - top - position,/ 子页面顶部位置精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 49 页 - - - - - - - - - - mui 开发文档 bottom: subpage - bottom - p
4、osition,/ 子页面底部位置 width: subpage - width,/ 子页面宽度 , 默认为 100% height: subpage - height,/ 子页面高度 , 默认为 100%、 , extras: / 额外扩展参数 );参数说明 : styles表示窗口属性 , 参考 5+规范中的 WebviewStyle; 特别注意,height与 width 两个属性 , 即使不设置 , 也默认按 100% 计算; 因此若设置了top 值为非 0px 的情况 , 建议同时设置 bottom 值, 否则 5+ runtime根据高度100% 计算, 可能会造成页面真实底部位置
5、超出屏幕范围的情况;left、right同理。示例: Hello mui的首页其实就就是index 、html 加 list、html 合并而成的 , 如下:index 、html 的作用就就是显示固定导航,list、html 显示具体列表内容 , 列表项的滚动就是在 list、html 所在 webview 中使用原生滚动 , 既保证了滚动条不会穿透顶部导航 , 符合 app 的体验 , 也保证了列表流畅滚动 , 解决了区域滚动卡顿的问题。 list、html 就就是 index 、html 的子页面 , 创建代码比较简单 , 如下: mui、init( subpages: url: lis
6、t、html, 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 49 页 - - - - - - - - - - mui 开发文档 id: list、html, styles: top: 45px, /mui标题栏默认高度为45px; bottom: 0px/ 默认为 0px, 可不定义 ; );扩展阅读代码块激活字符 : misubpage 打开新页面做 web app, 一个无法避开的问题就就是转场动画;web 就是基于链接构建的 , 从一个页面点击链接跳转到另一个页面, 如果通过有刷新的
7、打开方式, 用户要面对一个空白的页面等待 ; 如果通过无刷新的方式 , 用 Javascript移入 DOM 节点( 常见的 SPA解决方案 ), 会碰到很高的性能挑战 :DOM 节点繁多 , 页面太大 , 转场动画不流畅甚至导致浏览器崩溃; mui 的解决思路就是 : 单 webview只承载单个页面的 dom,减少 dom层级及页面大小 ; 页面切换使用原生动画 , 将最耗性能的部分交给原生实现、mui、openWindow( url: new- page- url, id: new-page- id, styles: top: newpage- top - position,/ 新页面顶
8、部位置 bottom: newage- bottom - position,/ 新页面底部位置 width: newpage- width,/ 新页面宽度 , 默认为 100% height: newpage-height,/ 新页面高度 , 默认为 100%、 , extras: 、 / 自定义扩展参数 , 可以用来处理页面间传值精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 49 页 - - - - - - - - - - mui 开发文档 , createNew: false, / 就是
9、否重复创建同样id 的 webview, 默认为 false: 不重复创建 , 直接显示 show: autoShow: true , / 页面 loaded事件发生后自动显示 , 默认为 true aniShow: animationType,/ 页面显示动画 , 默认为”slide -in-right“; duration: animationTime/ 页面动画持续时间 ,Android平台默认 100 毫秒,iOS 平台默认 200 毫秒; , waiting: autoShow: true , / 自动显示等待框 , 默认为 true title: 正在加载、 , / 等待对话框上显
10、示的提示内容 options: width: waiting- dialog- widht,/ 等待框背景区域宽度 , 默认根据内容自动计算合适宽度 height: waiting- dialog- height,/ 等待框背景区域高度 , 默认根据内容自动计算合适高度、 )参数:?styles窗口参数 , 参考 5+规范中的 WebviewStyle; 特别注意 ,height与 width 两个属性 , 即使不设置 , 也默认按 100% 计算; 因此若设置了 top 值为非 0px的情况 , 建议同时设置 bottom 值, 否则 5+ runtime根据高度 100% 计算,可能会造成
11、页面真实底部位置超出屏幕范围的情况;left、right同理。?extras新窗口的额外扩展参数 , 可用来处理页面间传值 ; 例如: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 49 页 - - - - - - - - - - mui 开发文档var webview = mui 、openWindow( url : info、html, extras: name: mui/ 扩展参数 ); console 、log(webview、name); / 输出 mui 字符串注意: 扩展参数仅
12、在打开新窗口时有效, 若目标窗口为预加载页面 , 则通过mui、openWindow 方法打开时传递的extras 参数无效。?createNew就是否重复创建相同id 的 webview; 为优化性能、避免app 中重复创建 webview,mui v1 、7、0 开始增加createNew 参数, 默认为 false;判断逻辑如下 : ?createNew 参数为为 true, 则不判断重复 , 每次都新建 webview; ?createNew 参数为为 fasle,则先查找当前 App中就是否已存在同样 id 的 webview,若存在则直接显示 ; 否则新创建并根据show参数执行显
13、示逻辑 ; 注意:plusReady 事件仅在 webview首次创建时触发 , 使用mui 、openWindow方法多次打开已存在的同样id 的 webview时, 就是不会重复触发 plusReady 事件的 ; 因此若业务写在 plusReady 事件中 , 可能会出现执行结果与预期不一致的情况; 此时可通过 自定义事件 触发; 案例参考: mui、plusReady 有时会失效 ; ?show窗口显示控制参数 , 具体参数如下 : ?autoShow:目标窗口 loaded 事件发生后 , 就是否自动显示 , 默认为true; 若为 false,则仅创建但不显示webview;若目标
14、页面为预加载页面 , 则该参数无效 ; ?aniShow表示页面显示动画 , 比如从右侧划入、从下侧划入等, 具体可参考 5+规范中的 AnimationTypeShow?duration:显示 Webview窗口动画的持续时间 , 单位为 ms ?waiting精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 49 页 - - - - - - - - - - mui 开发文档系统等待框参数mui 框架在打开新页面时等待框的处理逻辑为: 显示等待框 - 创建目标页面 webview- 目标页面
15、loaded 事件发生 -关闭等待框 ; 因此, 只有当新页面为新创建页面(webview) 时, 会显示等待框 , 否则若为预加载好的页面 , 则直接显示目标页面 , 不会显示等待框。 waiting中的具体参数 : ?autoShow:就是否自动显示等待框 , 默认为 true; 若为 false,则不显示等待框 ; 注意: 若 waiting框的 autoShow为 true, 但目标页面不自动显示 , 则需在目标页面中通过如下代码关闭等待框:plus 、nativeUI、closeWaiting();?title:等待框上的提示文字?options 表示等待框显示参数 , 比如宽高、背
16、景色、提示文字颜色等, 具体可参考 5+规范中的 WaitingOption示例 1: Hello mui中, 点击首页右上角的图标 , 会打开关于页面 , 实现代码如下 : /tap为 mui 封装的单击事件 , 可参考手势事件章节document 、getElementById(info) 、addEventListener(tap, function () / 打开关于页面 mui 、openWindow( url:examples/info、html, id: info ); );因没有传入 styles参数, 故默认全屏显示 ; 也没有传入 show参数, 故使用slide-in-r
17、ight动画, 新页面从右侧滑入。示例 2: 从 A页面打开 B页面,B 页面为一个需要从服务端加载的列表页面, 若在B页面 loaded 事件发生时就将其显示出来, 因服务器数据尚未加载完毕, 列表页面为空 , 用户体验不好 ; 可通过如下方式改善用户体验( 最好的用户体验应该就是通过预加载 的方式 ): 第一步 ,B 页面 loaded 事件发生后 , 不自动显示 ; /A页面中打开 B页面, 设置 show 的 autoShow 为 false,则 B 页面在其 loaded 事件发生后 , 不会自动显示 ;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎
18、下载 名师归纳 - - - - - - - - - -第 6 页,共 49 页 - - - - - - - - - - mui 开发文档mui、openWindow( url:B 、html, show: autoShow: false );第二步 , 在 B页面获取列表数据后 , 再关闭等待框、显示B页面/B页面 onload 从服务器获取列表数据 ;window 、onload = function() / 从服务器获取数据、/ 业务数据获取完毕 , 并已插入当前页面DOM;/ 注意: 若为 ajax 请求, 则需将如下代码放在处理完ajax响应数据之后 ; mui 、plusReady(
19、function() / 关闭等待框 plus、nativeUI、closeWaiting(); / 显示当前页面 mui、currentWebview、show(); ); 扩展阅读代码块激活字符 : mopenwindow 关闭页面mui 框架将窗口关闭功能封装在mui、 back方法中, 具体执行逻辑就是 : ?若当前 webview 为预加载页面 , 则 hide 当前 webview; ?否则,close当前 webview; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 49 页
20、 - - - - - - - - - - mui 开发文档在 mui 框架中 , 有三种操作会触发页面关闭(执行 mui、back 方法): ?点击包含、mui-action-back类的控件?在屏幕内 , 向右快速滑动?Android 手机按下 back 按键iOS 平台原生支持从屏幕边缘右滑关闭iOS 平台可通过 popGesture 参数实现从屏幕边缘右滑关闭webview,参考 5+规范, 若想禁用该功能 , 可通过 setStyle方法设置 popGesture 为 none。hbuilder中敲mheader生成的代码块 , 会自动生成带有返回导航箭头的标题栏,点击返回箭头可关闭当
21、前页面, 原因就就是因为该返回箭头包含、mui-action-back类, 代码如下 : 标题若希望在顶部导航栏之外的其它区域添加关闭页面的控件, 只需要在对应控件上添加、mui-action-back类即可 , 如下为一个关闭按钮示例: 关闭mui 框架封装的页面右滑关闭功能, 默认未启用 , 若要使用右滑关闭功能 , 需要在mui 、init();方法中设置 swipeBack 参数, 如下: mui、init( swipeBack : true/ 启用右滑关闭功能);mui 框架默认会监听 Android 手机的 back 按键, 然后执行页面关闭逻辑 ; 若不希望 mui 自动处理 b
22、ack 按键, 可通过如下方式关闭mui 的 back 按键监听 ; mui、init( keyEventBind: backbutton:false/ 关闭 back 按键监听 );精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 49 页 - - - - - - - - - - mui 开发文档除了如上三种操作外 , 也可以直接调用mui 、back()方法, 执行窗口关闭逻辑 ; mui 、back()仅处理窗口逻辑 , 若希望在窗口关闭之前再处理一些其它业务逻辑,则可将业务逻辑抽象成一个
23、具体函数, 然后注册为 mui、init方法的beforeback 参数;beforeback的执行逻辑为 : ?执行 beforeback 参数对应的函数若返回false,则不再执行mui 、back()方法; ?否则( 返回 true 或无返回值 ), 继续执行mui 、back()方法; 示例: 从列表打开详情页面 , 从详情页面再返回后希望刷新列表界面, 此时可注册beforeback 参数, 然后通过 自定义事件 通知列表页面刷新数据 , 示例代码如下 : mui、init( beforeback:function() / 获得列表界面的 webviewvar list = plus
24、 、webview 、getWebviewById(list); / 触发列表界面的自定义事件(refresh),从而进行数据刷新mui、fire(list,refresh); / 返回 true,继续页面关闭逻辑returntrue ; );注意:beforeback的执行返回必须就是同步的( 阻塞模式 ), 若使用 nativeUI这种异步 js( 非阻塞模式 ), 则可能会出现意想不到的结果; 比如: 通过plus 、nativeUI、confirm()弹出确认框 , 可能用户尚未选择 , 页面已经返回了(beforeback同步执行完毕 , 无返回值 , 继续执行mui 、back()
25、方法,nativeUI不会阻塞 js 进程): 在这种情况下 , 若要自定义业务逻辑 , 就需要复写mui 、back方法了; 如下为一个自定义示例 , 每次都需要用户确认后 , 才会关闭当前页面/ 备份 mui、back,mui 、back 已将窗口关闭逻辑封装的比较完善( 预加载及父子窗口 ), 因此最好复用 mui、backvar old_back = mui 、back; mui、back = function() var btn = 确定 , 取消 ; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 mui 开发 文档
限制150内