首页

源码搜藏网

首页 > 安卓源码 > 功能分类 > 视图效果View Effects >

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

创建时间:2017-11-21 08:58  

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

开发者使用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 方法中初始化

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

一种上拉加载更多效果

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

目前存在的问题

效果图

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 ;
        } 

上一篇:Android开发中viewpager与视差页面一起,垂直滑动(或点击)和活
下一篇:android开发银行卡操作步骤视图

相关内容

热门推荐