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

Автор: John Stephens
Дата На Създаване: 28 Януари 2021
Дата На Актуализиране: 19 Може 2024
Anonim
Leap Motion SDK
Видео: Leap Motion SDK

Съдържание


Забележка: Тази статия предполага, че сте запознати с основите на разработката на 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, пакетът 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 ) .Show (); }}); shareButton.setOnClickListener (нов View.OnClickListener () {public void onClick (View v) {Toast.makeText(getActivity (), "Споделяне ...", Тост.LENGTH_LONG ) .Show (); }}); връщане v; }}

Използвайте фрагменти с множество копия

Можете да видите как е много по-лесно да създадем рационализиран потребителски интерфейс и код, когато използваме фрагменти. Вместо да използвате оформления в рамките на оформления и след това жонглирате много кликове всички в един Java файл. Нещо повече е, че този „модулен“ подход ще ви позволи да използвате този изглед в дейности и дори в менюта и други динамични местоположения.

Но наистина готината част е фактът, че можете да имате множество екземпляри от този един и същ фрагмент, всички съществуващи едновременно.

Това е просто: просто добавяте повече от един изглед и надувате с точно същия код.

Сега се надяваме, че можете да започнете да виждате част от силата на използването на фрагменти: представете си, че имате Recycler View (превъртащ списък) от изображения, всеки от които с подробности и контроли точно под. Няма да е необходимо да създавате изцяло ново оформление всеки път и можете да скриете изгледите, докато потребителят не кликне върху снимката!

Нещо повече е, че можете да генерирате нови фрагменти програмно. Всичко, от което се нуждаете, е някъде, за да може фрагментът да влезе в оформлението ви - например оформление на рамката (която аз ще наричам fragmentTarget) и след това можете да направите следното:

Fragment addedFragment = new Описание (); FragmentTransaction транзакция = getSupportFragmentManager (). BeginTransaction (); transaction.replace (R.id.fragmentTarget, добавенFragment); transaction.addToBackStack (нула); transaction.commit ();

Уверете се, че импортирате необходимите класове - ще бъдете подканени всеки път, когато се опитате да използвате фрагменти във вашия код. Просто не забравяйте да изберете най-горната опция, която гласи „v4“.

Способността да добавяме фрагменти програмно е важно, защото означава, че бихме могли да генерираме динамичен списък с изображения (които сме изтеглили, които са разположени в конкретна папка и т.н.) и след това да се появят подробностите веднага за нас.

И така, в този нов пример вторият фрагмент е добавен програмно.

Накрая може да се окажете, че искате да промените облика на фрагментите си в зависимост от това къде се намират. Добрата новина е, че можете да направите това лесно, като предадете идентификатор като пакет, когато създадете фрагмента и след това извлечете тази стойност в другия край.

В MainActivity.java използвайте:

Пакет снопове = нов пакет (); bundle.putInt ("ID", 1); addedFragment.setArguments (пакет);

И след това в Description.java добавете:

int eyeD = 0; Bundle bundle = this.getArguments (); if (пакет! = null) {eyeD = bundle.getInt ("ID", 0); } превключвател (eyeD) {случай 1:…

След това можете - например - да накарате приложението си да показва различни бележки за всяко изображение.

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

Така че използвате фрагменти. Надяваме се, че разбирате основите и този пост ви даде достатъчно разбиране, че можете да продължите напред и да разберете останалото. По-важното е, че се надявам, че ви показа някои от възможните приложения на фрагменти и потенциала, който предлагат за по-интелигентен дизайн на приложения.

Ако искате да видите още един пример за фрагменти в действие, тогава не забравяйте да проверите скорошната ми публикация за създаване на персонализиран стартер!

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

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

Актуализация, 23 август 2019 г. (12:50 ч. ET):Преди няколко седмици видяхме практически изтекли изображения на Nokia 7.2, но сега имаме някои нови снимки благодарение наTechmeto....

HMD Global е насочена към оживения сегмент от смартфони от средния клас и смята, че новите му предложения, Nokia 6.2 и Nokia 7.2, ще се конкурират с най-добрите. Към тези нови телефони Nokia, обявени ...

Интересен На Сайта