一个可以进页面自动显示刷新效果的SwipeRefreshLayout

SwipeRefreshLayout出来已经有一段时间了,先后换过两种刷新效果,都在V4包下面,新的刷新效果还是很赞的,很多app都采用了这种刷新效果,我最近也在往这边靠,在研究的时候发现,原始的SwipeRefreshLayout只支持手势下拉才能出现刷新效果,看到《简书》安卓客户端每次都有那种切换页面就自动出来刷新效果,自己也试了下,直接设置setRefreshing(true)这个方法是不能看到效果的,于是对源码进行了改造,不说多了,直接上代码

public class AutoSwipeRefreshLayout extends SwipeRefreshLayout {

    public AutoSwipeRefreshLayout(Context context) {
        super(context);
    }

    public AutoSwipeRefreshLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * 自动刷新
     */
    public void autoRefresh() {
        try {
            Field mCircleView = SwipeRefreshLayout.class.getDeclaredField("mCircleView");
            mCircleView.setAccessible(true);
            View progress = (View) mCircleView.get(this);
            progress.setVisibility(VISIBLE);

            Method setRefreshing = SwipeRefreshLayout.class.getDeclaredMethod("setRefreshing", boolean.class, boolean.class);
            setRefreshing.setAccessible(true);
            setRefreshing.invoke(this, true, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

代码看起来比较简单,确实花了不少功夫去阅读源码,除了添加了一个可以自动刷新的方法,没有修改其他的,用法也是和普通SwipeRefreshLayout一样,只不过可以在第一次加载数据的时候调用autoRefresh()就可以看到刷新效果了,看效果图:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-31 03:06:50

一个可以进页面自动显示刷新效果的SwipeRefreshLayout的相关文章

页面自动刷新常用方法

在javascript编程中,经常在更新数据之后用到location.reload()实现页面刷新. reload() 方法用于重新加载当前的文档.如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变.如果文档已改变,reload() 会再次下载该文档.如果文档未改变,则该方法将从缓存中装载文档.这与用户单击浏览器的刷新按钮的效果是完全一样的. 我们都知道客户端浏览器是有缓存的,里面存放之前访问过的一些网页文件

如何做页面自动刷新,又不用让用户按回车键来提交数据!

假设叶面中有如下form: <form name=InputDate> ... </form> 如果页面要自动刷新,但该页面有Request.Form,那么通常会出现一个提示框,需要用户确定来提交数据,这就不是自动 刷新了.而对于监控或股票显示来说,不要用户干预又非常重要,下面就可以解决该问题: <Script Language="JavaScript"> <!-- var limit="0:60" //定义刷新时间 if

2017春 前端自动化(二) 页面自动刷新、sass与css转换的使用、pxToRem直观转换

2017春 前端自动化(二)   页面自动刷新.sass与css转换的使用.pxToRem直观转换 引言: 此文要演示:浏览器页面自动刷新:移动端px与rem的转换,简单直观化:使用sass自动生成css进行编译,而不是借助于考拉工具;  顺便从头来一遍流程-- 建立如上图01所示的目录结构,层次明晰,便于日后管理. 快捷键进入当前文件夹,在此打开dos窗口输入:node -v,显示node版本,说明node之前已经安装好(之前已经介绍安装方法) 之后安装 cnpm,为了日后安装所需的包,速度更

做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致

最近在做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致.大家可以查看这个Demo(记得打开Chrome DevTools). 就如上图所示,你可以发现,原本指定的字体大小是24px,但是最终计算出来的却是53px,看到这诡异的结果,我心中暗骂一句:这什么鬼! 随后开始对问题各种排查:某个标签引起的?某个CSS引起的?又或者是某句JS代码引起的.通过一坨坨的删代码,发现貌似都不是.我不禁又骂,到底什么鬼!不过中间还是发现了一些端倪:当页面中的标签数量或者文本数

页面滚动显示或隐藏元素Headroom.js插件帮助你实现滚动效果

Headroom.js 是什么? Headroom.js 是一个轻量级.高性能的JS小工具(不依赖任何工具库!),它能在页面滚动时做出响应.此页面顶部的导航条就是一个鲜活的案例,当页面向下滚动时,导航条消失,当页面向上滚动时,导航条就出现了. Headroom.js 有什么用? 固定页头(导航条)可以方便用户在各个页面之间切换.但是这也会带来些问题…本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com) 大屏幕一般都是宽度

打开页面自动刷新网页,自动刷新当前页面,JS调用

reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页.true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新") replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过"前进"和"后退"来访问已经被替换

自动滚动,自动显示下一个图像

效果图: 每隔1s会自动切换图像和小白点. 工程图: 代码: RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewController <UIScrollViewDelegate,UIPageViewControllerDelegate> { UIScrollView *imageScrollView; UIPageControl *pageControl; NSInt

权限模块_分配权限_显示树状结构_页面中的选中效果

权限模块__分配权限__显示树状结构1 显示树状结构:依赖关系 setPrivilegeUI.jsp <!-- 显示权限树 --> <td> <!--用它回显 <s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name"></s:checkboxlist> --

response对象处理HTTP文件头(禁用缓存、设置页面自动刷新、定时跳转网页)

response对象处理HTTP文件头 制作人:全心全意 禁用缓存 在默认情况下,浏览器将会对显示的网页内容进行缓存.这样,当用户再次访问相关网页时,浏览器会判断网页是否有变化,如果没有变化则直接显示缓存中的内容,这样可以提高网页的显示速度.对于一些安全性要求较高的网站,通常需要禁用缓存. 通过设置HTTP头的方法实现禁用缓存: <% response.setHeader("Cache-Control", "no-store"); response.setDa