提升html5的性能体验系列之三流畅下拉刷新

下拉刷新

为实现下拉刷新功能,大多H5框架都是通过DIV模拟下拉回弹动画,在低端android手机(Android4.4以下)上,DIV动画经常出现卡顿现象(特别是图文列表的情况)。
解决方案还是webview。

既然拉div卡,那就不拉div,改拉webview。webview的拉动是原生的,回弹效果也是原生的,体验与原生一致。
思路是在父页面写titlebar,titlebar下面10像素左右写一个“下拉可刷新”。
然后append一个子webview,并设置为可下拉。
那么在把子webview往下拉时,会露出父页面的“下拉可刷新”字样,并且在拉到一定距离后会触发一个事件,js捕获到这个事件后可以更改“下拉可刷新”为“松开可刷新”。同样松开也会触发一个事件。

目前这个方案仅在Android上实现,iOS不存在性能问题,仍然可通过DIV拉动实现。

为了方便开发者一套代码解决问题,mui框架对2种方案进行了统一封装。
参考:http://dcloudio.github.io/mui/javascript/#pullrefresh-down

当然iOS的5+runtime也支持和Android一样的原生下拉刷新,对iOS上div方式不满意的同学也可以直接使用原生下拉刷新,只是样式没法自定义。

上拉翻页

App里很常见的列表是滚到最下面时载入下一页内容。
传统的思路里,是依靠js监听滚动条位置来实现。这导致任意滚动列表时,都会造成这个监听事件触发,容易引发列表滑动卡顿。
HTML5Plus扩展了一个事件,是原生的下拉到底事件,在webview滚动条到底部时会自动触发。
这样js只需监听这个拉到底事件即可,提升了App的执行性能。

时间: 2024-10-24 10:45:36

提升html5的性能体验系列之三流畅下拉刷新的相关文章

提升HTML5的性能体验系列之三 流畅下拉刷新和上拉

下拉刷新 为实现下拉刷新功能,大多H5框架都是通过DIV模拟下拉回弹动画,在低端android手机(Android4.4以下)上,DIV动画经常出现卡顿现象(特别是图文列表的情况).解决方案还是webview. 既然拉div卡,那就不拉div,改拉webview.webview的拉动是原生的,回弹效果也是原生的,体验与原生一致.思路是在父页面写titlebar,titlebar下面10像素左右写一个"下拉可刷新".然后append一个子webview,并设置为可下拉.那么在把子webv

提升html5的性能体验系列之一避免切页白屏

窗体切换白屏的现实问题 HTML5的性能比原生差很多,比如切页时白屏.列表滚动不流畅.下拉刷新和上拉翻页卡顿.在低端Android手机上,很多原生App常用的功能和体验效果都很难使用HTML5技术模拟.我们首先来看第一个问题,如何避免切页白屏. 浏览器的页面在切换时,由于其页面加载机制,在跳转到下一个页面时,先要请求联网.载入页面代码.构建dom.渲染,最后才显示出来.在最终结果渲染完毕前,会出现几十毫秒甚至数秒的白屏.原生App是没有这个问题的.虽然使用SPA单页应用模型,即ajax+div切

提升html5的性能体验系列之二列表流畅滑动

App的顶部一般有titlebar,下面是list.常见的一个需求是要在list滚动时,titlebar不动.这个简单的需求,实现起来其实并不简单. 在普通web上的做法是使用div的滚动条,把list放到div里.但是很不幸的是,div滚动条在Android4.4以下的手机上非常非常卡,滚动完全无法商用. 还有一种做法是把titlebar使用fix来固顶.但此时手机浏览器的滚动条会通到顶部,当titlebar的右侧出现滚动条时,看起来非常怪异.还有一个副作用是滚动太快时,titlebar的di

提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析

webview加载时有5个事件.触发顺序为loading.titleUpdate.rendering.rendered.loaded.webview开始载入页面时触发loading,载入过程中如果<title>节点已经解析并赋予新值,触发titleUpdate,页面开始渲染,触发rendering,页面渲染完毕,触发rendered,页面载入完毕触发loaded. loaded常用于判断页面是否载入完毕,载入完毕才显示新页面.但有时页面内容很长时,全部载入完毕比较慢,导致显示新窗体比较慢.为了

提升HTML5的性能体验系列之四 使用原生UI

原生UI的设计目的 HTML和css有一个优势就是灵活的样式设计.在大多数情况下,我们都应该使用HTML+css来负责UI.但是有些情况下,我们发现HTML+css的UI不满足需求.1. 绝对置顶HTML的video等元素,以及5+的map等原生元素,这些原生控件的层级高于div.对于一些弹出的需要置顶的控件,会造成div模式的控件无法绝对置顶,就像在web开发里弹出的div被flash遮住一样.使用div方式开发的如下弹出控件:alert.confirm.actionSheet.waiting

提升html5的性能体验系列之四使用原生ui

原生UI即nativeUI的设计目的 HTML和css有一个优势就是灵活的样式设计.在大多数情况下,我们都应该使用HTML+css来负责UI.但是有些情况下,我们发现HTML+css的UI不满足需求.1. 绝对置顶HTML的video等元素,以及5+的map等原生元素,这些原生控件的层级高于div.对于一些弹出的需要置顶的控件,会造成div模式的控件无法绝对置顶,就像在web开发里弹出的div被flash遮住一样.使用div方式开发的如下弹出控件:alert.confirm.actionShee

提升html5的性能体验系列之五webview启动速度优化及事件顺序解析]

webview加载时有3个事件.触发顺序为loading.titleUpdate.loaded.webview开始载入页面时触发loading,载入过程中如果title已经解析并赋予新值,则触发titleUpdate,载入完毕触发loaded. 如果页面加载足够快,那么titleUpdate和loaded几乎同时触发.如果页面加载太慢,则loaded是全部载入完成才触发. loaded常用于判断页面是否载入完毕,载入完毕才显示新页面.但有时页面内容很长时,全部载入完毕比较慢,导致显示新窗体比较慢

H5下拉刷新特效demo,动画流畅

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-wi

Android最佳实践之Notification、下拉刷新、内存及性能建议等

Notification通知 参考地址:http://developer.android.com/training/notify-user/index.html 通知(Notification)是Android中使用的非常多的一个事件提示机制. 创建一个Notification 例子中的Notification是基于Support Library中的NotificationCompat.Builder类.我们使用时要继承这个类,它提供了各个平台最好的Notification支持. 创建一个Not