android点击下拉历史记录,uni-app,社交应用中,聊天页面下拉onPullDownRefresh获取历史消息,数据合并之后,滚动到下拉之前的位置,页面看不见闪动,完美解决...
一般下拉之后,拿到数据合并,会默认展示顶部第一条,模仿其他聊天应用,回到下拉之前位置,如果不做处理,可以看见下拉得到的数据,本方法完美解决
有问题可以留言或者加qq445849201讨论,亲测ios和android都没问题
没有更多消息了
{{item.id}}
{{item.id}}{{item.content}}
export default {
data() {
return {
title: 'Hello',
msgList:[],
listPage:0,
showIndex:-1,
isOver:false
}
},
onLoad() {
let _this = this;
_this.addList(); //产生十条消息
},
methods: {
addList(){
let _this = this;
let type = null;
for(let i = 0; i <10;i++){
if(i % 3 == 1){ //消息列表为图片,增加图片消息,增加页面视觉辨识,如果不做处理,在滚动到下拉之前位置时,尤其在低端机上,是可以看见页面图片闪一下
type = 'img' //文字消息不是很闪
}else{
type = 'msg' //消息列表为文字消息 ,view循环渲染中判断
}
let msgObj={ //一条消息对象
id:_this.listPage * 10 +i,
content:'你有一条新的消息,请注意查收',
type:type
}
_this.msgList.unshift(msgObj); //插入列表
}
if(_this.listPage == 0){ //首次滚动到底部
_this.$nextTick(function() {
uni.pageScrollTo({
scrollTop: 99999,
duration: 0
});
});
return;
}
if(_this.listPage>3){ //模拟消息取完了,拿出来40条消息
_this.isOver = true; // 标记已无更多消息
_this.endOver(); // 设置禁用下拉加载
return;
}
//最关键一步,在数据插入列表,渲染之后,没有滚动到下拉之前位置时,采用相对定位,设置同背景色遮罩层盖住消息
//设置为9意思是,每次拿十条数据,遮住前十条,用数组循环下标判断从0开始,初始化为-1
_this.showIndex = 9;
let scrollMsg = _this.msgList[9]; //数据合并之后,获取10条消息的元素
_this.$nextTick(function() {
let view = uni.createSelectorQuery().select('#msg'+scrollMsg.id);
view.boundingClientRect(res => {
console.log('#msg'+scrollMsg.id+'距离顶部'+res.top); //获取10条消息的元素距顶部的距离,这就是需要滚动的距离
uni.pageScrollTo({ //回到下拉之前,多展示一条消息
scrollTop: res.top,
duration: 0
});
_this.showIndex = -1; //去掉遮罩层
uni.stopPullDownRefresh(); //结束下拉加载
}).exec();
});
},
endOver(){ //设置禁用下拉加载
const pages = getCurrentPages();
const page = pages[pages.length - 1];
const currentWebview = page.$getAppWebview();
currentWebview.setStyle({
pullToRefresh: {
support: false,
style: plus.os.name === 'Android' ? 'circle' : 'default'
}
});
console.log('没有更多数据了,禁用');
},
},
onPullDownRefresh() { //下拉加载
let _this = this;
console.log('refresh');
_this.listPage ++;
_this.addList();
}
}
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 30rpx;
background-color: #FFFFFF;
}
.logo {
height: 200rpx;
width: 200rpx;
margin: 30rpx 0;
}
.text-area {
display: flex;
justify-content: center;
}
.pull-content{
position: relative;
width: 100%;
display: flex;
align-items: center;
margin: 30rpx 0;
}
.left-msg{
width: 300rpx;
border-radius: 10rpx;
background-color: #9eea6b;
color: #333;
font-size: 30rpx;
padding:20rpx;
}
.msg-right{
justify-content: flex-end;
}
.img-box{
display: flex;
align-items: center;
font-size: 28rpx;
}
.absolute-view{
position: absolute;
top: 0;
left: 0;
z-index: 10;
width: 100%;
height: 100%;
background-color: #FFFFFF;
}
.show-index{
display: none;
}
.msg-over{
font-size: 24rpx;
text-align: center;
color: #999999;
}
android点击下拉历史记录,uni-app,社交应用中,聊天页面下拉onPullDownRefresh获取历史消息,数据合并之后,滚动到下拉之前的位置,页面看不见闪动,完美解决...相关推荐
- 富士相机设置传原图_富士X-S10相机传图必看!原创完美解决PC互传图片问题
富士X-S10相机传图必看!原创完美解决PC互传图片问题 2020-11-28 17:03:04 18点赞 28收藏 23评论 创作立场声明:原创首发分享,实用技巧希望推荐好文! 最近入手了富士X-S ...
- Android深色模式下,看不见字的解决办法
你去看看,看不见字的那些是不是都没有设置字体颜色! 设置一下字体颜色就好啦! 对于AlertDialog,千万不要用它自己的,要我们自己写好view,然后设置view,不然的话,深色模式下,你是很难修 ...
- Revit中添加了标高看不见原来轴网解决方法及轴网转化
一.Revit中添加标高看不见轴网怎么处理? 在Revit中绘制的轴网会默认超过最高标高一定距离,因此若新绘制的标高在这距离之上时怎么办呢?难道要重新绘制轴网么?如图1所示. 这种情况下我们只要进入一 ...
- android 杀进程推送服务,关于APP进程被杀死,极光推送收不到消息的解决办法
推送是每一个APP必不可少的一部分,这几天正好在做这一块,所以总结一下遇到的一些问题.在APP被杀死的情况下,对应的推送service也一起被杀死了,这个时候我们怎么能够收到后台的推送呢? 解决办法很 ...
- Android 点击短信链接打开App
一.背景 随着APP产品的迭代,运营的过程中往往会有一些活动希望通知到用户,或者唤起沉睡用户,就我们Android而言,当然有推送,长连接一类的方法,但是,基于国内的推送环境,只能APP自己启动长连接 ...
- 下发布可执行文件_IOS APP 发布过程中涉及相关概念
AppID(应用 ID) AppID 是识别不同应用程序的唯一标志符,每个 app 都需要一个 App ID 或者 app 标识.目前有两种类型的 App 标识:一个是精确的 App ID(expli ...
- Android进阶之路 - 实现58同城APP加载中页面
此文引用的是58同城的加载动画,虽然出来有一些年头了,但我表示使用的时候因技术原因我还是遇到了一些或大或小的坑. 转载请注明:http://blog.csdn.net/qq_20451879/arti ...
- 编程案例——layui的table表格并获取选中的数据、layui监控select下拉框并将隐藏的div显示
layui table表格展示 效果 代码 前端代码 后端代码:我们需要注意后端给前端返回数据的格式 获取radio标签所对应的数据条目 问题描述 解决办法 layui监控select下拉框并将隐藏的 ...
- 关于IE不能打开 windows updates 页 / 看不见版本号的解决
从论坛上找到一篇这方面的技术贴,出处已失,抱歉.原文如下: 1.很多情况下都是因为安装了广捷居制作的ACDSEE32 5.0迷你中文版所致,也有人是安装过一个IE下载增强工具后卸载出了问题所致.一般可 ...
最新文章
- linux多进程server 进程池_Python 中的进程池与多进程
- ConcurrentLInkedQueue队列
- element ui table scrollTop 滚动到行头或行尾
- java基础之匿名内部类
- 作者:吴城文,男,清华大学计算机科学与技术系硕士生。
- php shell,php命令行写shell实例详解
- 安装好panel部署MySQL_实战三种方式部署 MySQL5.7
- Android中的Can't create handler inside thread that has not called Looper.prepare()异常
- ES6中Promise的入门(结合例子)
- 5款自动爬取数据的神器!
- eNSP实验vlan及交换机接口类型配置
- ssdb leveldb ldb文件恢复 ext4magic extundelete
- 推荐收藏 | 掌握这些步骤,机器学习模型问题药到病除
- ffmpeg js转换音频_webRTC使用ffmpeg.js将webm转换为mp4
- 树莓派摄像头无法识别 mmal
- UVA340紫外线灯管
- 组策略应用:软件分配及软件发布
- 2019年有效的rtsp流媒体测试地址整理汇总
- 在计算机技能大赛上的总结发言,我院在全省职业院校技能大赛工作总结交流会上作典型发言...
- 深度学习数学基础-概率与信息论
热门文章
- webpack编译时No PostCSS Config的解决方法
- elasticsearch-6.0.1安装
- apt-get update 问题 及gcc高亮
- Mysql数据库安全管理配置
- hdu 4747 mex 线段树+思维
- winform TopMost
- 控制台资费管理主菜单java_java毕业设计_springboot框架的高速公路收费管理系统...
- mysql教程目录_MySql目录(二)
- play 连接mysql_Play framework 2.x 连接mysql | 学步园
- pil 图像最大值_第97天:图像库 PIL(二)