Есть ли способ настроить только один раз навигационный ящик и отобразить его на нескольких активах?Ящик для Android Android для нескольких видов деятельности
ответ
Для этого просто создайте класс BaseActivity, который реализует ящик, , и пусть все ваши другие действия расширяют этот.
@Harish Godara: Можно ли дать какой-либо пример или любой учебник для того же –
@stiffler: http://www.michenux.net/android-navigation-drawer-748.html –
@Harish Godara: Я пытался использовать один и тот же пример, но могу у вас помочь, когда я сделал тестовый проект отлично работает, но когда я интегрировал то же самое в своем приложении, ящик не понял, почему это так ..? –
Для людей, желающих пример кода с деятельностью, посмотрите на мой ответ здесь: https://stackoverflow.com/a/19451842/2767703
Если вы хотите хороший переход, я хотел бы предложить следующее: При нажатии на элемент в NavigationDrawer
закрыть навигацию выдвижной ящик и одновременно использовать postdelayed с 250 (время, необходимое для закрытия NavigationDrawer
). Также одновременно анимация альфа-файла основного контента до 0 с 150 миллисекундами. Затем, когда Activity начинает оживлять альфа-файл основного контента до 1 с 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 Он работает с фрагментами, но у него есть хороший способ реализации NavigationDrawer
.
Редактировать
Поскольку некоторые мертвые ссылки здесь то, что я в моем последнем проекте, чтобы получить анимацию. Это в Котлине, но это должно быть ясно. Это весь код из BaseDrawerActivity:
private val NAVDRAWER_LAUNCH_DELAY = 250L
private val MAIN_CONTENT_FADEOUT_DURATION = 150L
private val MAIN_CONTENT_FADEIN_DURATION = 250L
-
private var shouldAnimate:Boolean
set(value) { intent.putExtra("animateTransition", value) }
get() = intent.getBooleanExtra("animateTransition", false)
-
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
}
-
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)
}
}
-
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
if(shouldAnimate) {
overridePendingTransition(0, 0)
}
}
-
override fun onResume() {
super.onResume()
intent.removeExtra("animateTransition")
}
ссылка приводит к 404 сейчас, однако им очень любопытно о приятных переходах. У вас есть ресурсы на это? – dan
@dan Я добавил пример, как я это сделал в своем последнем проекте. Это написано в Котлине, но должно быть достаточно, чтобы дать вам представление, как это сделать –
awesome thanks! – dan
[Здесь] (http://naddydroid.blogspot.in/) хороший учебник. – Naddy
См. Http://stackoverflow.com/questions/19451715/same-navigation-drawer-on-different-activities –
Как вы видите, когда вы прокручиваете вниз, это уже разрешено –