智能下拉刷新框架-SmartRefreshLayout_第1页
智能下拉刷新框架-SmartRefreshLayout_第2页
智能下拉刷新框架-SmartRefreshLayout_第3页
智能下拉刷新框架-SmartRefreshLayout_第4页
智能下拉刷新框架-SmartRefreshLayout_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、框架如果你看完了效果图,或许框架的意思应该有所了解了SmartRefreshLayout对下拉刷新功能进行系统的拆分、组合,主要由四个 局部组成:Refresh Layout下拉的基本功能,包括布局测量、滑动事件处 理、参数设定等等RefreshContent对不同内容的统一封装,包括判断是否可滚动、回弹判断、智能识别RefreshHeader下拉头部的实现和显示RefreshFooter上拉底部的实现和显示F面是UML关系类图android: scaleType=,zcenterCropzzandroid: src=/,mipmap/gif_header_repast/z/在Android

2、Studio中的预览效果图和运行效果图 700 700化满牛肉粉破酥包期你回来盐菜饭米豆腐哈哈!一行Java代码都不用写,就完成了一个自定义的Header哈哈!一行Java代码都不用写,就完成了一个自定义的Header嵌套Layout作为内容如果boos要求在列表的前面如果boos要求在列表的前面定一个广告条怎么办?这好办呀般我们会开开心心的下下这样的代码:LinearLayoutandroid:orientation=vertical但是在运行下拉刷新的时候,我们发现Header是在广告条之下的,看着会别 扭 ,其实我们可以试试另一种方式,把广告条写到RefreshLayout内部,看看会发

3、生什么?LinearLayoutandroid:orientation=vertical”由于伪代码过于简单,而且运行效果过于丑陋,这里还是贴出在实际工程中的实际情况吧Photos MowingO Frederik Hensen6 球博列表扑 正梅硼fi6书博列表winter farewell12 kS nter Newell21 44Steffen Nocqaard Andersenlorwn ipeum dolor trt amet. eooMCtw apton9 cH ted do emsmod lempof mcxdunt ut hbort M dkx* m*Qna *(ua m nt

4、m ad rnanim wnnmn. Md doemttnod quit noetfud eiEMiooSteffen Nor93d AndersenLortm 8M dolor M amM. coctMdeur Xipisc5g .儿 do eaitmod ttmpor mod,我们注意看右边的图,仔细观察手指触摸的位置和下拉效果。可以看到在列表已经滚动到中部时,轻微下拉列表是不会触发刷新的,但是如果是触摸固定的布局,那么可以触发下拉。从这里可以看出SmartRefreshLayout对滚动边界 的判断是动态的,智能的!当然如果SmartRefreshLayout的智能还是不能 满足你,可以

5、通过setListener自己实现滚动边界的判断,更为准确!功能简单的介绍了两大特点框架和智能,接下来也说说SmartRefreshLayout还具 有的其他常用功能吧支持所有的 View ( AbsListView、RecyclerViewxWebView.View )和多层嵌套的 Layout支持自定义并且已经集成了很多炫酷的Header和Footer支持和ListView的同步滚动和RecyclerView、AppBarLayout、CoordinatorLayout 的嵌套滚动 NestedScrolling.支持在Android Studio Xml编辑器中预览 效果支持分别在Def

6、ault (默认)、XmL JavaCode等三个地方设置 Header 和 Footer.支持自动刷新、自动上拉加载(自动检测列表滚动到底部,而不用 手动上拉).支持通用的刷新监听器OnRefreshListener和更详细的滚动监听 OnMultiPurposeListener.支持自定义回弹动画的插值器,实现各种炫酷的动画效果.支持设置主题来适配任何场景的App ,不会出现炫酷但很尴尬的 情况.支持设置多种滑动方式来适配各种效果的Header和Footer:位 置平移、尺寸拉伸、背后固定、顶层固定、全屏支持内容尺寸自适应Content-wrap_content支持继承重写和扩展功能,内部

7、实现没有private方法和字段,继承之后都可以重写覆盖 支持越界回弹(Listview、RecyclerViewx ScrollViewxWebView.View )使用简单用例.在buld.gradle中添加依赖compile com. scwang. smartrefresh:SmartRefreshLayout:1. 0. 1compile com. scwang. smartrefresh:SmartRefreshHeader: 1. 0. T /如果使用了特殊的 He ader.在XML布局文件中添加SmartRefreshLayout.在Activity或者Fragment中添加

8、代码RefreshLayout refreshLayout = (RefreshLayout)findViewById(R. id. refreshLayout);r efreshLayout. setOnRefreshListener(new OnRefreshListener() Overridepublic void onRefresh(RefreshLayout refreshlayout) refreshlayout, finishRefresh(2000););refreshLayout. setOnLoadmoreListener(new OnLoadmoreListener()

9、 Overridepublic void onLoadmore(SmartRefreshLayout refreshlayout) refreshlayout. finishLoadmore(2000););使用指定的Header和FooterL方法一全局设置设置全局的Header构建器SmartRefreshLayout. setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreat er () Overridepublic RefreshHeader createRefreshHeader(Context context, Ref

10、reshLayout layout) return new ClassicsHeader (context);指定为经典 Header,默认是 贝塞 尔雷达Header);设置全局的Footer构建器SmartRefreshLayout. setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreat er () Overridepublic RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) return new ClassicsFooter

11、 (context);指定为经典 Footer,默认是 Ball PulseFooter);注意:方法一设置的Header和Footer的优先级是最低的,如果同时还使用了方法二、三,将会被其他方法取代2.方法二XML布局文件指定!一srlEnablePreviewInEditMode可以开启和关闭预览功能一!一FixedBehind可以让Header固定在内容的背后,下拉的时候效果同微信浏览器的 效果一注意:方法二XML设置的Header和Footer的优先级是中等的,会被方法三覆盖。而且使用本方法的时候,Android Studio会有预览效果,如下列图: 700正在刷新JUHB9&MHad

12、&fOFM let ff冲万密 *防1 中配.在霜襄”用将物的HuhUhi4特用配眄而用丹帕可以使用 . 一 *7|点;. _1可惧在AndmdShJde小的传位sr 口网员效W2优先5M8千【全葡中41自足子C lnvaCadt?!ccontMw 3ng wnitrlfefiesh heWei ClassiciHeadet android layoutpnrcnlnndr oid!ayout.heignt=nipoonient/“/torn 3cwimg umai ftelmh Smai 惘 eheshlzy wle上拉加式更多不过不用担忧,只是预览效果,运行的时候只有下拉才会出现3.方法三

13、Java代码设置final RefreshLayout refreshLayout = (RefreshLayout) findViewById(R. id. smartLayo ut); 设置 Header 为 Material refreshLayout. setRefreshHeader (new MaterialHe ader (this). setShowBezierWave (true) ;/设置 Footer 为 球月永7中 refreshLayout. setRe freshFooter(new BallPulseFooter(this). setSpinnerStyle(Sp

14、innerStyle. Scale);属性 Attributes名称格式描述srlPrimaryColorcolor主题颜色srlAccentColorcolor强调颜色srlReboundDurationinteger释放后回弹动画时长srlHeaderHeightdimensionHeader的标准高度srlFooterHeightdimensionFooter的标准高度srlDragRatefloat显示拖动高度/真实拖动高度(默认(srlHeaderMaxDragRatefloatHeader最大拖动高度/Header标准高srlFooterMaxDragRatefloatFooter

15、最大拖动高度/Footer标准高srlEnableRefreshboolean是否开启下拉刷新功能(默认true)srlEnableLoadmoreboolean是否开启加上拉加载功能(默认truesrlEnableHeaderTranslationContentboolean拖动Header的时候是否同时拖动内考U M LRefresh Layout通过SmartRefreshLayout框架,你可以在一个稳定强大的下拉布局中实现自 己工程需求的Header ,不用去关心滑动事件处理,不用关心子控件的回弹和 滚动边界,只需关注自己真正的工程需求Header的样子和动画。特点这时你会问:网上其

16、他的开源下拉控件一样的可以自定义Header和 Footer z SmartRefreshLayout和它们比起来有什么优势?变换方式 Translate平行移动特点:最常见,HeaderView高度不会改变,名称格式描述srlEnableFooterTranslationContentboolean拖动Footer的时候是否同时拖动内军srlEnablePreviewInEditModeboolean是否在编辑模式时显示预览效果(默srlDisableContentWhenRefreshboolean是否在刷新的时候禁止内容的一切手srlDisableContentWhenLoadingbo

17、olean是否在加载的时候禁止内容的一切手方法Method名称格式描述setDragRatefloat显示拖动高度/真实拖后 果)setHeaderMaxDragRatefloatHeader最大拖动高度/卜 要求 =1)setFooterMaxDragRatefloatFooter最大拖动高度/F 要求二1)setEnableRefreshboolean是否开启下拉刷新功能setEnab1eLoadmoreboolean是否开启加上拉加载功setEnableHeaderTranslationContentboolean拖动Header的时候是W true)setEnableFooterTra

18、nslationContentboolean拖动Footer的时候是M true)setEnableAutoLoadmoreboolean是否监听列表滚动到底setDisableContentWhenRefreshboolean是否在刷新的时候禁止 false)名称格式描述setDisableContentWhenLoadingboolean是否在加载的时候禁止 false)setReboundlnterpolatorInterpolator设置回弹动画的插值器setRefreshHeaderRefreshHeader设置指定的HeadersetRefreshFooterRefreshFoot

19、er设置指定的FootersetOnRefreshListenerOnRefreshListener设置刷新监听器setOnLoadmoreLi stenerOnLoadmoreLi stener设置加载监听器setOnRefreshLoadmoreListenerOnRefreshLoadmoreListener同时设置上面两个监听setOnMultiPurposeListenerOnMultiPurposeListener设置多功能监听器setLoadmoreFinishedboolean设置全部数据加载完成finishRefresh(int delayed)完成刷新,结束刷新动finis

20、hLoadmore(int delayed)完成加载,结束加载动名称格式描述getRefreshHeaderRefreshHeader获取HeadergetRefreshFooterRefreshFooter获取FootergetStateRefreshState获取当前状态isRefreshingboolean是否正在刷新isLoadingboolean是否正在加载autoRefresh(int delayed)触发自动刷新autoLoadmore(int delayed)触发自动加载 Scale拉伸形变特点:在下拉和上弹(HeaderView高度改变) FixedFront时候,会自动触发

21、OnDraw事件定在前面特点:不会上下移动,HeaderView高 FixedBehind FixedBehind度不会改变定在后面特点:不会上下移动,HeaderView高度不会改变(类似微信浏览器效果)Screen全屏幕特点:定在前面,尺寸充满整个布局SmartRefreshLayout的Header和Footer都有多种变换方式,适应不同风格的Header和Footer,下面是不同变换方式Header的DemoFixedBehind定在后面和Scale拉伸形变e微博列表r 弹出圆圈r下拉可以刷新e74 11:S3Photos blowingFrederik HansenDenmarkNy

22、borg内容不偏移内容跟随偏移Steffen Norgaard Andersen Locem Ipsum dolor sit amet. connect eur adipiscing dit sed do eiusmod temper *nddi-dunt ut labore et dlore magna abqua. Ut enim ad meniam. sed doetusmod quisrud exratation橙色主IS更改为横电红色主题更改为红0绿色主题Screen全屏幕和Translate平行移动r全屏水波/HO关注 84 | Ifltt 62这个人很,什么也没网下绿色主M 更/

23、为候色主H-色内日不偏移下拉的时候列表内容停X在鼻仙不幼内给随偏移下拉的时候列&内8雄附向下偏移&色主BI更改为懵色主殿色红色主H改为fi色主窟色丑色主题2为通色主箱震色2144发布动将Steffen Norgaard Andersen lorm ipsum dckx sd wnet.C0H$cteur .dQ2M eM. sed HanrwlU/4i tnt独立事件Header和Footer可以独立的处理手指滑动事件来为动画提供操作指令,也可 以使用Refresh Layout的核心接口来完成一些不寻常的操作指令。下面的打 砖块Header中,Header可以独立的使用滑动事件来为游戏挡板提

24、供指令, 并同时可以调用核心接口来通知RefreshLayout上下滚动列表橙色主题更改为攒色主频颜色橙色主题正改为出色主翅颜色红色主题更改为红色主通颜色绿色主题更改为绿色主题颜色蓝色主题更改为蓝色主髓颜色红色主题更改为红色主题颜色绿色主题更改为绿色主题颜色蓝色主题更改为蓝色主题颜色智能智能是什么玩意?有什么用?智能主要表达SmartRefreshLayout对未知布局的自动识别上,这样可以让我们更高效的实现我们所需的功能,也可以实现 一些非寻常的功能。下面通过自定义Header和嵌套Layout作为内容来解 释 SmartRefreshLayout 的智能之处。,定义 Header我们来看这

25、一下这个伪代码例子: 在Android Studio中的预览效果图 700e XMLEI正在刷新二三座3小,.厂_岬二一I. :苍霜襄使用倩剂的Huhuhi吹者恃导HE的疥聊切帽可修使用 . -*7 附liS:,小 1电想在An由odSnj&Q小的助丘督口地贡达9?优先国禺不卜全国ItU自足石子(4nvaCode|com ftewang smnrfrWrh fooler la wlc5r nofcr find(otdlajfoutw)dthsmu!choarenf arKlrpicllayoufe上拉加我更篓比照代码和我们预想的一样,那我们来对代码做一些改动,ClassicsHeader换成一个简单的TextView ,看看会发生什么?TextViewandroid: layout_width=,/niatch_parent/zandroid: layout_height=,z100dp,zandroid:gravity=center”and

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论