关于Android打造一款适用所有view的刷新和加载

        在开发一款应用的时候,通常会涉及到Listview、gridview、scrollview以及最新的recyclerview,有时数据过多,还会涉及到刷新和加载,此时就头痛了,怎么统一他们的风格呢,网上找的第三方并不能适配所有的视图,此时此款高大上的框架就诞生了。

首先看下效果:


ok,看完效果,看看如何实现的吧

如果需求符合如上界面,则直接可以compile即可,不需要修改源码

第一步:

compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.nineoldandroids:library:2.4.0'
compile 'cn.bingoogolapple:bga-refreshlayout:1.1.2@aar'
第二部:

<cn.bingoogolapple.refreshlayout.BGARefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/refresh"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
       ></ScrollView>
</cn.bingoogolapple.refreshlayout.BGARefreshLayout>

里面放任意view

第三步:

private void initRefreshLayout() {
    mRefreshLayout = (BGARefreshLayout) findViewById(R.id.refresh);
    // BGARefreshLayout设置代理
    mRefreshLayout.setDelegate(this);
    //美团风格
    /*BGAMeiTuanRefreshViewHolder refreshViewHolder = new BGAMeiTuanRefreshViewHolder(this, true);
    refreshViewHolder.setPullDownImageResource(R.mipmap.bga_refresh_mt_change_to_release_refresh_01); //下拉时候放大
    refreshViewHolder.setChangeToReleaseRefreshAnimResId(R.anim.bga_refresh_mt_change_to_release_refresh);//过度
    refreshViewHolder.setRefreshingAnimResId(R.anim.bga_refresh_mt_refreshing);   //loading*/

    //mook风格
   /* BGAMoocStyleRefreshViewHolder refreshViewHolder = new BGAMoocStyleRefreshViewHolder(this, true);
    refreshViewHolder.setOriginalImage(R.mipmap.ic_launcher);
    refreshViewHolder.setUltimateColor(R.color.colorPrimary);*/

   // 普通风格
   BGANormalRefreshViewHolder refreshViewHolder=new BGANormalRefreshViewHolder(this,true);
    // 为了增加下拉刷新头部和加载更多的通用性,提供了以下可选配置选项  -------------START
    // 设置正在加载更多时不显示加载更多控件
    //  mRefreshLayout.setIsShowLoadingMoreView(true);
    // 设置正在加载更多时的文本
  // refreshViewHolder.setLoadingMoreText("eee");
    // 设置整个加载更多控件的背景颜色资源id
   //refreshViewHolder.setLoadMoreBackgroundColorRes(R.color.srl_blue_bright);
    // 设置整个加载更多控件的背景drawable资源id
    //refreshViewHolder.setLoadMoreBackgroundDrawableRes(R.mipmap.ic_launcher);
    // 设置下拉刷新控件的背景颜色资源id
  //  refreshViewHolder.setRefreshViewBackgroundColorRes(R.color.colorPrimaryDark);
    // 设置下拉刷新控件的背景drawable资源id
  //  refreshViewHolder.setRefreshViewBackgroundDrawableRes(R.mipmap.bga_refresh_loading01);
    // 设置自定义头部视图(也可以不用设置)     参数1:自定义头部视图(例如广告位), 参数2:上拉加载更多是否可用
    //    mRefreshLayout.setCustomHeaderView(mBanner, false);
    // 可选配置  -------------END

    mRefreshLayout.setRefreshViewHolder(refreshViewHolder);
}

@Override
public void onBGARefreshLayoutBeginRefreshing(BGARefreshLayout bgaRefreshLayout) {

}

@Override
public boolean onBGARefreshLayoutBeginLoadingMore(BGARefreshLayout bgaRefreshLayout) {
    return true;
}


如想扩展性更高,自定义jar包中文件,可下载demo中库文件并修改

最后附上原版demo下载地址:

http://download.csdn.net/detail/qqyanjiang/9361667



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于SwipeRefreshLayout下拉刷新、上拉加载。支持所有的AbsListView、RecycleView 特点  在 layout 中使用,支持 AbsListView 所有的xml属性  支持自动下拉刷新,什么用呢?比如进入界面时,只需要调用 autoRefresh() 方法即可,同时下拉刷新回调函数将会被调用。  上拉加载支持自定义 View 或设置加载文字、动画  轻松设置 Adapter 空数据视图,默认为 TextView 支持更文字,也可自定义 View  对于简单的界面,如只有 ListView 可以继承 app 包中 Fragment 轻松搞定 效果图 使用 仔细看 listSelector 属性,效果见 sample <com.mylhyl.prlayout.SwipeRefreshListView xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:id="@ id/swipeRefresh"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:listSelector="@drawable/selector_list"     tools:context=".app.ListViewXmlFragment" /> 设置上拉加载,更多方法见 IFooterLayout         IFooterLayout footerLayout = swipeRefreshListView.getFooterLayout();         footerLayout.setFooterText("set自定义加载");         footerLayout.setIndeterminateDrawable(getResources().getDrawable(R.drawable.footer_progressbar)); 自定义adapter空数据视图         ImageView emptyView = new ImageView(getContext());         emptyView.setImageResource(R.mipmap.empty);         swipeRefreshGridView.setEmptyView(emptyView); 或         swipeRefreshListView.setEmptyText("数据呢?"); 使用Gradle构建时添加一下依赖即可: compile 'com.mylhyl:pullrefreshlayout:1.0.0' QQ交流群:435173211
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值