开发者使用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的实现方式。
没有支持Eclipse,建议还在用Eclipse的小伙伴都开始转Android Studio吧
latestVersion是指对应库的最新版本号,别再问我为什么找不到xxxxxxxlatestVersion了!
依赖{
编译' com.android.support:recyclerview-v7:latestVersion '
编译' com.android.support:appcompat-v7:latestVersion '
编译' cn.bingoogolapple:BGA-refreshlayout:latestVersion @ AAR '
}
注意:内容控件的高度请使用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>
//让活动或者片段实现BGARefreshLayoutDelegate接口
public class ModuleNameActivity 扩展 AppCompatActivity 实现了 BGARefreshLayout。BGARefreshLayoutDelegate {
private BGARefreshLayout mRefreshLayout;
@Override
保护 无效的 onCreate(Bundle savedInstanceState){
超级。的onCreate(savedInstanceState);
的setContentView(ř 。布局。 activity_moudlename);
initRefreshLayout();
}
private void initRefreshLayout(BGARefreshLayout refreshLayout){
mRefreshLayout =(BGARefreshLayout)findViewById(ř 。 ID 。 rl_modulename_refresh);
//为BGARefreshLayout设置代理
mRefreshLayout 。setDelegate(this);
//设置下拉刷新和上拉加载更多的风格参数1:应用程序上下文,参数2:是否具有上拉加载更多功能
BGARefreshViewHolder refreshViewHolder = new XXXImplRefreshViewHolder(this,true))
//设置下拉刷新和上拉加载更多的风格
mRefreshLayout 。setRefreshViewHolder(refreshViewHolder);
//为了增加下拉刷新头部和加载更多的通用性,提供了以下可选配置选项------------- START
//设置正在加载更多时不显示加载更多控件
// mRefreshLayout.setIsShowLoadingMoreView(false);
//设置正在加载更多时的文本
refreshViewHolder。setLoadingMoreText(loadingMoreText);
//设置整个加载更多控件的背景颜色资源id
refreshViewHolder。setLoadMoreBackgroundColorRes(loadMoreBackgroundColorRes);
//设置整个加载更多控件的背景drawable资源ID
refreshViewHolder。setLoadMoreBackgroundDrawableRes(loadMoreBackgroundDrawableRes);
//设置下拉刷新控件的背景颜色资源id
refreshViewHolder。setRefreshViewBackgroundColorRes(refreshViewBackgroundColorRes);
//设置下拉刷新控件的背景drawable资源id
refreshViewHolder 。setRefreshViewBackgroundDrawableRes(refreshViewBackgroundDrawableRes);
//设置自定义头部视图(也可以不用设置)参数1:自定义头部视图(例如广告位),参数2:上拉加载更多是否可用
mRefreshLayout 。setCustomHeaderView(mBanner,false);
//可选配置------------- END
}
@覆盖
公共 空隙 onBGARefreshLayoutBeginRefreshing(BGARefreshLayout refreshLayout){
//在这里加载最新数据
if(mIsNetworkEnabled){
//如果网络可用,则加载网络数据
new AsyncTask < Void,Void,Void >(){
@覆盖
保护 虚空 doInBackground(虚空 ...... PARAMS){
尝试 {
主题。睡眠(MainActivity 。 LOADING_DURATION);
} 捕获(InterruptedException的发送){
e 。的printStackTrace();
}
返回 null ;
}
@覆盖
保护 空隙 onPostExecute(空隙 避免){
//加载完毕后在UI线程结束下拉刷新
mRefreshLayout 。endRefreshing();
mDatas 。的addAll(0,DataEngine 。 loadNewData());
mAdapter 。setDatas(mDatas);
}
} 。执行();
} else {
//网络不可用,结束下拉刷新
Toast 。makeText(此,“网络不可用”,吐司。 LENGTH_SHORT)。显示();
mRefreshLayout 。endRefreshing();
}
}
@覆盖
公共 布尔 onBGARefreshLayoutBeginLoadingMore(BGARefreshLayout refreshLayout){
//在这里加载更多数据,或者更具产品需求实现上拉刷新也可以
if(mIsNetworkEnabled){
//如果网络可用,则异步加载网络数据,并返回true,显示正在加载更多
新的 AsyncTask < Void,Void,Void >(){
@覆盖
保护 虚空 doInBackground(虚空 ...... PARAMS){
尝试 {
主题。睡眠(MainActivity 。 LOADING_DURATION);
} 捕获(InterruptedException的发送){
e 。的printStackTrace();
}
返回 null ;
}
@覆盖
保护 空隙 onPostExecute(空隙 避免){
//加载完毕后在UI线程结束加载更多
mRefreshLayout 。endLoadingMore();
mAdapter 。addDatas(DataEngine 。 loadMoreData());
}
} 。执行();
返回 true ;
}
热门源码