Izgled koordinatora - Slika iz imgur-a

Android Dizajn - Izgled koordinatora br. 1: Uvod

Izgled koordinatora opisan je kao "superpokretan FrameLayout" prema dok. Koristi se za olakšavanje interakcije pogleda na vašem izgledu. To se postiže stvaranjem ili dodjeljivanjem tih ponašanja određenim ponašanjima. Ta su ponašanja jezgra onoga što materijalni dizajn čini jedinstvenim, a uključuju poznate interakcije, poput kliznih ladica i ploča za pomicanje prstima i elemente koji se mogu prebacivati ​​drugim elementima dok se kreću i animiraju.

Pogledajmo ponašanja i kako funkcioniraju. U sljedećem ćemo članku pokazati jednostavan primjer kako stvoriti ponašanje koje omogućava osnovnu interakciju između pogleda u CoordinatorLayout

Slika 1: Gumb za plutajuću akciju reagirajući na Snackbar Image ljubaznošću Nikite Rusin

ponašanja

Ponašanja su u srži rasporeda koordinatora. Predstavljaju interakcije između dva ili više prikaza u istom izgledu. Oni se obično kategoriziraju u sljedeće:

1. Ponašanja zasnovana na rasporedu: npr. kada se Snackbar pojavi s dna, FloatingActionButton odmah prevodi prema gore kako bi se prilagodio dolaznom pogledu kao što je prikazano na slici 1 na lijevoj strani.
Sidrenje je također oblik ponašanja temeljenog na rasporedu, na primjer, kada je FloatingActionButton usidren na AppBarLayout kao što je prikazano na slici 2. Ponašanja zasnovana na rasporedu uglavnom su sveprisutna u Android Framework-u i općenito ih je najlakše stvoriti, pa ćemo se usredotočiti o njima u ovom članku.

Slika 2: Gumb s plutajućom radnjom usidren na AppBar (desno). Ljubaznošću Saula Molineroa

2. Ponašanja zasnovana na pomicanju: npr. Kada RecyclerView i AppBar postoje u aCoordinatorLayout, kada se RecyclerView pomiče, ona će malo gurnuti AppBar prema gore, a zatim minimizirati AppBar, kako biste nastavili lagano pomicanje kao što je prikazano na slici 2 (slijeva). Scroll-based ponašanje uključuju malo više posla kako bi ih pokrenuli i za sada se nećemo puno usredotočiti na njih.

Ako zaronite u kodu bilo kojeg prikaza koji sadrži ponašanje, primijetit ćete da je ponašanje vezano za prikaz pomoću napomena kao što su dolje prikazane u EC-1, EC -2 i EC-3.

EC-1: AppBarLayout ponašanje
'CoordinatorLayout.DefaultBehavior (AppBarLayout.Behavior.class)
AppBarLayout u javnoj klasi proširuje LinearLayout
EC-2: Lebdenje ponašanja tipki
'CoordinatorLayout.DefaultBehavior (FloatingActionButton.Behavior.class)
javna klasa FloatingActionButton proširuje VisibilityAwareImageButton
EC-3: ponašanje u užini
javna finalna klasa Snackbar proširuje BaseTransientBottomBar 

Korištenje napomena kako je prikazano u EC-1 i EC-2 način je programskog vezanja ponašanja s pogledom. Pogled može imati samo jedan zadani prilog za Ponašanje. Važno je napomenuti da Snackbar i njegov nadređeni BaseTransientBottomBar nemaju vezano za njih ponašanje, iako oboje komuniciraju s FloatingActionButton kada je pritisnuta FloatingActionButton. Ovo pokazuje da postoji usmjerenost kada je u pitanju ponašanje. Značenje ponašanja može ovisiti o drugom pogledu, ali ne nužno i obrnuto. Da bismo vidjeli zašto, pogledajmo kako ponašanja djeluju iznutra.

Provođenje ponašanja

Kada je u pitanju stvaranje ponašanja, vaša klasa ponašanja mora proširiti razred koordinatora.Behaviors , gdje V predstavlja pogled koji će sadržavati ponašanje. Koordinator.Behaviors klase ima nekoliko metoda koje se mogu poništiti radi preciznijeg podešavanja vašeg ponašanja, no postoje 3 metode koje su ključne za nadvladavanje.

Da bismo dublje shvatili, kao primjer ćemo koristiti interakciju između FloatingActionButton i BottomSheet-a. (Pogledajte klasu FloatingActionButton $ Behavior)

1. layoutDependsOn (…)

Koristi se za provjeru je li određeni pogled u CoordinatorLayout prikazu o kojem ovisi vaše ponašanje. Na primjer, FloatingActionButton će provjeriti je li BottomSheet pogled od kojeg ovisi. Ako je tako, vratit će se istina.

2. onDependentViewChanged (…)

Jednom kada izgled pronađe ovisnost, započet će s promatranjem te ovisnosti. Na primjer, nakon što je FloatingActionButton utvrdio da to ovisi o BottomSheet-u, ova metoda će preslušati promjene na BottomSheet-u i obavijestiti FloatingActionButton. Primjer koda (EC-5) u nastavku prikazuje to. Evo kamo ide logika za obradu interakcije.

EC-5: Ovdje je kôd iz izvora FloatingActionButton
@Override
javni boolean onDependentViewChanged (koordinator roditelja rasporeda, dijete FloatingActionButton,
        Pogledajte ovisnost) {
    ako (ovisnost instance AppBarLayout) {
        // Ako ovisimo o AppBarLayoutu, automatski ćemo ga prikazati / sakriti
        // ako je FAB usidren na AppBarLayout
        updateFabVisibilityForAppBarLayout (ovisnost o roditelju, (AppBarLayout), dijete);
    } else if (isBottomSheet (ovisnost)) {
        updateFabVisibilityForBottomSheet (ovisnost, dijete);
    }
    vratiti lažno;
}

Kao što možemo vidjeti, ova metoda provjerava vrstu pogleda u CoordinatorLayout, u našem slučaju AppBarLayout i BottomSheet, za AppBarLayout, pričvrstiće se za njega, a za BottomSheet će se sakriti ili prevesti prema gore ovisno pod raznim uvjetima.

3. onDependentViewRemoved (…)

Ova metoda je slična onDependentViewChanged (), ali obavještava priloženi prikaz, tj. FloatingActionButton ako je BottomSheet uklonjen iz CoordinatorLayout. FloatingActionButton će tada reagirati u skladu s tim da će se pojaviti pr prevode prema dolje ako nije nestao.

Postoji više metoda koje nudi koordinator.Behaviors klase koje nude više preciznosti. Ove 3 su najosnovnije i najvažnije, osobito onDependentViewChanged

Zaključak

Kao što vidite, izgled koordinatora, ako se upotrebljava na odgovarajući način, vrlo je moćan mehanizam za orkestriranje interakcija između ugniježđenih pogleda. Koristan je alat za interakciju pogleda, čime se u konačnici otkrivaju ideali Materijalnog pokreta.

U sljedećem ćemo članku vidjeti kako stvoriti vlastito prilagođeno ponašanje! Vjerujte mi da je lakše nego što mislite. Hvala na čitanju!
Mir!