仿美团下拉刷新+上拉加载

下拉刷新的案例比比皆是,在这里分享一个比较强大的开源库,学习下如何使用这个库。

昨天已经做了一个简单的动画,今天把动画应用上来,仿美团下拉刷新这个效果是里面本来就有的效果,这里就简单的学习一下实现这种效果。

第一步:

创建工程

第二步:

添加Gradle依赖
compile ‘cn.bingoogolapple:bga-refreshlayout:1.1.6’

第三步:

在xml添加BGARefreshLayout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.zmj.meituanrefresh.MainActivity">

    <cn.bingoogolapple.refreshlayout.BGARefreshLayout
        android:id="@+id/rl_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!--注意:控件的高度请使用android:layout_height="0dp"和android:layout_weight="1"-->
        <ListView
            android:id="@+id/lv_my"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:overScrollMode="never"
            />

    </cn.bingoogolapple.refreshlayout.BGARefreshLayout>

</RelativeLayout>

第四步:

MainActivity中初始化控件及数据,这里只贴了部分代码,查看完整代码,请下载

     /**
     * 初始化上下拉刷新控件
     */
    private void initFresh() {
        mRefreshLayout.setDelegate(this);
        //true代表开启上拉加载更多
        BGAMeiTuanRefreshViewHolder meiTuanRefreshViewHolder = new BGAMeiTuanRefreshViewHolder(this, true);
        meiTuanRefreshViewHolder.setPullDownImageResource(R.mipmap.refresh_down);
        meiTuanRefreshViewHolder.setChangeToReleaseRefreshAnimResId(R.drawable.change_refresh);
        meiTuanRefreshViewHolder.setRefreshingAnimResId(R.drawable.refresh_refreshing);

        mRefreshLayout.setRefreshViewHolder(meiTuanRefreshViewHolder);
    }

第五步:

效果图

美团

DEMO下载

FadingActionBar 仿美团上拉背景渐变,默认背景透明,下拉bar完全隐藏  。开发者使用此依赖,只需要2个方法就可以实现美团外卖中上拉titlebar背景渐变,下拉titlebar隐藏效果。效果图:准备工作:1.注意actionbar的依赖库,目前仅支持import android.app.ActionBar;2.actionbar背景渐变需要监听headerview的位置,放在添加headerview后调用该方法     private void initScroll() {         //设置动态改变         mlistview.setOnScrollListener(new AbsListView.OnScrollListener() {             @Override             public void onScrollStateChanged(AbsListView view, int scrollState) {             }             @Override             public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {                 // [0]代表x坐标,location [1] 代表y坐标。                 int[] location = new int[2];                 // 实时设置actionbar透明度,监听header位置(必须是移除屏幕会产生负数的view)                 llheaderview.getLocationInWindow(location);                 helper.setActionBarAlpha(location[1] - XMSettings.getStatusBarHeight(mContext));                 Log.i("tag", "onScroll: "   (location[1] - XMSettings.getStatusBarHeight(mContext)));             }         });      }3.注意activity对应的theme添加属性<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">      <item name="android:windowActionBarOverlay">true</item>      <item name="android:windowContentOverlay">@null</item> </style>使用1.添加Gradle依赖dependencies {     compile 'com.github.ximencx.fadeactionbar:library:1.0.1'     }2.activity中获取actionbar对象,初始化XMFadeBarHelper类    private void initbar() {         //获取actionbar对象         mActionBar = getActionBar();         mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);         mActionBar.setCustomView(R.layout.ab_title);         /**          * actionbar辅助类          * parameter1:action对象          * parameter2:acitonbar背景          * parameter3:初始透明度          */         helper = new XMFadeBarHelper(mActionBar, getResources().getDrawable(R.drawable.bg_actionbar), 0) {             /**              * 设置需要隐藏view的透明度              * 注意:是否设置background的区别              *              * @param customView  actionbar布局对象              * @param alpha 回调的alpha              */             @Override             public void setViewAlpha(View customView, int alpha) {                 ButterKnife.findById(customView, R.id.tv_info).setAlpha(alpha);                 ButterKnife.findById(customView, R.id.rl_bg).getBackground().setAlpha(alpha);             }             /**              * 设置隐藏速度              * 默认返回actionbar布局的高度,当然也可以以其它view为参照物              * @param customView actionbar布局              * @return              */             @Override             public int setHeight(View customView) {                 return customView.getHeight();             }         };     }3.listview的监听中调用helper.setActionBarAlpha(),注意减去状态栏的高度    private void initScroll() {         //设置动态改变         mlistview.setOnScrollListener(new AbsListView.OnScrollListener() {             @Override             public void onScrollStateChanged(AbsListView view, int scrollState) {             }             @Override             public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {                 // [0]代表x坐标,location [1] 代表y坐标。                 int[] location = new int[2];                 // 实时设置actionbar透明度,监听header位置(必须是移除屏幕会产生负数的view)                 llheaderview.getLocationInWindow(location);                 helper.setActionBarAlpha(location[1] - XMSettings.getStatusBarHeight(mContext));                 Log.i("tag", "onScroll: "   (location[1] - XMSettings.getStatusBarHeight(mContext)));             }         });      }sample中使用到的第三方库:BGAAdapterBGARefreshLayout-Android
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值