首页 > 代码库 > 客户端实现图片滑动加载,资讯详情页面

客户端实现图片滑动加载,资讯详情页面

展示方案:客户端请求资讯详情数据接口获取 富文本数据 客户端使用WebView展示。

当文章详情篇幅长、包含图片多一次性加载全部图片会造成客户端短暂的卡顿 影响用户体验 所以考虑计划做图片滑动加载 默认使用统一的占位图。

本以为使用一个前端jquery插件(jquery.lazyload.js)就可以解决,应用这个插件后,出现问题所有图片还是一次性加载完成,不是滑动加载,分析发现是因为客户端在实现webview的时候要定义页面中的标题、评论、相关文章等不能够给设置webview的高度为固定手机屏幕高度,所以jquery.lazyload.js的实现思路就不再适用。

最终的解决方法是和客户端交互,通过客户端监测整个webview滑动的高度 把检测的高度值传递给前端js,然后前端js根据传递的滑动高度 计算那些图片在可视区内 控制显示。

前端代码如下:

var elements;function scrollevent(top) {        if (elements == null || elements == undefined||elements.length == 0) {        return;    }    elements = $.grep(elements, function (v) {        var $this = $(v);        var load = $this.attr("load");        if (load==undefined) {            return true;        }    });    elements = $(elements);    var count = 0;    elements.each(function () {        count++;        var $this = $(this);        var load = $this.attr("load");        if (load == undefined) {            if (parseInt(top) > $this.offset().top) {                var src = http://www.mamicode.com/$this.attr("data-original");                if (src =http://www.mamicode.com/= null || src =http://www.mamicode.com/= undefined) {                }                else {                    $this.attr("src", src);                    $this.attr("load", 1);                }            }        }    });    //$("#dialog div").html(top+‘px‘).parent().show();}$(document).ready(function () {    var dialog = "<div style=‘width:100%;height:100%;left:0;top:0;position:fixed;display:none;‘ id=‘dialog‘><div style=‘background-color:rgba(0,0,0,0.8);color:white;font-size:16px;position:fixed;width:260px;text-align:center;border-radius:6px;z-index:1;top:0px;left:50%;margin-left:-130px;‘>sdfasdfasdf</div></div>";    $(‘body‘).append(dialog);    elements = $("img");});

需要约定好接口返回的富文本的自定义属性data-original为原图地址,src指定为占位图。

然后就是就是针对android、ios客户端实现跟前端js交互,调用js方法scrollevent  具体方法可百度。

每日一图

技术分享

客户端实现图片滑动加载,资讯详情页面