首页 > 解决方案 > 如何更改背景中的活动(通过淡入动画或模糊背景)然后关闭android kotlin中的导航抽屉?

问题描述

我想首先在背景中更改我的活动(在模糊背景或动画中淡入淡出),然后在 android (Kotlin) 中关闭导航抽屉。我试图通过使用drawerLayout.closeDrawers() 来实现它,但它滞后并且无法正常工作。

  private fun openActivityByMenuItemId(menuItemId: Int) {
if (previousMenuItemId != menuItemId) {
  when (NavigationDrawerItem.valueFromNavId(menuItemId)) {
    NavigationDrawerItem.HOME -> {
      val intent = HomeActivity.createHomeActivity(activity, internalProfileId)
      fragment.activity!!.startActivity(intent)
      drawerLayout.closeDrawers()
    }
    NavigationDrawerItem.OPTIONS -> {
      val intent = OptionsActivity.createOptionsActivity(
        activity, internalProfileId,
        /* isFromNavigationDrawer= */ true
      )
      fragment.activity!!.startActivity(intent)
      if (checkIfPreviousActivityShouldGetFinished(menuItemId)) {
        fragment.activity!!.finish()
      }
      drawerLayout.closeDrawers()
    }
    NavigationDrawerItem.HELP -> {
      val intent = HelpActivity.createHelpActivityIntent(
        activity, internalProfileId,
        /* isFromNavigationDrawer= */ true
      )
      fragment.activity!!.startActivity(intent)
      if (checkIfPreviousActivityShouldGetFinished(menuItemId)) {
        fragment.activity!!.finish()
      }
      drawerLayout.closeDrawers()
    }
    NavigationDrawerItem.DOWNLOADS -> {
      val intent =
        MyDownloadsActivity.createMyDownloadsActivityIntent(activity, internalProfileId)
      fragment.activity!!.startActivity(intent)
      if (checkIfPreviousActivityShouldGetFinished(menuItemId)) {
        fragment.activity!!.finish()
      }
      drawerLayout.closeDrawers()
    }
    NavigationDrawerItem.SWITCH_PROFILE -> {
      val previousFragment =
        fragment.childFragmentManager.findFragmentByTag(TAG_SWITCH_PROFILE_DIALOG)
      if (previousFragment != null) {
        fragment.childFragmentManager.beginTransaction().remove(previousFragment).commitNow()
      }
      val exitProfileDialogArguments =
        if (getFooterViewModel().isAdministratorControlsSelected.get() == true) {
          ExitProfileDialogArguments
            .newBuilder()
            .setHighlightItem(HighlightItem.ADMINISTRATOR_CONTROLS_ITEM)
            .build()
        } else {
          ExitProfileDialogArguments
            .newBuilder()
            .setHighlightItem(HighlightItem.LAST_CHECKED_MENU_ITEM)
            .build()
        }
      getFooterViewModel().isAdministratorControlsSelected.set(false)
      binding.fragmentDrawerNavView.menu.getItem(
        NavigationDrawerItem.SWITCH_PROFILE.ordinal
      ).isChecked =
        true
      val dialogFragment = ExitProfileDialogFragment
        .newInstance(exitProfileDialogArguments = exitProfileDialogArguments)
      dialogFragment.showNow(fragment.childFragmentManager, TAG_SWITCH_PROFILE_DIALOG)
    }
  }
} else {
  drawerLayout.closeDrawers()
}

}

我尝试了各种其他方法,比如停止导航抽屉动画,但这也对我没有多大帮助。作为参考,您可以查看此应用程序的模拟。https://xd.adobe.com/view/e8aa4198-3940-47f9-514a-f41cc54457f6-9e9b/screen/2776cbb1-22b0-42c9-b70b-2136bdb361da/

标签: androidkotlinnavigation-drawerandroid-animationandroid-transitions

解决方案


推荐阅读