Як використовувати фрагменти в додатках для Android для потужного та динамічного інтерфейсу користувача

Автор: John Stephens
Дата Створення: 28 Січень 2021
Дата Оновлення: 19 Травень 2024
Anonim
Волохов Системне Програмування Лекція 2021/01/25 10:33
Відеоролик: Волохов Системне Програмування Лекція 2021/01/25 10:33

Зміст


Примітка. Ця стаття передбачає, що ви знайомі з основами розробки Android та Java. Ви вже повинні мати можливість створювати основні макети та використовувати представлення даних, onClick і findViewByID. Якщо ви зрозумієте ці поняття, ви готові навчитися використовувати фрагменти!

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

Дивіться також: Фрагменти без клопотів: Використання компонента навігаційної архітектури Android

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


Більше того, це те, що фрагменти діють як класи та об’єкти, у яких ви можете мати кілька екземпляри того ж фрагмента. Це означає, що ви можете повторно використовувати один і той же макет знову і знову без необхідності переписувати код або навіть показувати дві різні версії поруч.

Словом, поки це ще немає інший що потрібно дізнатися, коли мова йде про нескінченний список справ, пов’язаних із програмами Android, це щось, що може надати вам значно більше можливостей у дизайні ваших додатків та істотно покращити користувацький досвід - зробивши це більш ніж вартим витраченого часу на ознайомлення .

Як створити свій перший фрагмент Android

Отже, що ми могли б зробити з фрагментами, які не мали б сенсу в іншому випадку?

Можливо, у нас є список файлів - можливо, це галерея зображень - і ми хочемо показати опис і дати користувачеві можливість видалити або поділитися. Така річ. Ми можемо надсилати їх на нову сторінку "Опис" кожен раз, використовуючи окрему активність, але якщо ви використовуєте фрагменти, ми можемо тримати їх на одній сторінці, яка буде меншою.


Відкрийте Android Studio і створіть список випадкових зображень у activity_main.xml. Я використовую фотографії Dragon Ball Super тому що я ботанік, і це те, що я лежу на своєму ПК ...

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

Для цього вам належить попрямувати Файл> Створити> Фрагмент. Під час цього виберіть MainActivity.java, вибираючи зліва, і ви вибираєте фрагмент "порожній". Тоді ви зможете вибрати ім’я для свого нового твору, яке ми будемо називати "Опис". Зніміть під собою два поля - нам це зараз не потрібно.

Як тільки це буде зроблено, ви знайдете, що тепер у вас є не тільки новий файл Java під назвою Description.java, але й новий файл макета під назвою fragment_description.xml - так, як ніби ви створили новий клас! Це означає, що ви будете розміщувати код, який входить у ваш новий фрагмент, у своєму окремому файлі Java.

Додавання макетів, поглядів та коду

Хороша новина полягає в тому, що нам дуже легко додати перегляди та макет, коли ми використовуємо фрагменти. Ми зробимо це так, як зазвичай, редагуючи fragment_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.

Тепер ви можете отримати доступ до своїх поглядів, як зазвичай:

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

Використовуйте фрагменти з декількома екземплярами

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

Але справді класна частина полягає в тому, що ви можете мати кілька екземплярів цього самого фрагмента, який існує все одночасно.

Зробити це просто: ви просто додаєте більше одного перегляду і надуваєте точно той же код.

Тепер, сподіваємось, ви можете почати бачити частину можливостей використання фрагментів: уявіть, що перегляд зображень Recycler (список прокрутки), кожен з деталями та елементами управління трохи нижче. Вам не потрібно буде створювати абсолютно новий макет кожен раз, і ви можете приховати представлення даних, поки користувач не натисне на зображення!

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

Fragment addedFragment = новий Опис (); FragmentTransaction транзакції = getSupportFragmentManager (). BeginTransaction (); deal.replace (R.idfragmentTarget, доданийФрагмент); action.addToBackStack (null); action.commit ();

Не забудьте імпортувати необхідні класи - вам буде запропоновано кожен раз, коли ви спробуєте використовувати фрагменти у своєму коді. Просто переконайтеся, що виберіть верхній варіант із написом "v4".

Можливість додавати фрагменти програмно важливо, оскільки це означає, що ми могли створити динамічний список зображень (які ми завантажили, які знаходяться у певній папці тощо), а потім одразу з’являться деталі для нас.

Отже, у цьому новому прикладі другий фрагмент додано програмно.

Нарешті, у вас може виникнути бажання змінити вигляд ваших фрагментів залежно від місця їх знаходження. Хороша новина полягає в тому, що ви можете це легко зробити, передавши ідентифікатор як пакет, коли створюєте фрагмент, а потім витягаєте це значення на іншому кінці.

У MainActivity.java використовуйте:

Пачка розшарування = нова група (); bundle.putInt ("ID", 1); addedFragment.setArguments (пакет);

А потім в Description.java додати:

int eyeD = 0; Пачка розшарування = this.getArguments (); if (bundle! = null) {eyeD = bundle.getInt ("ID", 0); } перемикач (eyeD) {випадок 1:…

Потім ви можете, наприклад, отримати додаток для показу різних приміток до кожного зображення.

Заключні коментарі

Отже, ви використовуєте фрагменти. Сподіваємось, ви зрозуміли основи, і ця публікація дала вам достатньо розуміння, що ви можете піти вперед і розібратися з рештою. Що ще важливіше, я сподіваюся, що він показав вам деякі можливі можливості використання фрагментів та потенціал, який вони пропонують для розумнішого дизайну додатків.

Якщо ви хочете побачити ще один приклад фрагментів у дії, не забудьте ознайомитись з моїм останнім дописом щодо створення користувальницького пуска!

Розробка Android:

  • Як створити VR-додаток для Android всього за 7 хвилин
  • Створіть власну дію для Google Assistant
  • Root Android: все, що потрібно знати!
  • Анатомія програми: вступ до життєвих циклів діяльності
  • Android Jetpack: Що означають останні анонси для Бібліотеки підтримки Android?

На жаль для amung, ця лінія запитань стала більш доречною для кожного власного покоління процесора. Флагманські мікросхеми Exyno борються за стабільну продуктивність, ефективність процесора та енергос...

12 цікавих фактів про Samsung

Monica Porter

Травень 2024

amung, один із царів мобільного світу, перетворився на величезну мобільну та електронну імперію, хоча його історія насправді починається набагато раніше - фактично в 1938 році. Протягом багатьох років...

Ми Рекомендуємо Вам