Я создал Framework (github) , чтобы обеспечить иерархический шаблон навигации с анимацией, чтобы обеспечить ощущение навигации, вместо того, чтобы каждый раз запускать новые Действия.
![Android Basic Framework Image](https://i.stack.imgur.com/2LUrS.jpg)
Вот как это использовать:
- Добавьте фреймворк в ваш проект в виде модуля
- Добавьте новый класс Java в свой проект («Файл - Новый - Класс Java»).
Примечание. Если вы редактируете файл Activity.java, который предоставляет вам шаблон, удалите все его реализации и оставьте его пустым.
- Расширьте возможности NavigationActivity
- Реализация всех абстрактных методов NavigationActivity
( в Android Studio, если вы нажмете Alt + вставьте и выберете инструментальные методы - все определения функций генерируются автоматически ).
public class NavigationTest extends NavigationActivity{
@Override
public Fragment firstFragment() {
//return the first fragment that will be shown
}
@Override
public Boolean showBackButtonInFirstFragment() {
//show back button already in the first Fragment
//set to True if this activity is called by another Activity
//the back button will then pop back to the previous Activity
}
@Override
public Boolean showMasterDetailLayoutInTablets() {
//set to false if you don't want a master-detail layout in tablets
}
}
Представление нового фрагмента
Новый фрагмент (с хорошей анимацией) можно представить, вызвав метод pushFragment из NavigationActivity.
public void pushFragment(Fragment newFragment, animationType animation, boolean showAsDetailFragmentIfPossible)
newFragment (Fragment): новый фрагмент, который будет представлен
animation (animationType): тип анимации enum: RIGHT_TO_LEFT, BOTTOM_TO_TOP, FLIP
showAsDetailFragmentIfPossible (логическое значение): если установлено значение True, пользователь находится в планшете, и вы используете макет основной детали, фрагмент будет отображаться в фрагменте детали (панель в справа)!
Поскольку вы можете получить доступ к активности из любого фрагмента с помощью метода getActivity (), вы можете показать новый фрагмент из отображаемого в данный момент фрагмента .
Например, вы можете поместить этот код в слушатель нажатия кнопки:
NextFragment f = new NextFragment();
NavigationActivity nav =((NavigationActivity)getActivity());
nav.pushFragment(f,NavigationActivity.animationType.RIGHT_TO_LEFT,false);
Вам не нужно беспокоиться о реализации поведения кнопки возврата. Это обрабатывается автоматически классом NavigationActivity.