Android-brukergrensesnittdesign Grunnleggende om kontrollfokusordre

Det er ikke noe mer irriterende enn å prøve å navigere et dårlig designet brukergrensesnitt på et mobilprogram. Hvordan søknaden din fungerer når det gjelder skjermnavigasjon, kan bety forskjellen mellom en glad bruker og en som flammer deg på Android Market. I dag fokuserer vi på fokus - det vil si: kontrollfokus, og hvordan du tilpasser det innenfor brukergrensesnittene dine.

Android-enhetens inngangsmetoder blir ganske forskjellige: retningsbestemt pads, trackballs, berøringsskjerm, tastatur og mer. Noen enheter, som tabletter, blir primært navigert ved berøring. Andre, som Google TV, har ingen berøringsskjerm overhodet og stole på inntastingsenheter som de med en retningsbestemt pute (d-pad).

Android-utviklere må forstå hvordan brukerne navigerer på kontrollene på en skjerm, hvordan og i hvilken rekkefølge disse skjermkontrollene får og mister fokus, og hvordan man tilpasser kontrollfokusordre til sine applikasjoner for å gi brukerne en frustreringsfri opplevelse.

Forstå kontrollfokusordre

Android-plattformen gjør sitt beste for å bestemme en passende kontrollrekkefølge for en gitt layouttype. I mange tilfeller gir standardfokusordningen mening. Dette er imidlertid ikke alltid tilfelle. Hvilken kontroll skal få fokus neste bestemmes ved å finne den nåværende fokuserte kontrollens nærmeste nabo i en gitt retning (opp / ned / venstre / høyre). Når det er flere kontroller som passer til den beskrivelsen, skanner plattformen fra venstre til høyre, topp til bunn, som om man kan lese en bok på engelsk.

Dette har noen konsekvenser. Som standard vil den øverste kontrollen i en skjerm ikke ha noe å fokusere på hvis brukeren navigerte? Up ?, eller vil noe skje hvis brukeren navigerte? Down? fra nederste kontroll på skjermen. Tilsvarende ville ingenting oppstå hvis brukeren prøvde å navigere? Venstre? fra venstre mest kontroll, eller? Høyre? fra den høyeste kontrollen. Det er ingen? Innpakning? av fokus, som standard.

La oss se på et eksempel på hvordan du kanskje vil endre standard fokusadferd på en skjerm og få den til å fungere for deg og dine brukere. For eksempel, la oss si at du vil tvinge fokuseringsordren din til å vikle rundt sirkulært rundt et sett med kontroller som utgjør et klok ansikt.

Trinn 0: Komme i gang

Vi gir full kildekode for prøveapplikasjonen som diskuteres i denne opplæringen. Du kan laste ned sample kildekoden vi gir for gjennomgang her.

Trinn 1: Definer en layout med kontroller

Først må du opprette eller redigere layoutressursfilen som brukes av aktivitetsklassen din, for eksempel /res/layout/main.xml. For eksempel definerer følgende layout et slags klokke ansikt? av knapp kontroller ved hjelp av en relativ layout.

               

Stilen kalt clockFaceNum er definert i filen /res/values/styles.xml som følger:

    

Den resulterende skjermen ser slik ut:

Trinn 2: Gjennomgå standardfokusordre

La oss se gjennom standardfokusordren for klokkeansvaret Knappkontrollene i denne RelativeLayout. Hvis brukeren er fokusert på 12-knappen og trykker ned? På en retningsbestemt pute vil neste kontroll for å ta fokus være 11-knappen, etterfulgt av 10-knappen, osv.

Standard? Down? banen er vist her:

Trinn 3: Gi en tilpasset kontrollfokusordre

La oss si at vi vil tvinge brukeren til kun å kunne krysse klokkeansattkontrollene med klokken eller mot klokka i motsetning til standardfokusordren, som vist:

Vi kan definere denne oppførselen ved å spesifisere, for hver knapp, hvilken kontroll skal få fokus neste. Det er fire XML-attributter du kan angi på hvilken som helst visningskontroll for å definere fokusordren. Disse egenskapene er:

  • android: nextFocusUp-Dette attributtet definerer kontrollen som skal få fokus hvis brukeren navigerer opp
  • android: nextFocusDown-Dette attributtet definerer kontrollen som skal få fokus hvis brukeren navigerer ned
  • android: nextFocusLeft-Denne egenskapen definerer kontrollen som skal få fokus hvis brukeren navigerer til venstre
  • android: nextFocusRight-Denne egenskapen definerer kontrollen som skal få fokus hvis brukeren navigerer til høyre

Så la oss si at vi vil ha alle? Down? og? rett? navigasjon for å tillate brukeren å krysse klokkeansiktet Knappen styrer med klokken, og alt? Up? og Venstre? navigasjon for å tillate brukeren å krysse kontrollene i mot klokken rekkefølge. Vi må da definere disse fire attributter for hver kontroll. For eksempel, hvis du flyttet? Down? eller høyre? Fra 12-knappen, vil du nå 1-knappen. Tilsvarende, hvis du flyttet? Up? eller? Venstre? Fra 12-knappen, vil du nå 11-knappen.

En komplett definisjon av dette nye klokkeinnstillingsoppsettet ser slik ut:

               

Derfor er vår nye? Down? Sti, som starter ved 12-knappen, ser slik ut nå:

Trinn 4: Angi innledende kontrollfokus

Endelig er det et triks for å sette standardkontrollen for å få fokus på en gitt skjerm fra din layoutfil. Du kan bare gjøre dette for en Se kontroll i hver fil.

Bruk taggen i visningskontrollen for å angi startfokus på skjermen. For eksempel vil vi kanskje oppdatere 12-knappen for å få opprinnelig fokus, slik som dette:

 

Du kan selvfølgelig også bruke den programmatiske metoden til å angi kontrollfokus også, ved hjelp av Vis klassemetoden, kalt requestFocus ().

Konklusjon

Android-utviklere må huske at forskjellige brukere vil navigere i et programs brukergrensesnitt ved hjelp av forskjellige inngangsmetoder. Noen metoder gjør det enkelt å hoppe mellom skjermkontroller, mens andre kan gjøre navigasjonen tung. Utviklere kan tilby tilpassede fokusordrer som kan forbedre brukerens erfaring med applikasjonen. Vennligst ikke glem tastaturbrukerne. ?

Om forfatterne

Mobilutviklere Lauren Darcey og Shane Conder har medforfatter flere bøker om Android-utvikling: en grundig programmeringsbok med tittel Android Wireless Application Development, andre utgave og Sams lær deg selv Android Application Development i 24 timer, andre utgave. Når de ikke skriver, bruker de sin tid på å utvikle mobil programvare hos deres firma og tilby konsulenttjenester. De kan nås via e-post til [email protected], via bloggen deres på androidbook.blogspot.com, og på Twitter @androidwireless.

Trenger du flere hjelpeskrivende Android-apper? Se våre nyeste bøker og ressurser!

я я