1. 程式人生 > >Android使用DrawerLayout仿qq6.6版本側滑效果

Android使用DrawerLayout仿qq6.6版本側滑效果

一講到側滑選單,我相信大家都會想到一個開源控制元件SlidingMenu,在google還沒有出來DrawerLayout的時候幾乎都是使用Slidingmenu來實現側滑效果,可以說是效果很不錯,自從google出了Drawerlayout以後很多公司就使用了Drawerlayout比如 滴滴打車等等。那麼今天我們利用drawerlayout來實現qq6.6最新的側滑效果。首先來看看Drawerlayout預設的效果:


和目前最新版的qq的側滑還是不一樣的區別就是內容頁面沒有跟隨向右滑動,而是選單直接覆蓋在內容上,來看一張QQ的樣式圖


這樣大家可以看到區別了,其實我們只要在滑動左面選單的時候讓內容頁面跟隨滑動就行了,首先我們看看DrawerLayout有沒有給我們監聽滑動的監聽,哈哈,翻了一下原始碼我們找到了這個方法 onDrawerSize方法;只要實現setDrawerListener回撥就行了程式碼如下:

 drawer.setDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                //獲取螢幕的寬高
                WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
                Display display = manager.getDefaultDisplay();
                //設定右面的佈局位置  根據左面選單的right作為右面佈局的left   左面的right+螢幕的寬度(或者right的寬度這裡是相等的)為右面佈局的right
                right.layout(left.getRight(), 0, left.getRight() + display.getWidth(), display.getHeight());
            }
            @Override
            public void onDrawerOpened(View drawerView) {
                
            }
            @Override
            public void onDrawerClosed(View drawerView) {
                
            }
            @Override
            public void onDrawerStateChanged(int newState) {
                
            }
        });

然後在看看我們改變的效果吧: