ActionBarDrawerToggle和ToolBar結合使用

首先來了解以下什麼是ActionBarDrawerToggle,說起ActionBarDrawerToggle,必須還要提起一個控件--DrawerLayout。

那DrawerLayout又是什麼呢?看下圖所示:


如圖所示,當手指從屏幕左側向右滑動時,會有一個Layout佈局從左側滑出,DrawerLayout就是一個實現這個功能的UI控件,但是用腳後跟想一下也能猜到,對於DrawerLayout應該有個事件的監聽,比如但佈局完成滑出、佈局隱藏或者佈局正在滑動的時候都會有一個回調的監聽事件,而ActionBarDrawerToggle就是DrawerLayout事件的監聽器。

ActionBarDrawerToggle有3個方法可以被複寫,分別用來實現DrawerLayout打開,關閉,滑動的事件監聽:

onDrawerOpened DrawerLayout滑出時調用

onDrawerClosed DrawerLayout關閉時調用

onDrawerSlide DrawerLayout滑時調用


接下來看下代碼中如何使用ActionBarDrawerToggle:

DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout);
        ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(getActivity(),
                drawerLayout, toolBar, R.string.drawer_open, R.string.drawer_close){
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
                    mUserLearnedDrawer = true;
                    saveToPreferences(getActivity(), KEY_USER_LEARNED_DWARER, mUserLearnedDrawer + "");
                }
                getActivity().invalidateOptionsMenu();
            }
 
            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                getActivity().invalidateOptionsMenu();
            }
 
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                if (slideOffset < 0.6) {
                    toolBar.setAlpha(1 - slideOffset);
                }
            }
        };
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章