@Override
  public void onDrawerClosed(View view) {
    mDrawerToggle.onDrawerClosed(view);
    stopTransition();
    mOpened = false;

    if (mDrawerListener != null) {
      mDrawerListener.onDrawerClosed(view);
    }
  }
  @Override
  public void onDrawerSlide(View view, float slideOffset) {
    for (ITransition trans : mTransitionList.values()) {
      trans.updateProgress(slideOffset);
    }

    if (view == null) {
      return;
    }
    mDrawerToggle.onDrawerSlide(view, slideOffset);

    if (mDrawerListener != null) {
      mDrawerListener.onDrawerSlide(view, slideOffset);
    }
  }
  @Override
  public void onDrawerStateChanged(int state) {
    mDrawerToggle.onDrawerStateChanged(state);
    switch (state) {
      case DrawerLayout.STATE_DRAGGING:
      case DrawerLayout.STATE_SETTLING:
        startTransition();
        break;
      case DrawerLayout.STATE_IDLE:
        stopTransition();
        break;
    }

    if (mDrawerListener != null) {
      mDrawerListener.onDrawerStateChanged(state);
    }
  }