Support V4 - DrawerLayout側(cè)滑控件

API地址:https://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html
官方教程地址:https://developer.android.com/training/implementing-navigation/nav-drawer.html#top

Android原生的側(cè)滑控件DrawerLayout:

image.png

Overview

image.png

簡單上手

  • 一般建議使用DrawerLayout做為Activity界面的根布局控件
  • 添加菜單:在DrawerLayout的子控件上添加Layout_gravity屬性
    • 如果需要添加左側(cè)菜單:將Layout_gravity的值改為left或者start
    • 如果需要添加右側(cè)菜單:將Layout_gravity的值改為right或者end

寫left或者start,顯示效果上沒有什么區(qū)別,start是推薦的寫法,Google認為這樣命名更為合理,類似fill_parent和match_parent的關(guān)系,寫right或者end也是同理; 在有DrawerLayout可以同時添加左側(cè)菜單和右側(cè)菜單

  • 添加Layout_gravity屬性的控件寬度推薦寫match_parent
image.png
2017-05-30 17_50_58.gif

幾個相關(guān)API

  • mDrawer.isDrawerOpen(GravityCompat.START):判斷左側(cè)菜單是否打開
  • mDrawer.closeDrawer(GravityCompat.START):關(guān)閉左側(cè)菜單
image.png
  • mDrawer.setDrawerLockMode():設(shè)置菜單的鎖定模式,一般不建議設(shè)置,具體看需求
    • LOCK_MODE_UNDEFINED:默認為不定義
    • LOCK_MODE_UNLOCKED:不鎖定
    • LOCK_MODE_LOCKED_CLOSED:鎖定為菜單關(guān)閉
    • LOCK_MODE_LOCKED_OPEN:鎖定為菜單打開
  • mDrawer.addDrawerListener()菜單滑動監(jiān)聽的回調(diào)
    • 兩個監(jiān)聽對象:DrawerListener和SimpleDrawerListener
      SimpleDrawerListener是DrawerListener的抽象實現(xiàn)類,DrawerListener強制重寫四個方法,SimpleDrawerListener可選擇重寫一個或多個方法,

    • 監(jiān)聽中的四個回調(diào)方法:

      • onDrawerSlide(View drawerView, float slideOffset):菜單在滑動的回調(diào)
      • onDrawerOpened(View drawerView):菜單打開的回調(diào)
      • onDrawerClosed(View drawerView) :菜單關(guān)閉的回調(diào)
      • onDrawerStateChanged(int newState):菜單狀態(tài)改變的回調(diào)

高級用法:

在DrawerLayout的監(jiān)聽回調(diào)onDrawerSlide(View drawerView, float slideOffset)中,有一個參數(shù)值得關(guān)注,滑動的偏移值slideOffset,這個值在0.0~1.0f之間變化,可以利用這個變化的值做一些比較有想象力的事:

  • 設(shè)置主布局隨菜單滑動而滑動
  • 設(shè)置菜單的深入淺出效果
  • 設(shè)置其它的顏色漸變效果
  • ......

在之前的文章:高仿Android QQ菜單,左側(cè)抽屜,底部導(dǎo)航, 已經(jīng)實現(xiàn)了部分效果,這里就不扯了:

DrawerLayout statusbar顏色問題:

修改前和修改后的對比:


image.png

步驟:

1, 新建樣式文件values-v21/styles.xml
image.png
2, 在布局中添加android:fitsSystemWindows="true"屬性
image.png
3, Java代碼中設(shè)置顏色:mDrawer.setStatusBarBackground
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,769評論 25 709
  • DrawerLayout是android support包新增的側(cè)滑菜單控件,在Android Studio中可以...
    Ihesong閱讀 4,598評論 0 3
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,837評論 2 45
  • 1. 在選中模塊后彈出的菜單條上操作還是會影響到菜單條下面的其他圖素(模塊本身不受影響,但是模塊里的其他信息如名稱...
    HappyGQ閱讀 459評論 0 1
  • 莫名的哀愁堵塞胸口,不是天氣的氣壓導(dǎo)致,不是公務(wù)員老公疲憊不堪的身影讓我擔心,而是因為看到山東省的高考分...
    ouyou_oume閱讀 702評論 2 0

友情鏈接更多精彩內(nèi)容