Android在V4包中提供了DrawerLayout佈局來實現側邊欄的效果,代替了以前老是用第三方庫實現的方法。html
關於DrawerLayout網上的介紹也不少,今天咱們來實現一個基於DrawerLayout實現的Demo:java
框架結構:android
內容區域是ViewPager,裏邊包含Fragment,經過FragmentPageAdapter來與ViewPager關聯。app
側邊欄咱們用的是LinearLayout佈局,固然,也能夠用ListView等其餘佈局代替。框架
實現過程當中遇到的一些問題記錄在了Android側邊欄DrawerLayout實現問題筆記,你們能夠參考下。ide
先上效果圖:工具
內容區域:佈局
該界面是一個只包含TextView的Fragment嵌套在ViewPager中能夠左右滑動,具體擴展能夠根據本身的需求。動畫
左側邊欄: 右側邊欄:this
左側邊欄呼出方式:
1.經過自帶的從左側滑出
2.經過DrawerLayout與ActionBar相關聯,由ActionBar左上角按鈕打開/隱藏
右側邊欄呼出方式:
默認的從右側滑出
項目結構:
這裏只介紹一些關鍵的文件:
主佈局文件activity_main.xml:
[html] view plain copy
DrawerLayout佈局結構:
第一層Viewpager爲主內容區域,位於Z軸最低端,被左右側邊欄呼出時覆蓋。
第二層include的LinearLayout爲左側邊欄
第三層LinearLayout爲右側邊欄
注意,側邊欄要實現如下屬性:
1.android:layout_width="320dp" 因爲側邊欄不須要覆蓋整個屏幕,Android文檔建議最大寬度不超過320dp
2.android:layout_gravity="start" 或者android:layout_gravity="end" 分別對應左右側邊欄
主Activity MainActivity.Java:
[java] view plain copy
ActionBarDrawerToggle類爲DrawerLayout側邊欄與ActionBar相關聯的工具類。
ActionBarDrawerToggle 的做用:
1.改變android.R.id.home返回圖標。
2.Drawer拉出、隱藏,帶有android.R.id.home動畫效果。
3.監聽Drawer拉出、隱藏。
綁定的時候須要調用DrawerLayout的setDrawerListener(ActionBarDrawerToggle對象)