android - 如何更改背景中的活动(通过淡入动画或模糊背景)然后关闭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/
解决方案
推荐阅读
- python - 如何在 html 文件中编写 python 代码?我创建的所有 html 文件都在 /templates 文件夹中,如烧瓶文档中所述
- php - 如何在具有数组字段的弹性搜索中进行搜索?
- python - 如何使用fill_between按月创建最小-最大图
- rpm - 如何在规范文件中创建多行摘要?
- javascript - Safari getDisplayMedia 必须从用户手势处理程序中调用
- css - 即使使用 KeyboardAvoidingView,React Native Sticky Footer Input 也被键盘覆盖
- testing - TestCafe:如何让 TestCafe 在所有固定装置之前只运行一次应用程序代码
- python - DataFrame 更新未保存到文件
- spring-boot - gradle 连续构建技巧在 docker 容器中不起作用
- azure - 新对象:找不到类型 [Microsoft.Open.AzureAD.Model.DomainFederationSettings]:验证程序集