Android UINavigationКонтроллероподобная функция - PullRequest
26 голосов
/ 15 июля 2010

На iPhone я использую Navigation Controller, чтобы выдвигать и открывать виды с.Очень удобно.

Есть ли в Android эквивалент?

Ответы [ 4 ]

30 голосов
/ 16 августа 2012

Это старый вопрос, но я верю, что ответ изменился. Теперь можно подражать стеку Nav в iOS в Android с помощью Fragments. http://developer.android.com/reference/android/app/Fragment.html

По сути, вместо того, чтобы переходить от действия к действию, вместо этого вы остаетесь в одном действии, которое управляет отображением, организацией и анимацией фрагментов, каждый из которых имеет свое собственное поведение, аналогичное модели NavController / UIViewController в iOS.

Он также обратно совместим как статическая библиотека, так что вы можете реализовать его на устройствах, предшествующих Honeycomb. Стратегии для сотовой и обратной совместимости

6 голосов
/ 15 июля 2010

Как правило, в Android, каждый вид отображается в своей собственной деятельности.Вы можете прочитать о деятельности в документации основы .Чтобы перейти к новому действию или представлению, вы используете намерение .

Если вы еще этого не сделали, я настоятельно рекомендую прочитать эти вводные документы по Android.Они не слишком длинные и хорошо объясняют основную структуру программы.

5 голосов
/ 05 июля 2018

В 2018 году Google представил новую библиотеку под названием Компонент архитектуры навигации . Компонент Navigation - это новый компонент архитектуры, который призван упростить реализацию навигации в приложении. В самом начале важно отметить, что компонент Навигация ограничен одной операцией.

enter image description here

Подробнее здесь - https://proandroiddev.com/android-navigation-arch-component-a-curious-investigation-3e56e24126e1

5 голосов
/ 30 августа 2016

Я создал Framework (github) , чтобы обеспечить иерархический шаблон навигации с анимацией, чтобы обеспечить ощущение навигации, вместо того, чтобы каждый раз запускать новые Действия.

Android Basic Framework Image

Вот как это использовать:

  • Добавьте фреймворк в ваш проект в виде модуля
  • Добавьте новый класс 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...