对于想要使用活动的代码示例的人,请在此处查看我的答案:https://stackoverflow.com/a/19451842/2767703
如果你想要一个很好的过渡,我会建议:当你点击NavigationDrawer关闭导航抽屉中的项目并同时使用postdelayed 250(需要时间来关闭NavigationDrawer).同时用150毫秒将主内容的alpha动画设为0.然后,当Activity开始动画时,主内容的alpha为250毫秒.这给了一个很大的转变.我在Google IO代码中找到了它:https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java
顺便说一下,你还应该看看@Harish Godara给出的链接:http://www.michenux.net/android-navigation-drawer-748.html它与Fragments一起工作,但它有一个很好的实现方法NavigationDrawer.
编辑
由于某些链接已经死了,这是我在上一个项目中用来获取动画的内容.它在Kotlin,但它应该明确指出.这是BaseDrawerActivity的所有代码:
private val NAVDRAWER_LAUNCH_DELAY = 250L
private val MAIN_CONTENT_FADEOUT_DURATION = 150L
private val MAIN_CONTENT_FADEIN_DURATION = 250L
Run Code Online (Sandbox Code Playgroud)
-
private var shouldAnimate:Boolean
set(value) { intent.putExtra("animateTransition", value) }
get() = intent.getBooleanExtra("animateTransition", false)
Run Code Online (Sandbox Code Playgroud)
-
private fun changeDrawerItem(newClass: Class<*>) {
runDelayed(NAVDRAWER_LAUNCH_DELAY, {
startActivity(Intent(this, newClass).apply {
addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
putExtra("animateTransition", true)
putExtra("selectedNav", selectedNavigationItem.name)
})
overridePendingTransition(0, 0)
})
mainContent.animate()?.alpha(0f)?.duration = MAIN_CONTENT_FADEOUT_DURATION
}
Run Code Online (Sandbox Code Playgroud)
-
override fun onStart() {
super.onStart()
if(shouldAnimate) {
mainContent.alpha = 0f
mainContent.animate()?.alpha(1f)?.duration = MAIN_CONTENT_FADEIN_DURATION
} else {
mainContent.alpha = 1f
}
val selectedNav = intent.getStringExtra("selectedNav")
if(selectedNav != null) {
selectedNavigationItem = DrawerItem.valueOf(selectedNav)
}
}
Run Code Online (Sandbox Code Playgroud)
-
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
if(shouldAnimate) {
overridePendingTransition(0, 0)
}
}
Run Code Online (Sandbox Code Playgroud)
-
override fun onResume() {
super.onResume()
intent.removeExtra("animateTransition")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34211 次 |
| 最近记录: |