亲手实现一个刷新控件

亲手实现一个刷新控件

ID:40495007

大小:1.16 MB

页数:17页

时间:2019-08-03

亲手实现一个刷新控件_第1页
亲手实现一个刷新控件_第2页
亲手实现一个刷新控件_第3页
亲手实现一个刷新控件_第4页
亲手实现一个刷新控件_第5页
资源描述:

《亲手实现一个刷新控件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、想要亲手实现一个刷新控件你只需要掌握这些知识现在Android阵营里面的刷新控件很多,稂莠不齐。笔者试图从不一样的角度,在它的个性化和滚动上下一些功夫。笔者期望,这个刷新控件能像Google的SwipeRefreshLayout一样,支持大多数列表控件,有加载更多功能,最好是要很方便的支持个性化,滚动中能够越界是不是也会带来比普通的刷新控件更好的交互体验。作者:lcodecorex来源:segmentfault

2、2016-12-1317:02 收藏  分享现在Android阵营里面的刷新控件很多,稂莠不齐。笔者试图从不一样的角度,在它的个性化和滚动上下一些功夫。笔者期

3、望,这个刷新控件能像Google的SwipeRefreshLayout一样,支持大多数列表控件,有加载更多功能,最好是要很方便的支持个性化,滚动中能够越界是不是也会带来比普通的刷新控件更好的交互体验。开源库在这,TwinklingRefreshLayout,如果喜欢请star,笔者的文章也是围绕着这个控件的实现来说的。为了方便,笔者将TwinklingRefreshLayout直接继承自FrameLayout而不是ViewGroup,可以省去onMeasure、onLayout等一些麻烦,Header和Footer则是通过LayoutParams来设置View的Gra

4、vity属性来做的。1.View的onAttachedToWindow()方法首先View没有明显的生命周期,我们又不能再构造函数里面addView()给控件添加头部和底部,因此这个操作比较合适的时机就是在onDraw()之前——onAttachedToWindow()方法中。此时View被添加到了窗体上,View有了一个用于显示的Surface,将开始绘制。因此其保证了在onDraw()之前调用,但可能在调用onDraw(Canvas)之前的任何时刻,包括调用onMeasure(int,int)之前或之后。比较适合去执行一些初始化操作。(此外在屏蔽Home键的时候也

5、会回调这个方法)·onDetachedFromWindow()与onAttachedToWindow()方法相对应。·ViewGroup先是调用自己的onAttachedToWindow()方法,再调用其每个child的onAttachedToWindow()方法,这样此方法就在整个view树中遍布开了,而visibility并不会对这个方法产生影响。·onAttachedToWindow方法是在Activityresume的时候被调用的,也就是act对应的window被添加的时候,且每个view只会被调用一次,父view的调用在前,不论view的visibility

6、状态都会被调用,适合做些view特定的初始化操作;·onDetachedFromWindow方法是在Activitydestroy的时候被调用的,也就是act对应的window被删除的时候,且每个view只会被调用一次,父view的调用在后,也不论view的visibility状态都会被调用,适合做最后的清理操作;就TwinklingRefreshLayout来说,Header和Footer需要及时显示出来,View又没有明显的生命周期,因此在onAttachedToWindow()中进行设置可以保证在onDraw()之前添加了刷新控件。1.@Override 2. 

7、   protected void onAttachedToWindow() { 3.        super.onAttachedToWindow(); 4. 5.        //添加头部 6.        FrameLayout headViewLayout = new FrameLayout(getContext()); 7.        LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0); 1.        layoutParams

8、.gravity = Gravity.TOP; 2.        headViewLayout.setLayoutParams(layoutParams); 3. 4.        mHeadLayout = headViewLayout; 5.        this.addView(mHeadLayout);//addView(view,-1)添加到-1的位置 6. 7.        //添加底部 8.        FrameLayout bottomViewLayout = new FrameLayout(getContext()); 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。