Как использовать фрагменты в ваших приложениях Android для мощного и динамичного интерфейса

Автор: John Stephens
Дата создания: 28 Январь 2021
Дата обновления: 19 Май 2024
Anonim
Урок 12.  Навигация в Android приложении.  Начало работы с Navigation Architecture Component
Видео: Урок 12. Навигация в Android приложении. Начало работы с Navigation Architecture Component

Содержание


Примечание. В этой статье предполагается, что вы знакомы с основами разработки под Android и Java. Вы уже должны иметь возможность создавать основные макеты и использовать виды, по щелчку а также findViewByID. Если вы поймете эти концепции, вы готовы научиться использовать фрагменты!

Фрагменты - это мощная функция хорошего пользовательского интерфейса Android, которая позволяет вам подходить к дизайну приложений модульно. Это отдельные представления, которые могут содержать целые макеты и которые сопровождаются собственным сопровождающим кодом Java. Разобрав свой пользовательский интерфейс таким образом, вы сможете создавать больше логических макетов, которые будут проще понять пользователям. Вы можете предоставить им дополнительную информацию и элементы управления без необходимости покидать мероприятие.

Смотрите также: фрагменты без проблем: Использование компонента навигации в Android

Фрагменты предоставляют вам значительно больше возможностей в дизайне вашего приложения и могут существенно улучшить пользовательский опыт


Более того, фрагменты действуют как классы и объекты, в которых вы можете иметь несколько экземпляры того же фрагмента. Это означает, что вы можете снова и снова использовать один и тот же макет без необходимости переписывать код или даже показывать две разные версии рядом друг с другом.

Короче пока это пока другой Что нужно знать, когда речь идет о, казалось бы, бесконечном списке дел, связанных с приложениями Android, это то, что может предоставить вам значительно больше возможностей в дизайне вашего приложения и существенно улучшить пользовательский интерфейс - сделав его более чем стоящим времени, потраченного на ознакомление ,

Как создать свой первый фрагмент Android

Итак, что мы можем сделать с фрагментами, которые не имеют никакого смысла?

Возможно, у нас есть список файлов - может быть, это галерея изображений - и мы хотим показать описание и дать пользователю возможность удалить или поделиться. Такого рода вещи. Мы могли бы отправлять их на новую страницу «Описание» каждый раз, используя отдельное действие, но если вы используете фрагменты, мы можем держать их на одной странице, что будет менее раздражающим.


Откройте Android Studio и создайте список случайных изображений в activity_main.xml, Я использую картинки Dragon Ball Super потому что я ботаник, и это то, что я лежу на своем компьютере ...

Теперь мы собираемся создать наш первый фрагмент.

Для этого вы собираетесь отправиться в Файл> Создать> Фрагмент. MainActivity.java должен быть выбран слева, когда вы делаете это, и вы пока будете выбирать «пустой» фрагмент. После этого вы сможете выбрать имя для нового творения, которое мы назовем «Описание». Снимите две галочки внизу - нам это сейчас не нужно.

Как только это будет сделано, вы обнаружите, что теперь у вас есть не только новый Java-файл с именем Description.java, но и новый файл макета с именем frag_description.xml - как если бы вы создали новый класс! Это означает, что вы поместите код, который идет вместе с вашим новым фрагментом, в отдельный файл Java.

Добавление макетов, видов и кода

Хорошей новостью является то, что нам очень легко добавлять представления и макет, когда мы используем фрагменты. Мы сделаем это так же, как обычно, отредактировав фрагмент _timer.xml.

Давайте снова используем линейный макет, и на этот раз добавим некоторые элементы управления и описательный текст. Вы можете прикрепить здесь все что угодно.

Итак, теперь следующий вопрос: как сделать так, чтобы это отображалось в вашем приложении?

Вы можете сделать это, добавив фрагмент к действию, так же, как вы сделали бы любое другое представление. Итак, зайдите в activity_main.xml и добавьте представление так, чтобы оно занимало часть экрана - возможно, внизу.

Если вы хотите сделать это так, как я, я использовал вертикальную линейную разметку и присвоил всем изображениям вес 1, а фрагменту - 2.

Вы заметите, что предварительный просмотр не показывает фактический фрагмент, только заполнитель. Также обратите внимание, что мне пришлось включить название фрагмента в XML, чтобы Android знал, где его найти. Вам также нужен идентификатор для каждого фрагмента.

Код

Как уже говорилось, код, который нам нужно использовать для фрагментов, будет идти в своем собственном Java-файле. В данном случае это файл Description.java.

Если вы проверите эту страницу, вы увидите, что есть конструктор (как и в любом классе, который создает объект) и метод с именем onCreateView, В этом методе xml используется для раздувания этого представления, и это также эквивалент вашего обычного OnCreate метод в стандартной деятельности.

По большей части, вы можете делать вещи, как обычно, здесь. findViewByID работает, и вы можете использовать это, чтобы изменить текст и т. д., но вам нужно будет получить ссылку немного по-другому. Измените строку, которая гласит:

вернуть inflater.inflate (R.layout.fragment_description, контейнер, ложь);

Для того, чтобы:

Вид v = inflater.inflate (R.layout.fragment_description, контейнер, ложь);

А затем используйте:

v.findViewByID.

Теперь вы можете получить доступ к своим представлениям, как обычно:

public View onCreateView (Inflater LayoutInflater, контейнер ViewGroup, Bundle saveInstanceState) {View v = inflater.inflate (R.layout.fragment_description, контейнер, ложь); Кнопка okButton = v.findViewById (R.id.хорошо) ;; Кнопка shareButton = v.findViewById (R.id.Поделиться); okButton.setOnClickListener (new View.OnClickListener () {public void onClick (View v) {Toast.makeText(getActivity (), «ОК!», тост.LENGTH_LONG ).показать(); }}); shareButton.setOnClickListener (new View.OnClickListener () {public void onClick (View v) {Toast.makeText(getActivity (), «Обмен ...», тост.LENGTH_LONG ).показать(); }}); возврат v; }}

Используйте фрагменты с несколькими экземплярами

Вы можете видеть, как намного проще создать оптимизированный интерфейс и код, когда мы используем фрагменты. Вместо того, чтобы использовать макеты внутри макетов и затем манипулировать большим количеством кликов в одном файле Java. Более того, этот «модульный» подход позволит вам использовать это представление для всех видов деятельности и даже в меню и других динамических местах.

Но действительно крутой частью является тот факт, что вы можете иметь несколько экземпляров одного и того же фрагмента, существующих одновременно.

Сделать это просто: вы просто добавляете более одного вида и раздуваетесь с точно таким же кодом.

Теперь, надеюсь, вы сможете увидеть некоторые возможности использования фрагментов: представьте себе, что у вас есть Recycler View (прокручиваемый список) изображений, каждое из которых содержит детали и элементы управления чуть ниже. Нет необходимости каждый раз создавать совершенно новый макет, и вы можете скрывать виды, пока пользователь не нажмет на картинку!

Более того, вы также можете создавать новые фрагменты программным способом. Все, что вам нужно, это где-то фрагмент, чтобы перейти в ваш макет - например, макет кадра (который я назову fragmentTarget), а затем вы можете сделать следующее:

Fragment AddedFragment = Новое Описание (); FragmentTransactionaction = getSupportFragmentManager (). BeginTransaction (); transaction.replace (R.id.fragmentTarget, добавлен фрагмент); transaction.addToBackStack (нуль); transaction.commit ();

Обязательно импортируйте необходимые классы - вам будет предлагаться всякий раз, когда вы пытаетесь использовать фрагменты в своем коде. Просто убедитесь, что выбрали верхний вариант с надписью «v4».

Возможность добавлять фрагменты программно важна, потому что это означает, что мы можем сгенерировать динамический список изображений (которые мы загрузили, которые находятся в определенной папке и т. Д.), А затем сразу же высказать нам детали.

Итак, в этом новом примере второй фрагмент был добавлен программно.

Наконец, вы можете захотеть изменить внешний вид ваших фрагментов в зависимости от того, где они находятся. Хорошей новостью является то, что вы можете сделать это легко, передав идентификатор в виде пакета при создании фрагмента, а затем извлекая это значение на другом конце.

В MainActivity.java используйте:

Bundle bundle = новый Bundle (); bundle.putInt ("ID", 1); addedFragment.setArguments (расслоение);

А затем в Description.java добавить:

int eyeD = 0; Bundle bundle = this.getArguments (); if (bundle! = null) {eyeD = bundle.getInt ("ID", 0); } switch (eyeD) {case 1:…

Затем вы можете, например, заставить ваше приложение показывать разные заметки для каждого изображения.

Закрытие комментариев

Вот как вы используете фрагменты. Надеюсь, вы поняли основы, и этот пост дал вам достаточно понимания, что вы можете пойти дальше и выяснить все остальное. Что еще более важно, я надеюсь, что он показал вам некоторые возможные варианты использования фрагментов и потенциал, который они предлагают для более разумного дизайна приложений.

Если вы хотите увидеть еще один пример фрагментов в действии, то обязательно ознакомьтесь с моим недавним постом о создании собственного модуля запуска!

Разработка Android:

  • Как создать VR-приложение для Android всего за 7 минут
  • Создайте свой собственный Action для Google Assistant
  • Root Android: все, что вам нужно знать!
  • Анатомия приложения: введение в жизненные циклы деятельности
  • Android Jetpack: что означают последние анонсы для библиотеки поддержки Android?

Hulu не устанавливает никаких ограничений на количество устройств, которые вы можете использовать с сервисом. Но будьте осторожны, так как список ваших устройств может легко составить список, где вы м...

Hulu - это сервис потокового видео на основе подписки. Как и Netflix и другие подобные конкуренты, Hulu сотрудничает с популярными создателями контента и сетями для потоковой передачи своих фильмов и ...

Выбор редакции