一講到側(cè)滑菜單,我相信大家都會(huì)想到一個(gè)開源控件SlidingMenu,在google還沒有出來DrawerLayout的時(shí)候幾乎都是使用Slidingmenu來實(shí)現(xiàn)側(cè)滑效果,可以說是效果很不錯(cuò),自從google出了Drawerlayout以后很多公司就使用了Drawerlayout比如 滴滴打車等等。那么今天我們利用drawerlayout來實(shí)現(xiàn)qq6.6最新的側(cè)滑效果。首先來看看Drawerlayout默認(rèn)的效果:

和目前最新版的qq的側(cè)滑還是不一樣的區(qū)別就是內(nèi)容頁面沒有跟隨向右滑動(dòng),而是菜單直接覆蓋在內(nèi)容上,來看一張QQ的樣式圖

這樣大家可以看到區(qū)別了,其實(shí)我們只要在滑動(dòng)左面菜單的時(shí)候讓內(nèi)容頁面跟隨滑動(dòng)就行了,首先我們看看DrawerLayout有沒有給我們監(jiān)聽滑動(dòng)的監(jiān)聽,哈哈,翻了一下源碼我們找到了這個(gè)方法 onDrawerSize方法;只要實(shí)現(xiàn)setDrawerListener回調(diào)就行了代碼如下:
drawer.setDrawerListener(new DrawerLayout.DrawerListener() { @Override public void onDrawerSlide(View drawerView, float slideOffset) { //獲取屏幕的寬高 WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); //設(shè)置右面的布局位置 根據(jù)左面菜單的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) { } }); 然后在看看我們改變的效果吧:

是不是有那么點(diǎn)意思了呢,哈哈,今天就開到這里了。
最后附上源碼:https://github.com/dalong982242260/DrawLayoutMenu
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選