PullToRefreshView自动向下刷新
【PullToRefreshView自动向下刷新】最近项目中用到了下拉刷新,找了一个比较好用的第三方库PullToRefresh_library,点击打开链接。在使用过程中遇到了需要自动出现刷新状态(而不是手动向下滑动)的需求,在网上找到了两种方法:
第一种是官方api提供的 public final void setRefreshing() 方法,使用过后发现没作用。
第二种是网上说的
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mPullToRefreshScrollView.setRefreshing();
}
}, 3000);
这种方法我没试过,网上是说还未获取到头部刷新布局的高度,不过延迟时间根据手机而异。
我个人想出来一个办法,通过看PullToRefreshBase的onTouchEvent()方法中的代码,我们可以用一个线程来模拟手指向下拉的动作,通过handler来刷新高度。
在 PullToRefreshBase.java中添加以下代码:
public final void autoRefreshing(){
mCurrentMode = Mode.PULL_FROM_START;
mInitialMotionY = 0;
mLastMotionY = 0;
new Thread(){
public void run() {
while(true){
handler.sendEmptyMessage(100);
if(mLastMotionY > 300){
break;
}
try {
sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}handler.sendEmptyMessage(101);
}
}.start();
}
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what == 100){
mLastMotionY += 10;
pullEvent();
}else if (msg.what == 101){
if(!isRefreshing()){
setState(State.REFRESHING, true);
}
}else{
setState(State.RESET);
}
}
};
以上代码高度 300,10是随便写的高度,我们可以根据手机的像素来计算,sleep的时间也可以根据你自己的需要更改。 调用的时候直接使用 .autoRefreshing()就可以了。
第一次写博客,写得不好,请见谅!
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 使用composer自动加载类文件
- 人脸识别|【人脸识别系列】| 实现自动化妆
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- win7删除新建不自动刷新
- 浅析(成人情趣用品智能无人自动售货机是新零售的下一个风口吗())
- Java代码辅助效率工具Lombok(注解|Java代码辅助效率工具Lombok(注解,自动生成代码)
- Java+Selenium|Java+Selenium Web UI自动化测试的一些小总结
- 判断scroll向上还是向下
- 关于自动程序的思考