Шаблоны, когда использовать переход деятельности против динамических фрагментов
Существуют ли какие-либо шаблоны для обработки переходов пользовательского интерфейса в действиях Android против фрагментов? В настоящее время я смотрю на пользовательский интерфейс, который имеет не более 3 столбцов в альбомной. Я хотел бы, чтобы пользовательский интерфейс начинался с 1 столбца по всему экрану, а затем при выборе чего-либо перемещался во второй столбец, а затем при щелчке чего-либо во втором переходе в третьем на планшетах и телефонах и исчезал в первом столбце на телефонах. Мне интересно, когда я должен сделать это как переход "Активность", а когда мне просто нужно использовать "Фрагменты с отображаемыми представлениями". Насколько я прочитал, фрагменты могут быть перенесены в другие действия, поэтому я выбираю либо реализовать действия со статическими макетами столбцов, которые затем переходят, беря фрагменты вместе с ними, либо иметь одно действие со всеми 3 столбцами и иметь действие, управляющее появлением объекта. Фрагменты. Оба подхода могли работать, но меня интересовали плюсы и минусы с обеих сторон обоих решений.
Есть два вопроса, похожих на то, что я задаю, но не совсем отвечаю на мой
3 ответа
Фрагменты могут показаться большим количеством кода заранее (поскольку вы помещаете представление в фрагмент и фрагмент в Activity, а не просто представление в Activity), но они отлично помогают вам избавиться от головной боли только в этом Такая ситуация - определенно идти с фрагментами. Они даже обрабатывают переходы для вас.
У нас есть некоторый пример кода под названием "Сотовая галерея", который вы можете посмотреть здесь, который имеет макет с двумя столбцами плюс панель действий и возможность показать / скрыть крайний левый столбец. Это должно дать вам хороший старт, чтобы понять, как сделать макет для нескольких фрагментов и показать / скрыть их.
К вашему сведению, одним из важных компромиссов в использовании нескольких фрагментов в деятельности вместо нескольких операций является то, что фрагменты не отвечают непосредственно на намерения - например, если у вас было приложение для создания заметок, где страница "Просмотр заметки" была деятельностью и вы изменили его так, чтобы внутри основного действия был фрагмент "просмотреть заметку", а затем вам нужно было настроить его так, чтобы основное действие получило идентификатор заметки и действие заметки (создание, просмотр, редактирование, что угодно) в намерении, в отличие от простого действия "просмотреть заметку", получить идентификатор заметки в намерении. В этом случае основная деятельность должна будет соответствующим образом настроить фрагменты на странице. Не такая уж большая проблема, но если важен внешний доступ к различным частям вашего приложения через Intent, то может быть проще разбить ваше приложение на несколько видов деятельности, а также использовать фрагменты для представления отдельных компонентов.
Основываясь на странице API фрагментов Android 3.0, действие является отдельным, а фрагмент может быть мини-действием, которое должно быть размещено в реальном действии.
Далее следует сказать, что введение API Fragment дало разработчикам Android возможность решить многие болевые точки, с которыми столкнулись разработчики Activity, поэтому в Android 3.0 утилита Fragment выходит далеко за рамки простой настройки для разных экранов:
Я думаю, что использование одного действия для приложения не обязательно является неправильным решением, просто вопросом стиля. Это решение, которое вы должны принять на основе того, что вы пытаетесь достичь.
Тем не менее, введение фрагментов было замечено, чтобы решить проблемы реального мира. Исходя из этого, я бы порекомендовал вам написать код "Proof of Concept" и оценить результаты. В настоящее время это может быть единственным тестом в реальном мире, который будет иметь значение
Используйте действия для полного экрана
Использовать фрагменты для части экрана или без экрана (но не для службы)
В моем основном приложении есть экранные вкладки в виде горизонтальной прокрутки, которые я хотел сохранить в нескольких разделах приложения. Разделы включают новости, фотографии, видео, расписание и т. Д. Все однопользовательские задачи.
Основным приложением, в котором находится все это, является приложение, а вкладки - это просто представление, которое вызывает диспетчер фрагментов.
Тем не менее, я использую Деятельности для сложных действий пользователей глубже в приложении. Например, если кто-то воспроизводит видео, просматривает страницу сведений об элементе и разделы фотогалереи / слайд-шоу, поскольку все они являются полноэкранными компонентами.
При переходе к полноэкранному режиму нет необходимости показывать / скрывать фрагменты, потому что стек операций обрабатывает все, что вы хотите, быстро и легко, а ваш код остается минимальным и чистым.
Таким образом, у меня есть Activity -> фрагменты домов -> запустить полноэкранный Activity для специальных команд.