状态栏3---ToolBar可折叠效果,添加监听

对比于上一篇文章http://blog.csdn.net/chazihong/article/details/74351963
想实现CollapsingToolbarLayout中的title,在整个展开时不显示title,在整体收缩状态时显示title。
这里写图片描述

对AppBarLayout控件进行监听,分为三种状态进行监听。
EXPANDED, // 展开
COLLAPSED, // 折叠
IDLE // 其他

首先,创建AppBarStateChangedListener抽象类继承AppBarLayout.OnOffsetChangedListener,并重写onOffsetChanged方法。

package com.example.administrator.coordinatordemo;

import android.support.design.widget.AppBarLayout;

/**
 * Created by Administrator on 2017/7/4.
 */

public abstract class AppBarStateChangedListener implements AppBarLayout.OnOffsetChangedListener {

    // AppBar状态
    public enum State {
        EXPANDED,     // 展开
        COLLAPSED,    // 折叠
        IDLE          // 其他
    }

    private State mCurrentState = State.IDLE;

    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int i) {

        if (i == 0) {
            if (mCurrentState != State.EXPANDED) {
                onStateChanged(appBarLayout, State.EXPANDED);
            }
            mCurrentState = State.EXPANDED;
        } else if (Math.abs(i) >= appBarLayout.getTotalScrollRange()) {
            if (mCurrentState != State.COLLAPSED) {
                onStateChanged(appBarLayout, State.COLLAPSED);
            }
            mCurrentState = State.COLLAPSED;
        } else {
            if (mCurrentState != State.IDLE) {
                onStateChanged(appBarLayout, State.IDLE);
            }
            mCurrentState = State.IDLE;
        }

    }

    public abstract void onStateChanged(AppBarLayout appBarLayout, State state);
}

在MainActivity.java中,给AppBarLayout控件添加监听。

     appBarLayout.addOnOffsetChangedListener(new AppBarStateChangedListener() {

            @Override
            public void onStateChanged(AppBarLayout appBarLayout, State state) {
                // 展开状态
                if (state == State.EXPANDED) {
                    toolbarLayout.setTitle("");
                } else if (state == State.COLLAPSED) {
                    toolbarLayout.setTitle("JacksonYi");
                } else {
                    toolbarLayout.setTitle("");
                }
            }
        });

在状态改变时,进行响应的逻辑处理。这里就是简单的处理title是否显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值