package zy.xda.bisheng888.custom;
import android.support.design.widget.AppBarLayout;
/**
* 监听CollapsingToolbarLayout是折叠还是展开
*/
public abstract class AppBarLayoutStateChangeListener implements AppBarLayout.OnOffsetChangedListener{
public enum State{
EXPANDED,//展开
COLLAPSED,//折叠
INTERMEDIATE//中间状态
}
private State mCurrentState = State.INTERMEDIATE;
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (verticalOffset == 0) {
if (mCurrentState != State.EXPANDED) {
onStateChanged(appBarLayout, State.EXPANDED);
}
mCurrentState = State.EXPANDED;
} else if (Math.abs(verticalOffset) >= appBarLayout.getTotalScrollRange()) {
if (mCurrentState != State.COLLAPSED) {
onStateChanged(appBarLayout, State.COLLAPSED);
}
mCurrentState = State.COLLAPSED;
} else {
if (mCurrentState != State.INTERMEDIATE) {
onStateChanged(appBarLayout, State.INTERMEDIATE);
}
mCurrentState = State.INTERMEDIATE;
}
}
public abstract void onStateChanged(AppBarLayout appBarLayout, State state);
}
使用:
@BindView(R.id.abl_home)
AppBarLayout abl_home;
abl_home.addOnOffsetChangedListener(new AppBarLayoutStateChangeListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, AppBarLayoutStateChangeListener.State state) {
switch (state){
case EXPANDED: //展开
rl_home_notice.setVisibility(View.VISIBLE);
rl_home_notice.setAnimation(AnimationUtil.moveToViewLocation());
ll_top.setVisibility(View.GONE);
ll_top.setAnimation(AnimationUtil.moveToViewBottom());
break;
case COLLAPSED: //折叠
rl_home_notice.setVisibility(View.GONE);
rl_home_notice.setAnimation(AnimationUtil.moveToViewBottom());
ll_top.setVisibility(View.VISIBLE);
ll_top.setAnimation(AnimationUtil.moveToViewLocation());
break;
case INTERMEDIATE: //中间状态
rl_home_notice.setVisibility(View.VISIBLE);
rl_home_notice.setAnimation(AnimationUtil.moveToViewLocation());
ll_top.setVisibility(View.GONE);
ll_top.setAnimation(AnimationUtil.moveToViewBottom());
break;
}
}
});
实现效果,监听CollapsingToolbarLayout折叠或展开时,显示隐藏对应的布局:
![](https://i-blog.csdnimg.cn/blog_migrate/2a88db0991bcd48a80cea1d3b8bb8234.gif)
效果如上gif图,折叠状态显示自选/现货+搜索栏,否则显示公告中心+textswitch展示动态。