android下拉刷新上拉加载

    xiaoxiao2021-04-04  46

    https://github.com/miomin/SHSwipeRefreshLayout

    SHSwipeRefreshLayout by miomin

    支持下拉刷新和上拉加载更多,支持自定义HeaderView和FooterView,支持RecyclerView、ScrollView嵌套滚动,支持所有Layout,支持自定义动画


    提示

    如使用其它控件时遇到滑动冲突,请参考源码中ShareScrollView、SHListView的实现自行解决,只需让该控件实现NestedScrollingChild接口即可。


    简介

    使用方法与Google的SwipeRefreshLayout一致,采用内包裹的方式支持下拉刷新和上拉加载更多支持通过Resource ID或View自定义HeaderView和FooterView的样式通过NestedScrolling支持RecyclerView和ScrollView的嵌套滚动不收影响支持所有Layout、View支持在回调中设置自定义动画

    依赖

    Step1:在工程build.gradle中添加如下maven仓库 allprojects { repositories { jcenter() // 添加这一行即可 maven { url "https://raw.githubusercontent.com/miomin/mvn-repo-ione/master" } } } Step2:在Module的build.gradle或者全局添加如下依赖 compile 'com.miomin:shswiperefreshlayout:1.3.0'

    How to use

    可参考sample中的示例

    In XML

    <com.scu.miomin.shswiperefresh.core.SHSwipeRefreshLayout android:id="@+id/swipeRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:load_text="加载更多" app:progress_bar_color="@color/colorPrimary" app:refresh_text="下拉刷新" app:guidance_text_color="@color/colorPrimary" app:guidance_view_bg_color="@color/transparent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/> </com.scu.miomin.shswiperefresh.core.SHSwipeRefreshLayout>

    如需使用ScrollView,请使用ShareScrollView

    <com.scu.miomin.shswiperefresh.core.SHSwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.scu.miomin.shswiperefresh.view.ShareScrollView android:layout_width="match_parent" android:layout_height="match_parent"> </com.scu.miomin.shswiperefresh.view.ShareScrollView> </com.scu.miomin.shswiperefresh.core.SHSwipeRefreshLayout>

    如需使用ListView,请使用SHListView

    <com.scu.miomin.shswiperefresh.core.SHSwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.scu.miomin.shswiperefresh.view.SHListView android:layout_width="match_parent" android:layout_height="match_parent" /> </com.scu.miomin.shswiperefresh.view.ShareScrollView> </com.scu.miomin.shswiperefresh.core.SHSwipeRefreshLayout>

    其它属性

    Guidance视图背景颜色 : <attr name="guidance_view_bg_color" format="color|reference" /> Guidance视图中文字颜色 : <attr name="guidance_text_color" format="color|reference" /> 进度条颜色 : <attr name="progress_bar_color" format="color|reference" /> 进度条背景色 : <attr name="progress_bg_color" format="color|reference" /> 下拉刷新文字描述 : <attr name="refresh_text" format="string|reference" /> 上拉加载文字描述 : <attr name="load_text" format="string|reference" /> 下拉刷新是否可用 : <attr name="pull_refresh_enable" format="boolean" /> 上拉加载是否可用 : <attr name="loadmore_enable" format="boolean" />

    如何自定义HeaderView、FooterView

    如果不设置,则使用默认的ProgressBar

    可通过如下代码设置 :

    设置Resource ID swipeRefreshLayout.setFooterView(R.layout.refresh_view); 设置View swipeRefreshLayout.setFooterView(myview);

    事件监听

    swipeRefreshLayout.setOnRefreshListener(new SHSwipeRefreshLayout.SHSOnRefreshListener() { @Override public void onRefresh() { swipeRefreshLayout.postDelayed(new Runnable() { @Override public void run() { swipeRefreshLayout.finishRefresh(); Toast.makeText(MainActivity.this, "刷新完成", Toast.LENGTH_SHORT).show(); } }, 1600); } @Override public void onLoading() { swipeRefreshLayout.postDelayed(new Runnable() { @Override public void run() { swipeRefreshLayout.finishLoadmore(); Toast.makeText(MainActivity.this, "加载完成", Toast.LENGTH_SHORT).show(); } }, 1600); } /** * 监听下拉刷新过程中的状态改变 * @param percent 当前下拉距离的百分比(0-1) * @param state 分三种状态{NOT_OVER_TRIGGER_POINT:还未到触发下拉刷新的距离;OVER_TRIGGER_POINT:已经到触发下拉刷新的距离;START:正在下拉刷新} */ @Override public void onRefreshPulStateChange(float percent, int state) { switch (state) { case SHSwipeRefreshLayout.NOT_OVER_TRIGGER_POINT: swipeRefreshLayout.setLoaderViewText("下拉刷新"); break; case SHSwipeRefreshLayout.OVER_TRIGGER_POINT: swipeRefreshLayout.setLoaderViewText("松开刷新"); break; case SHSwipeRefreshLayout.START: swipeRefreshLayout.setLoaderViewText("正在刷新"); break; } } @Override public void onLoadmorePullStateChange(float percent, int state) { switch (state) { case SHSwipeRefreshLayout.NOT_OVER_TRIGGER_POINT: textView.setText("上拉加载"); break; case SHSwipeRefreshLayout.OVER_TRIGGER_POINT: textView.setText("松开加载"); break; case SHSwipeRefreshLayout.START: textView.setText("正在加载..."); break; } } }); } 可以在onRefreshPulStateChange和onLoadmorePullStateChange中,根据参数值来做一些自定义动画

    其他接口

    结束下拉刷新 swipeRefreshLayout.finishRefresh(); 结束上拉加载 swipeRefreshLayout.finishLoadmore();
    转载请注明原文地址: https://ju.6miu.com/read-666273.html

    最新回复(0)