Slik bruker du fragmenter i Android-appene dine for et kraftig og dynamisk brukergrensesnitt

Forfatter: John Stephens
Opprettelsesdato: 28 Januar 2021
Oppdater Dato: 19 Kan 2024
Anonim
Android Layout Design Tutorial |  Android UI Design Explained | Android Studio Tutorial | Edureka
Video: Android Layout Design Tutorial | Android UI Design Explained | Android Studio Tutorial | Edureka

Innhold


Merk: Denne artikkelen forutsetter at du er kjent med det grunnleggende om Android-utvikling og Java. Du bør allerede kunne lage grunnleggende oppsett og bruke visninger, ved trykk og findViewByID. Hvis du fatter disse begrepene, er du klar til å lære å bruke fragmenter!

Fragmenter er en kraftig funksjon i god Android-brukergrensesnitt som lar deg tilnærme deg appdesign på en modulær måte. Dette er distinkte visninger som kan inneholde hele oppsett, og som har sin egen tilhørende Java-kode. Ved å bryte brukergrensesnittet på denne måten, kan du lage mer logiske oppsett som er lettere for brukerne å forstå. Du kan gi dem tilleggsinformasjon og kontroller uten at de trenger å forlate aktiviteten.

Se også: problemfrie fragmenter: Bruker Android's Navigation Architecture Component

Fragmenter gir deg betydelig flere alternativer i apputformingen din og kan forbedre brukeropplevelsen betydelig


Det som er mer, er at fragmenter fungerer som klasser og objekter ved at du kan ha flere forekomster av samme fragment. Det betyr at du kan bruke samme oppsett om og om igjen uten å måtte skrive om koden, eller til og med vise to forskjellige versjoner side om side.

Kort sagt, mens dette ennå er en annen ting å lære når det gjelder den tilsynelatende uendelige oppgavelisten som er involvert i Android-apper, det er noe som kan gi deg betydelig flere alternativer i apputformingen din og forbedre brukeropplevelsen betydelig - noe som gjør det mer enn verdt tiden du bruker på å bli kjent .

Slik bygger du det første Android-fragmentet ditt

Så, hva kan vi gjøre med fragmenter som ikke ville gi mening på noen annen måte?

Kanskje har vi en liste over filer - kanskje dette er et bildegalleri - og vi vil vise en beskrivelse og gi brukeren muligheten til å slette eller dele. Den typen ting. Vi kan sende dem til en ny 'Beskrivelse' -side hver gang ved å bruke en egen aktivitet, men hvis du bruker fragmenter kan vi beholde dem på den ene siden som vil være mindre skurrende.


Åpne Android Studio og lag en liste over tilfeldige bilder i activity_main.xml. Jeg bruker bilder av Dragon Ball Super fordi jeg er en nerd og det er det jeg har liggende på PC-en ...

Nå skal vi lage vårt første fragment.

For å gjøre dette, tar du turen til Fil> Ny> Fragment. MainActivity.java må velges til venstre når du gjør dette, og du velger et "tomt" fragment for nå. Du kan deretter velge et navn for den nye opprettelsen, som vi vil kalle 'Beskrivelse'. Fjern de to boksene under - det trenger vi ikke akkurat nå.

Når dette er gjort, vil du finne at du ikke bare har en ny java-fil som heter Description.java, men også en ny layoutfil kalt fragment_description.xml - akkurat som om du hadde opprettet en ny klasse! Dette betyr at du vil plassere koden som følger med det nye fragmentet i sin egen separate Java-fil.

Legger til oppsett, visninger og kode

Den gode nyheten er at det er veldig enkelt for oss å legge til visninger og en layout når vi bruker fragmenter. Vi gjør dette akkurat som vi vanligvis ville gjort ved å redigere fragment_timer.xml.

La oss bruke en lineær layout igjen, og denne gangen legger vi til noen kontroller og beskrivende tekst. Du kan stikke hva som helst her for nå.

Så nå er neste spørsmål: hvordan får du dette til å vises i appen din?

Du kan gjøre dette ved å legge fragmentet til aktiviteten, akkurat som du ville gjort noe annet syn. Så ta turen til Activity_main.xml og legg til visningen slik at den tar opp en del av skjermen - kanskje nederst.

Hvis du vil gjøre det slik jeg gjorde, brukte jeg et vertikalt lineært oppsett og ga alle bildene en vekt på 1 og fragmentet en vekt på 2.

Du vil merke at forhåndsvisningen ikke viser deg det faktiske fragmentet, bare en plassholder. Legg også merke til at jeg har måttet ta med navnet på fragmentet i XML, slik at Android vet hvor jeg kan finne det. Du trenger også en ID for hvert fragment.

Koden

Som diskutert, vil koden vi trenger for å bruke fragmenter gå i sin egen java-fil. I dette tilfellet er det beskrivelse.java-filen.

Hvis du sjekker ut denne siden, vil du se at det er en konstruktør (akkurat som i enhver klasse som lager et objekt) og en metode som heter onCreateView. Denne metoden er der xml brukes til å blåse opp visningen, og den tilsvarer også det vanlige onCreate metode i en standard aktivitet.

For det meste kan du gjøre ting som du normalt ville gjort her. findViewByID fungerer og du kan bruke dette til å endre tekst osv. men du må få referansen litt annerledes. Endre linjen som lyder:

return inflater.inflate (R.layout.fragment_description, container, falsk);

Til:

Vis v = inflater.inflate (R.layout.fragment_description, container, falsk);

Og bruk deretter:

v.findViewByID.

Nå kan du få tilgang til visningene dine slik du normalt gjør:

public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View v = inflater.inflate (R.layout.fragment_description, container, falsk); Knapp okButton = v.findViewById (R.id.OK) ;; Button shareButton = v.findViewById (R.id.Dele); okButton.setOnClickListener (new View.OnClickListener () {public void onClick (View v) {Toast.makeText(getActivity (), "OK!", toast.LENGTH_LONG ).vise fram(); }}); shareButton.setOnClickListener (new View.OnClickListener () {public void onClick (View v) {Toast.makeText(getActivity (), "Deling ...", Toast.LENGTH_LONG ).vise fram(); }}); retur v; }}

Bruk fragmenter med flere forekomster

Du kan se hvordan det er mye lettere å lage et strømlinjeformet brukergrensesnitt og kode når vi bruker fragmenter. I stedet for å bruke oppsett-innenfor-oppsett og så sjonglere masse klikk i en enkelt Java-fil. Hva mer er at denne "modulære" tilnærmingen vil tillate deg å bruke denne visningen på tvers av aktiviteter og til og med i menyer og andre dynamiske steder.

Men den virkelig kule delen er det faktum at du kan ha flere forekomster av dette samme fragmentet som alle finnes på samme tid.

Dette er enkelt: du bare legger til mer enn en visning og blåser opp med nøyaktig samme kode.

Nå kan du forhåpentligvis begynne å se litt av kraften ved å bruke fragmenter: Tenk å ha en resirkuleringsvisning (en rulleliste) av bilder, hver og en med detaljer og kontroller rett under. Det trenger ikke være behov for å lage en helt ny layout hver gang, og du kan skjule visningene før brukeren klikket på bildet!

Det som er mer er at du også kan generere nye fragmenter programmatisk. Alt du trenger er et sted for at fragmentet skal gå i oppsettet ditt - for eksempel en rammeoppsett (som jeg vil kalle fragmentTarget) og så kan du gjøre følgende:

Fragment lagt tilFragment = nytt Beskrivelse (); FragmentTransaction transaksjon = getSupportFragmentManager (). BeginTransaction (); transaction.replace (R.id.fragmentTarget, lagt tilFragment); transaction.addToBackStack (null); transaction.commit ();

Sørg for å importere de nødvendige klassene - du blir bedt om når du prøver å bruke fragmenter i koden. Bare sørg for å velge det øverste alternativet som sier ‘v4’.

Å kunne legge til fragmenter programmatisk er viktig fordi det betyr at vi kan generere en dynamisk liste over bilder (som vi har lastet ned, som er plassert i en bestemt mappe osv.), Og deretter kan detaljene dukke opp umiddelbart.

Så i dette nye eksemplet har det andre fragmentet blitt lagt til programmatisk.

Endelig kan det hende du vil at du ønsker å endre utseendet på fragmentene dine, avhengig av hvor de befinner seg. Den gode nyheten er at du kan gjøre dette enkelt ved å sende en ID som en bunt når du lager fragmentet og deretter trekke ut den verdien i den andre enden.

I MainActivity.java bruker du:

Bundle bundle = new Bundle (); bundle.putInt ("ID", 1); addedFragment.setArguments (bundle);

Og deretter i Description.java legge til:

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

Du kan da - for eksempel - få appen din til å vise forskjellige notater for hvert bilde.

Lukker kommentarer

Så det er slik du bruker fragmenter. Forhåpentligvis forstås det grunnleggende, og dette innlegget har gitt deg nok forståelse for at du kan gå foran og finne ut resten. Enda viktigere, jeg håper det har vist deg noen av mulige bruksområder for fragmenter og potensialet de tilbyr for smartere appdesign.

Hvis du vil se et annet eksempel på fragmenter i aksjon, må du huske å sjekke det siste innlegget mitt om å lage en tilpasset bærerakett!

Android-utvikling:

  • Hvordan lage en VR-app for Android på bare 7 minutter
  • Bygg din egen handling for Google Assistant
  • Root Android: Alt du trenger å vite!
  • Anatomi av en app: En introduksjon til aktivitetslivssykluser
  • Android Jetpack: Hva betyr de nylige kunngjøringene for Android Support Support Library?

I dag kunngjorde Google at det igangette en tor utvidele i Taiwan (via Techcrunch). økegiganten kal bygge et nytt campu ikke langt fra itt nåværende taiwanke campu og ogå anette hu...

Google kjøpte Word Len for år iden, og ga Google Tranlate den dyktige muligheten til å overette ord ved hjelp av et marttelefonkamera. Det er en ganke praktik egenkap, men det blir enda...

Fascinerende