Android多种下拉刷新效果,上拉加载更多,可配置自定义头部广告

时间:2017-11-21 08:58 来源:互联网 作者:源码搜藏收藏

  • 源码类别:视图效果View Effects
  • 源码大小:未知
  • 编码格式:gbk,utf8,不限
  • 运行环境:Android studio
  • 广告推荐

开发者使用BGARefreshLayout-Android可以对各种控件实现多种下拉刷新效果,上拉加载更多以及配置自定义头部广告位

测试BGARefreshLayout与Activity,Fragment,ViewPager的各种嵌套的Demo

常见问题 - 加载更多视图无法显示

1.BGARefreshLayout的直接子控件的高度请使用android:layout_height =“0dp”和android:layout_weight =“1”

< CN .bingoogolapple.refreshlayout.BGARefreshLayout 的xmlns 机器人 =  http://schemas.android.com/apk/res/android 
    机器人ID =  @ + ID / rl_modulename_refresh 
    机器人layout_width =  match_parent 
    机器人layout_height =  match_parent  >

    <! - BGARefreshLayout的直接子控件- > 
    < Anyview的
        机器人layout_width = match_parent 
        机器人layout_height = 0dp 
        机器人layout_weight = 1  />
</ cn .bingoogolapple.refreshlayout.BGARefreshLayout>

2.如果是在Fragment中使用BGARefreshLayout

请在 onCreateView 方法中初始化 BGARefreshLayout,不要在 onActivityCreated 方法中初始化

目前已经实现了四种下拉刷新效果:

  • 新浪微博下拉刷新风格(可设置各种状态是的文本,可设置整个刷新头部的背景)
  • 慕课网下拉刷新风格(可设置其中的标志和颜色成自己公司的风格,可设置整个刷新头部的背景)
  • 美团下拉刷新风格(可设置其中的图片和动画成自己公司的风格,可设置整个刷新头部的背景)
  • 类似qq好友列表黏性下拉刷新风格(三阶贝塞尔曲线没怎么调好,刚开始下拉时效果不太好,可设置整个刷新头部的背景)

一种上拉加载更多效果

  • 新浪微博上拉加载更多(可设置背景,状态文本)

开发者也可以继承BGARefreshViewHolder这个抽象类,实现相应地抽象方法做出各式各样的下拉刷新效果【例如实现handleScale(float scale,int moveYDistance)方法,根据scale实现各种下拉刷新动画】和上拉加载更多特效,可参考BGAMoocStyleRefreshViewHolder,BGANormalRefreshViewHolder,BGAStickinessRefreshViewHolder,BGAMeiTuanRefreshViewHolder的实现方式。

目前存在的问题

  • 当配置自定义头部广告位可滚动时,内容区域和广告位还不能平滑过度。
  • 当BGAStickyNavLayout中嵌套RecyclerView或AbsListView,并且第一页的最后一个项目刚好在最底部时,加载更多视图会悬浮在最后一个项目上面
  • 正在刷新或加载更多时,用户上下滑动不会让下拉刷新视图和加载更多视图跟着滑动

效果图

bga_refreshlayout1 bga_refreshlayout2 bga_refreshlayout3 bga_refreshlayout4 bga_refreshlayout5 bga_refreshlayout6

基本使用

1.添加Gradle依赖

没有支持Eclipse,建议还在用Eclipse的小伙伴都开始转Android Studio吧

latestVersion是指对应库的最新版本号,别再问我为什么找不到xxxxxxxlatestVersion了!

依赖{
    编译' com.android.support:recyclerview-v7:latestVersion ' 
    编译' com.android.support:appcompat-v7:latestVersion ' 
    编译' cn.bingoogolapple:BGA-refreshlayout:latestVersion @ AAR ' 
}

2.在布局文件中添加BGARefreshLayout

注意:内容控件的高度请使用android:layout_height =“0dp”和android:layout_weight =“1”

< CN .bingoogolapple.refreshlayout.BGARefreshLayout 的xmlns 机器人 =  http://schemas.android.com/apk/res/android 
    机器人ID =  @ + ID / rl_modulename_refresh 
    机器人layout_width =  match_parent 
    机器人layout_height =  match_parent  >

    <! -内容控件- > 
    < Anyview的
        机器人layout_width = match_parent 
        机器人layout_height = 0dp 
        机器人layout_weight = 1  />
</ cn .bingoogolapple.refreshlayout.BGARefreshLayout>

3.在活动或片段中配置BGARefreshLayout

//让活动或者片段实现BGARefreshLayoutDelegate接口
public  class  ModuleNameActivity  扩展 AppCompatActivity  实现了 BGARefreshLayoutBGARefreshLayoutDelegate {
     private  BGARefreshLayout mRefreshLayout;

    @Override 
    保护 无效的 onCreateBundle  savedInstanceState){
         超级的onCreate(savedInstanceState);
        的setContentView(ř 布局 activity_moudlename);

        initRefreshLayout();
    }

    private  void  initRefreshLayoutBGARefreshLayout  refreshLayout){
        mRefreshLayout =BGARefreshLayout)findViewById(ř  ID  rl_modulename_refresh);
        //为BGARefreshLayout设置代理 
        mRefreshLayout setDelegate(this);
        //设置下拉刷新和上拉加载更多的风格参数1:应用程序上下文,参数2:是否具有上拉加载更多功能
        BGARefreshViewHolder refreshViewHolder =  new  XXXImplRefreshViewHolderthistrue))
         //设置下拉刷新和上拉加载更多的风格 
        mRefreshLayout setRefreshViewHolder(refreshViewHolder);


        //为了增加下拉刷新头部和加载更多的通用性,提供了以下可选配置选项------------- START 
        //设置正在加载更多时不显示加载更多控件
        // mRefreshLayout.setIsShowLoadingMoreView(false); 
        //设置正在加载更多时的文本 
        refreshViewHoldersetLoadingMoreText(loadingMoreText);
        //设置整个加载更多控件的背景颜色资源id 
        refreshViewHoldersetLoadMoreBackgroundColorRes(loadMoreBackgroundColorRes);
        //设置整个加载更多控件的背景drawable资源ID 
        refreshViewHoldersetLoadMoreBackgroundDrawableRes(loadMoreBackgroundDrawableRes);
        //设置下拉刷新控件的背景颜色资源id 
        refreshViewHoldersetRefreshViewBackgroundColorRes(refreshViewBackgroundColorRes);
        //设置下拉刷新控件的背景drawable资源id 
        refreshViewHolder setRefreshViewBackgroundDrawableRes(refreshViewBackgroundDrawableRes);
        //设置自定义头部视图(也可以不用设置)参数1:自定义头部视图(例如广告位),参数2:上拉加载更多是否可用 
        mRefreshLayout setCustomHeaderView(mBanner,false);
        //可选配置------------- END
    }

    @覆盖
    公共 空隙 onBGARefreshLayoutBeginRefreshingBGARefreshLayout  refreshLayout){
         //在这里加载最新数据

        if(mIsNetworkEnabled){
             //如果网络可用,则加载网络数据
            new  AsyncTask < VoidVoidVoid >(){

                @覆盖
                保护 虚空 doInBackground虚空 ...... PARAMS){
                     尝试 {
                         主题睡眠(MainActivity  LOADING_DURATION);
                    } 捕获InterruptedException的发送){
                        e 的printStackTrace();
                    }
                    返回 null ;
                }

                @覆盖
                保护 空隙 onPostExecute空隙 避免){
                     //加载完毕后在UI线程结束下拉刷新 
                    mRefreshLayout endRefreshing();
                    mDatas 的addAll(0DataEngine  loadNewData());
                    mAdapter setDatas(mDatas);
                }
            } 执行();
        } else {
             //网络不可用,结束下拉刷新
            Toast makeText(网络不可用吐司 LENGTH_SHORT显示();
            mRefreshLayout endRefreshing();
        }
    }

    @覆盖
    公共 布尔 onBGARefreshLayoutBeginLoadingMoreBGARefreshLayout  refreshLayout){
         //在这里加载更多数据,或者更具产品需求实现上拉刷新也可以

        if(mIsNetworkEnabled){
             //如果网络可用,则异步加载网络数据,并返回true,显示正在加载更多
            新的 AsyncTask < VoidVoidVoid >(){

                @覆盖
                保护 虚空 doInBackground虚空 ...... PARAMS){
                     尝试 {
                         主题睡眠(MainActivity  LOADING_DURATION);
                    } 捕获InterruptedException的发送){
                        e 的printStackTrace();
                    }
                    返回 null ;
                }

                @覆盖
                保护 空隙 onPostExecute空隙 避免){
                     //加载完毕后在UI线程结束加载更多 
                    mRefreshLayout endLoadingMore();
                    mAdapter addDatas(DataEngine  loadMoreData());
                }
            } 执行();

            返回 true ;
        } 

本站资源仅限于学习研究,严禁从事商业或者非法活动! 源码搜藏网所有源码来自互联网转载与用户上传分享,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

视图效果View Effects下载排行

最新文章