CollapsingToolbarLayout滑動狀態(tài)監(jiān)聽

請參照來源鏈接


最近在做項目中遇到一個滑動需要改變狀態(tài)欄的back圖標
如果只是必全局那就簡單了

GIF.gif
<!--<item name="android:homeAsUpIndicator">@drawable/bt_title_back_selector</item>-->

直接在Application引用的Style里加一句這個就可以了
可需求又不能改全部的,并且項目中用到的是 android.support.v7.widget.Toolbar在調一單個Activity布局也不行。設置樣式也行不通。
后面就直接在代碼里設置了
toolbar.setNavigationIcon(R.drawable.bt_title_back_selector);

然后就是監(jiān)聽滑動改變back icon了


public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffsetChangedListener {
    public enum State {
        EXPANDED,
        COLLAPSED,
        IDLE
    }

    private State mCurrentState = State.IDLE;

    @Override
    public final 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);
}

上面代碼直接復制使用,也是從別處拷過來的,驗證可以使用

appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
            @Override
            public void onStateChanged(AppBarLayout appBarLayout, State state) {
                if( state == State.EXPANDED ) {

                    //展開狀態(tài)
                    toolbar.setNavigationIcon(R.drawable.bt_title_back_selector);

                }else if(state == State.COLLAPSED){
                    //折疊狀態(tài)
                    toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
                }else {
                    //中間狀態(tài)
                    toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);

                }
            }
        });

然后就是對android.support.design.widget.AppBarLayout這個控件設置監(jiān)聽了
因為android.support.design.widget.CollapsingToolbarLayout外層是 android.support.design.widget.AppBarLayout所以設置的監(jiān)聽是它了。然后在相應的監(jiān)聽里你可以為所欲為了。

上面代碼只是記錄,防以后工作中會使用到。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,040評論 25 709
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,874評論 2 45
  • 每個人都無法選擇自己的父母!這是命,無法更改的命運! 活了二十一年,確實也埋怨過!為何我沒有出生在一...
    su不語閱讀 2,051評論 0 0
  • 前些天跟閨蜜聊天,說起他家的財迷先生老陳。閨蜜看著婚后愈加發(fā)福的老陳,決定徹底斷絕飲料供應,結果老陳就偷著喝,可老...
    默醬閱讀 431評論 0 2
  • 我給你寫信 一筆一劃 描繪藏匿于冬季河流下的暗涌 我以一支鉛筆摩擦空白的歲月 日子消逝著 筆尖磨平 我把語言的灰燼...
    f3494c632b49閱讀 1,095評論 43 38

友情鏈接更多精彩內容