【链接】Android智能下拉刷新框架-SmartRefreshLayout
http://blog.csdn.net/yunyu5120/article/details/74451961
使用SmartRefreshLayout控件,可实现最先进的几种牛逼的加载和刷新效果
最原始的效果:
<com.scwang.smartrefresh.layout.SmartRefreshLayout android:id="@+id/mRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> //加了这个,就是下拉刷新最初头部效果了 <com.scwang.smartrefresh.layout.header.ClassicsHeader android:layout_width="match_parent" android:layout_height="wrap_content" /> <RecyclerView android:id="@+id/mRecyclerView"
android:layout_width="match_parent" android:layout_height="match_parent" />
//这个是底部上拉加载的效果了, <com.scwang.smartrefresh.layout.footer.ClassicsFooter android:id="@+id/mClassicsFooter" android:layout_width="match_parent" android:layout_height="wrap_content" /> </com.scwang.smartrefresh.layout.SmartRefreshLayout>
代码实现:
private RefreshLayout refreshLayout; refreshLayout=(RefreshLayout)findViewById(R.id.mSwipeRefreshLayout); refreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshlayout) { //刷新 new Handler().postDelayed(new Runnable() { @Override public void run() { currpage = 1; //结束后停止刷新 refreshData(); } }, 100); refreshlayout.finishRefresh(1000); } }); refreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() { @Override public void onLoadmore(final RefreshLayout refreshlayout) { refreshlayout.finishLoadmore(1000); new Handler().postDelayed(new Runnable() { @Override public void run() { switch (status) { case 0: currpage++; new StartAsyncTask().execute("initPostInfo"); mAdapter.setNewData(mDetailList); mAdapter.loadMoreComplete(); break; case 1: currpage++; new StartAsyncTask().execute("initPostInfo"); mAdapter.setNewData(mDetailList); mAdapter.loadMoreEnd(); break; case 2: mAdapter.loadMoreFail(); break; } } }, 100); } });
如果头部和底部,不用这样的效果,可以去掉,然后自己设置想要的效果,如果项目没特别要求,这样的效果已经满足了大多数的功能需求了
也可以设置全局的效果
这样就可以实现整个项目的下拉效果
public class MyApp extends Application{ static {//static 代码段可以防止内存泄露 //设置全局的Header构建器 SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater() { @Override public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色 // return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.Translate);//平行移动 特点: 最常见,HeaderView高度不会改变, // return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.FixedBehind);//固定在后面 特点:不会上下移动,HeaderView高度不会改变(类似微信浏览器效果) // return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.FixedFront);//固定在前面 特点:不会上下移动,HeaderView高度不会改变 return new ClassicsHeader(context).setSpinnerStyle(SpinnerStyle.Scale);//拉伸形变 特点:在下拉和上弹(HeaderView高度改变)时候,会自动触发OnDraw事件 } }); //设置全局的Footer构建器 SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() { @Override public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) { //指定为经典Footer,默认是 BallPulseFooter // return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.Translate); // return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.FixedBehind); // return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.FixedFront); return new ClassicsFooter(context).setSpinnerStyle(SpinnerStyle.Scale); } }); } @Override public void onCreate() { super.onCreate(); } }
下面这个布局可以实现列表添加一个头部广告位,
<com.scwang.smartrefresh.layout.SmartRefreshLayout android:id="@+id/mRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" > <pl.droidsonroids.gif.GifImageView android:layout_width="match_parent" android:layout_height="150dp" android:scaleType="centerCrop" android:src="@mipmap/gif_header_repast"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:gravity="center" android:text="我就是boos要求加上的广告条啦"/> <android.support.v7.widget.RecyclerView android:id="@+id/mRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </com.scwang.smartrefresh.layout.SmartRefreshLayout>
相关推荐
本教程将深入探讨如何在RecyclerView中实现下拉刷新和上拉加载更多的功能,这对于创建动态、交互性强的App至关重要。 首先,我们需要理解RecyclerView的基本结构。RecyclerView由Adapter、LayoutManager和...
在Android开发中,`SwipeRefreshLayout`和`RecyclerView`是两个非常重要的组件,它们结合使用可以实现常见的下拉刷新和上拉加载更多的功能。这个自定义控件设计旨在提供一个高效且用户友好的滚动体验,特别是在处理...
通过以上步骤,你可以构建一个自定义的下拉刷新和上拉加载控件,它不仅可以满足基本需求,还可以根据项目特性进行定制。同时,利用开源库如"PullToRefreshAndPushToLoadView",可以大大减少开发时间,提高代码质量。...
在Android开发中,上拉加载和下拉刷新是常见的组件功能,用于提升用户体验,使得用户在滚动列表到顶部时能够方便地获取更多数据,而在滚动到底部时加载更多内容。本示例“Android自定义上拉加载下拉刷新控件”提供了...
5. **状态管理**:控件需要维护多种状态,包括初始状态、下拉刷新状态、上拉加载状态、刷新完成状态和加载完成状态等,以正确显示和隐藏相应的UI元素。 6. **兼容性**:为了能在各种Android设备和版本上运行,控件...
在Android应用开发中,下拉刷新(Pull to Refresh)和上拉加载更多(Load More)是常见的滚动视图增强功能,通常应用于RecyclerView、ListView等滚动组件。这些功能为用户提供了一个友好的界面,允许他们获取更多...
在Android开发中,`SwipeRefreshLayout`和`RecyclerView`是两个非常重要的组件,它们结合使用能够实现用户界面的下拉刷新和上拉加载更多功能。这两个组件在安卓5.0及更高版本中得到了广泛的应用,极大地提升了用户...
至此,我们已经实现了自定义的RecyclerView下拉刷新和加载更多的功能。当然,实际开发中可能还需要处理各种异常情况,例如网络错误、数据为空等,需要根据具体需求进行相应的错误处理和用户体验优化。在提供的博客...
然而,对于用户交互的提升,下拉刷新和上拉加载的功能变得越来越重要。本文将深入解析如何在ListView中实现这两种功能,帮助开发者提高应用的用户体验。 首先,我们来了解下拉刷新(Pull-to-Refresh)和上拉加载...
SwipeRefreshLayout结合RecyclerView实现下拉刷新和滑动加载更多 现在很多界面都是要求,下拉刷新,列表项目更多的时候,滑动加载更多,就像微信朋友圈一样,下拉时要刷新,向上滑动要实 现“加载更多”。 我也是...
在本教程中,我们将深入探讨如何实现一个通用的下拉刷新和上拉加载更多控件,它能适用于ListView、GridView、WebView以及RecyclerView等多种视图。 首先,让我们了解下拉刷新(Pull-to-Refresh)的概念。这个功能让...
在Android开发中,ListView是常用的数据展示控件,但原生的ListView并不支持下拉刷新和上拉加载更多的功能。为了实现这些高级特性,开发者通常需要进行自定义或者使用第三方库。本教程将探讨如何自定义ListView实现...
它支持多种下拉刷新效果和上拉加载更多效果,并且允许开发者自定义头部广告位。该组件适用于各种 Android 控件,如 ListView、RecyclerView 等。 项目的主要特性和功能 多种下拉刷新效果 新浪微博下拉刷新风格 ...
与下拉刷新不同,上拉加载并没有像`SwipeRefreshLayout`那样内置的控件支持,而是需要我们自己去监听`RecyclerView`的滚动事件。实现上拉加载更多的步骤如下: 1. 首先,我们需要一个变量来追踪当前列表是否处于...
该控件的核心是通过监听用户的滑动事件来触发下拉刷新和上拉加载更多的动作。在下拉刷新时,通常会显示一个动画,如刷新指示器,当数据更新完成后,动画消失,显示最新的数据。而在上拉加载更多时,用户滚动到列表...
它通常与RecyclerView结合使用,实现上拉加载更多功能。 2. SwipeRefreshLayout的使用: - 添加SwipeRefreshLayout:在XML布局中添加SwipeRefreshLayout,并包裹RecyclerView。 - 设置颜色动画:可以通过...
在Android开发中,下拉刷新和上拉加载是常见的功能,用于增强用户界面的交互性和数据的动态加载。本文将详细介绍如何使用自定义控件`PullRefreshViewGroup`实现这两种效果。 `PullRefreshViewGroup`是一个自定义的...
在Android开发中,ListView是常用的数据展示控件,但为了提供更好的用户体验,通常需要实现下拉刷新和上拉加载更多的功能。本主题将深入探讨如何自定义ListView实现这些特性,并介绍Google官方提供的...
综上所述,实现“android支持RecyclerView的上拉加载,下拉刷新控件”涉及到多个知识点,包括RecyclerView的基本使用、SwipeRefreshLayout的下拉刷新、自定义的上拉加载、第三方库的集成以及数据加载和性能优化策略。...
然而,随着用户交互体验的提升,下拉刷新和上拉加载功能成为移动应用的标准特性,这使得用户在浏览数据时能够便捷地获取最新或更多内容。"Android 封装了ListView及各种View的下拉刷新和上拉加载"这一主题,就是关于...