I fjor innførte Google Material Design, og det ble klart at bevegelse og animasjon ville være to av de mest iøynefallende funksjonene i moderne Android-applikasjoner. Men Google ga ikke utviklere en enkel løsning for å integrere dem i applikasjoner. Som et resultat ble mange biblioteker utviklet for å løse integrasjonsproblemet.
I løpet av dette årets Google I / O innførte Google imidlertid Android Design Support Library for å gjøre vedtaket av Material Design enklere. Dette lar utviklere fokusere på funksjonene som gjør programmene deres unike.
I denne veiledningen viser jeg deg hvordan du implementerer rullingsteknikkene som vises i Googles materialdesignspesifikasjon. Før vi begynner, bør du gjøre deg kjent med de tilgjengelige rullbare områdene i en Android-applikasjon. I det følgende bildet kan du se at det er fire regioner.
Dette er hvor varsler vises, og statusen til forskjellige funksjoner på enheten vises.
Verktøylinjen ble tidligere kjent som handlingslinjen. Det er nå en mer tilpassbar visning med de samme funksjonalitetene.
Denne valgfrie regionen brukes til å vise kategoriene som kategoriserer innholdet i søknaden din. Du kan lese mer om bruken av faner og de forskjellige måtene å vise dem i Googles materialdesignspesifikasjon. Når det passer, kan du også bruke det i Googles sidebeskrivelse.
Her kan du vise bilder eller utvidede appbarer.
Med hensyn til rulleteknikker er det verktøylinjen og fanen / søkefeltet som svarer når innholdet i søknaden din ruller.
For å følge med, bør du bruke den nyeste versjonen av Android Studio. Du kan hente den fra Android Developer-nettstedet. For å prøve disse rulleteknikkene, anbefaler jeg at du oppretter et nytt prosjekt (med et minimum API-nivå på 15), fordi programmets layout vil endre seg vesentlig.
Jeg har gitt et startprosjekt, som du kan laste ned fra GitHub. Du kan bruke startprosjektet som utgangspunkt og bruke rulleteknikkene i dine egne applikasjoner. La oss først legge til følgende avhengigheter til prosjektets build.gradle fil i app-mappen:
kompilere 'com.android.support:design:22.2.0' compile 'com.android.support:recyclerview-v7:22.2.0'
Med den første avhengigheten får du Android Design Support Library, som inkluderer de nye klassene vi trenger for denne opplæringen.
Med den andre avhengigheten får du den nyeste versjonen av RecyclerView
. Versjonen som er oppført i den offisielle artikkelen om å opprette lister, vil ikke være nyttig denne gangen.
Deretter skal du trenge noen dummy data for å prøve disse teknikkene og fylle ut RecyclerView
. Du kan implementere dem selv eller kopiere implementeringen fra InitialActivity
klasse i startprosjektet.
Denne teknikken skjuler verktøylinjeområdet når søknadens innhold blir rullet. Du kan se teknikken i aksjon i følgende video.
For denne layoutdesignen kan du tenke på noe slikt:
Problemet med dette oppsettet er at du må styre hendelsene selv, men det vil være smertefritt hvis du utnytter de nye klassene. La oss endre det som følger:
I dette nye oppsettet kan du se at:
RelativeLayout
Er erstattet med a CoordinatorLayout
verktøylinje
er pakket inn i a AppBarLayout
verktøylinje
og RecyclerView
fikk noen ekstra attributterHva er disse nye klassene?
CoordinatorLayout
Denne utformingen er en ny container og en supercharged FrameLayout
som gir et ekstra nivå av kontroll over berøringshendelser mellom barnevisninger.
AppBarLayout
Denne utformingen er en annen ny container, designet spesielt for å implementere mange av funksjonene i Material Design app bar-konseptet. Husk at hvis du bruker den i en annen ViewGroup
, det meste av funksjonaliteten virker ikke.
Nøkkelen til denne rulleteknikken, og de fleste andre rulleteknikker som vi skal diskutere, er CoordinatorLayout
klasse. Denne spesielle klassen kan motta hendelser fra og levere hendelser til barnets syn, slik at de kan svare på riktig måte. Den er designet for å bli brukt som rotbeholdervisning.
For å aktivere denne teknikken, vil app: layout_behavior
Attributt indikerer hvilken visning som vil utløse hendelsene i verktøylinje
. I dette tilfellet er det den RecyclerView
.
app: layout_behavior = “@ snor / appbar_scrolling_view_behavior"
De App: layout_scrollFlags
attributten til verktøylinje
Indikerer for visningen hvordan du svarer.
app: layout_scrollFlags = “rulle | enterAlways"
De App: layout_scrollFlags
Attributt kan ha fire mulige verdier, som kan kombineres for å skape ønsket effekt:
bla
Dette flagget bør settes for alle visninger som må rulle av skjermen. Visninger som ikke bruker dette flagget, er fortsatt festet til toppen av skjermen.
enterAlways
Dette flagget sikrer at alle nedoverruller vil føre til at denne visningen blir synlig, slik at rask retur mønster.
enterAlwaysCollapsed
Når en visning har erklært en minHeight
og du bruker dette flagget, vil visningen bare gå inn i minimumshøyde (kollapset), bare utvide til full høyde når rullingsvisningen har nådd toppen.
exitUntilCollapsed
Dette flagget får visningen til å rulle på skjermen til den er sammenkuttet (dens minHeight
er nådd) før du avslutter.
Du kan nå kjøre prosjektet, eller trykke på Kontroll + R, og se denne teknikken i aksjon.
Denne teknikken ruller verktøylinjen på skjermen mens tabellregionen forblir forankret til toppen. Du kan se denne teknikken i bruk i følgende video.
For denne teknikken skal jeg gjenopprette layoutet fra den forrige teknikken og legge til en TabLayout
se ved siden av verktøylinje
, inne i AppBarLayout
.
De TabLayout
Visningen gir et horisontalt oppsett for å vise faner. Du kan legge til et hvilket som helst antall faner ved hjelp av ny fane
metode og angi sin oppførsel modus ved hjelp av setTabMode
. La oss begynne med å fylle ut fanene.
tab_layout = (TabLayout) findViewById (R.id.tabs); tab_layout.setTabMode (TabLayout.MODE_FIXED); tab_layout.addTab (tab_layout.newTab (). setText ("Tab 1")); tab_layout.addTab (tab_layout.newTab (). setText ("Tab 2")); tab_layout.addTab (tab_layout.newTab (). setText ("Tab 3"));
Ved å endre verdien av App: layout_scrollFlags
attributt, og legge til og fjern det fra verktøylinje
og TabLayout
, du kan få animasjoner som de som brukes i:
Ta en titt på følgende videoer for eksempler på denne rulleteknikken.
Du kan kjøre prosjektet ditt og se denne rulle teknikken i aksjon.
For denne rulleteknikken skal jeg benytte seg av den fleksible romregionen jeg nevnte i begynnelsen av denne opplæringen. Jeg gjør dette for å krympe den innledende høyden på AppBarLayout
som innholdet ruller opp. Høyden på AppBarLayout
øker til sin opprinnelige høyde når innholdet rulles ned. Du kan se denne teknikken i bruk i følgende video.
For denne rulleteknikken skal jeg bruke følgende layout:
Det ser sikkert ut som mye kode, så la oss slå det ned. I dette oppsettet har jeg gjort følgende endringer:
verktøylinje
er pakket inn i a CollapsingToolBarLayout
og begge elementene blir satt inn i AppBarLayout
.App: layout_scrollFlags
attributtet er flyttet fra verktøylinje
til CollapsingToolBarLayout
, fordi denne beholderen har ansvaret for å reagere på rullehendelser.app: layout_collapseMode
, ble lagt til verktøylinje
. Denne attributtet sikrer at verktøylinje
forbli festet til toppen av skjermen.AppBarLayout
har en fast starthøyde på 192dp.FloatingActionButton
ble lagt til layoutet, under RecyclerView
.Hva er disse nye klassene for?
CollapsingToolBarLayout
Dette er en ny visning, designet spesielt for å pakke inn verktøylinje
og implementer en kollapsende applinje. Når du bruker CollapsingToolBarLayout
klasse, må du være spesielt oppmerksom på følgende egenskaper:
app: contentScrim
Denne attributtet spesifiserer fargen som skal vises når den er helt sammenbrudd.
app: expandedTitleMarginStart / app: expandedTitleMarginEnd
Disse attributter angir margene i den utvidede tittelen. De er nyttige hvis du planlegger å bruke setDisplayHomeAsUpEnabled
metode i aktiviteten din og fyll de nye mellomrom som er opprettet rundt tittelen.
FloatingActionButton
Den flytende handlingsknappen er en viktig komponent i Material Design apps. Du kan nå inkludere flytende handlingsknapper i layoutet ditt med bare noen få linjer med kode. Du kan bruke app: fabSize
attributt til å velge mellom to forskjellige størrelser, standard (56 dp) og mini (40dp). Standard er standardstørrelsen.
Den forsvinner effekten oppnås automatisk ved å forankre den flytende handlingsknappen til AppBarLayout
bruker app: layout_anchor
Egenskap. Du kan også spesifisere posisjonen i forhold til dette ankeret ved å bruke app: layout_anchorGravity
Egenskap.
Før du kjører prosjektet, må vi spesifisere i aktiviteten som CollapsingToolBarLayout
kommer til å vise tittelen i stedet for verktøylinje
. Ta en titt på følgende kodestykke for avklaring.
collapsing_container = (CollapsingToolbarLayout) findViewById (R.id.collapsing_container); collapsing_container.setTitle (. getResources () getString (R.string.title_activity_technique3));
Kjør prosjektet for å se den tredje rulleteknikken i bruk.
Denne rulleteknikken bruker den utvidede AppBarLayout
, vist i forrige teknikk, for å vise et bilde. Du kan se denne teknikken i følgende video.
For denne teknikken skal jeg gjenopprette tidligere oppsett og endre det litt:
I dette oppsettet har jeg gjort følgende endringer:
android: bakgrunn
attributtet ble fjernet fra AppBarLayout
. Fordi det Imageview
skal fylle dette rommet, det er ikke nødvendig å ha en bakgrunnsfarge.app: expandedTitleMarginStart
og app: expandedTitleMarginEnd
Attributene ble fjernet, fordi vi ikke bruker setDisplayHomeAsUpEnabled
metode i aktiviteten.Imageview
ble lagt til før de verktøylinje
. Dette er viktig for å unngå at AppBarLayout
viser en del av bildet i stedet for den primære fargen når den kollapses.Du har kanskje også lagt merke til at Imageview
har app: layout_collapseMode
Egenskap. Verdien av attributtet er satt til parallax
å implementere parallaxrulling. I tillegg kan du også legge til app: layout_collapseParallaxMultiplier
Tilordne å angi en multiplikator.
Dette er alle endringene du må gjøre for å få denne rulleteknikken til å fungere jevnt i appen din. Kjør prosjektet for å se denne rulleteknikken i aksjon.
For denne rulleteknikken overlappes det fleksible rommet av innholdet i appen, og rulles på skjermen når innholdet rulles. Du kan se denne teknikken i bruk i følgende video.
For denne teknikken kan du gjenbruke oppsettet fra den forrige teknikken, med noen få små modifikasjoner.
For dette oppsettet:
Imageview
og FloatingActionButton
inne i CollapsingToolbarLayout
ble fjernet. Denne teknikken krever ikke et bilde.CollapsingToolbarLayout
, de app: contentScrim
attributtet ble erstattet med android: bakgrunn
Egenskap. Vi gjør dette, fordi bakgrunnsfargen trenger å matche verktøylinje
bakgrunnsfarge pent når du forsvinner.android: bakgrunn
attributtet ble lagt til i verktøylinje
.app: behavior_overlapTop
attributtet ble lagt til i RecyclerView
. Dette er det viktigste attributet for denne rulleteknikken, da dette attributtet angir hvor mye overlapping visningen skal ha med AppBarLayout
. For at dette attributtet skal ha effekt, bør det legges til samme visning som har app: layout_behavior
Egenskap.Hvis du prøver å bruke denne rulleteknikken med disse endringene, vil det resulterende oppsettet ikke ha en tittel i verktøylinje
. For å løse dette, kan du opprette en TextView
og legg det til verktøylinje
programma.
TextView text = ny TextView (dette); text.setText (R.string.title_activity_technique5); text.setTextAppearance (dette, android.R.style.TextAppearance_Material_Widget_ActionBar_Title_Inverse); toolbar.addView (tekst);
Vær oppmerksom på at du ikke trenger å implementere alle disse teknikkene i appen din. Noen vil være mer nyttige for ditt design enn andre. Nå som du vet hvordan du implementerer hver enkelt, kan du velge og eksperimentere med dem.
Jeg håper du fant denne opplæringen nyttig. Ikke glem å dele det hvis du likte det. Du kan legge igjen noen kommentarer og spørsmål nedenfor.