300 likes | 458 Views
Android-Programmering. Våren 2014. Introduksjon ActionBar. Behovet for forandring Hva er Android ActionBar Tilpassning av ActionBar Navigering – tabs ActionBar - versjonshåndtering. Behovet for forandring. Den orginale menyen baserte seg på visse antagelser
E N D
Android-Programmering Våren 2014
Introduksjon ActionBar • Behovet for forandring • Hva er AndroidActionBar • Tilpassning av ActionBar • Navigering – tabs • ActionBar - versjonshåndtering
Behovet for forandring • Den orginale menyen baserte seg på visse antagelser • Skjermene er for små til å inneholde menyvalg og navigasjon • Dette gjør brukerinteraksjonen inneffektiv • Samme løsning fungerer på alle enheter • Ender opp med design til de «minste» enhetene • Alle enheter har fysiske knapper • Handlinger blir to-trinns
Behovet for forandring • Enhetene endrer seg raskt, gamle antagelser er foreldet • Skjermstørrelser blir større • Større plass til elementer på skjermen • Enhetene varierer • Applikasjonene burde tilpasse seg styrker/kapabiliteter til hver enhet • Faser ut fysiske knapper • Onscreen manyvalg og navigasjon gjør brukerinteraksjonen mer effektivt
Hva er Android ActionBar? • Et samlingspunkt for brukerinteraksjon • Tradisjonell meny • Støtte for onscreen menyknapper • Variasjon i navigasjon • Applikasjonstittel og ikon • Tilpasser seg forskjeller i skjermstørrelse/orientering
ActionBar - Deler • Applikasjonsikon • Applikasjonsikon med «up affordance» • Action Items • Action overflow • Overflow action items • Tittel • View controls • Drop-down menyer 1 2 4 2 3 6 3 4 5 5 6 4 3 1 7 7 8 8
ActionBar - Tilpasning • ActionBaren er tilpassningsdyktig • Definerer rettningslinjer for oppførsel • Android tar seg av tilpasningen basert på enhetens egenskaper
Tabbed Navigasjon • ActionBar inneholder tabbed navigasjon • Tabs er plassert direkte på ActionBaren • Tilpasser seg tilgjengelig plass på skjermen • Tabs kan scrolle
ActionBar og Android versjoner • Kom med versjon 3.0 • Støtter Android 2.1 (API level 7) med ActionBarCompat • Finnes alternativer som ActionBarSherlock
Oppsumering • Samlingspunkt for brukerinteraksjon • Inneholder en rekke interaksjonsegenskaper • Tilpasser seg forskjellige enheter
Se på • Legge til ActionBaren • Legge til actions • Kontrollere utseende • Gjemme ActionBaren
Legge til ActionBaren • Benytter den vanlige menyen • ActionBar er tilgjengelig ved bruk av Theme.Holo • Automatisk når minSdkVersion eller targetSdkVersion 11 benyttes
ActionBar bygger på menykonseptet • Fungerer på samme måte som de gamle menyene • Bygge opp ActionBaren • Layouten blir laget gjennom menyressursene • Bruker Activity.onCreateOptionsMenu • Håndtering av manyvalg • Benytter Activity.onOptionsItemSelected • Kan benytte onClick attributten <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menuOption1" android:icon="@android:drawable/ic_menu_mapmode" android:title="@string/action_option_1"/> <item android:id="@+id/menuOption2" android:icon="@android:drawable/ic_menu_rotate" android:title="@string/action_option_2"/> </menu> publicboolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); returntrue; }
Legge til Actions til ActionBar • Du kan legge til rettningslinjer for å gjøre menu items ActionBar actions • Kontrolleres gjennom showAction attributen • Always: Ikonet vil alltid vises på ActionBaren • ifRoom: Ikonet vil vises på ActionBaren hvis det er plass • withText: Inkluder tekst hvis det er plass • Kan kombinere verdier med «|»
Splitte ActionBaren • Kan benytte rettningslinjer for å splitte ActionBaren i 2 deler • Lar systemet vise flere valg på mindre skjermer • Legger til valg på en bar på bunnen av skjermen • Andre deler av ActionBaren forblir på toppen • Legg til uiOptions attribute til manifestfilen • Sett attributtverdien til splitActionBarWhenNarrow • Kan benyttes på individuelle aktiviteter, eller hele applikasjonen
Kontrollere utseende til ActionBar • Kan konfigurere det meste av utseende • Bruk Activity.getActionBar for å få en referanse • Bilder på ActionBaren • setIcon: Kan benytte et annet ikon • setLogo: Større bilde enn et ikon • setBackgroundDrawable: Benytte bitmap eller lignende som bakgrunn • Tittel teksten • setTitle: Endre tittelteksten • setSubtitle: Mindre undertekst • setDisplayShowTitleEnabdled: Vise/skjule tittel og undertekst • Mye mer
Skjule ActionBar • Skjule ActionBaren med programatisk • Bruk Activity.getActionBar for å få referansen • ActionBar.hide/ActionBar.show for og vise/skjule ActionBaren • ActionBar.isShowing for å avgjøre om den er synlig • Skjule ActionBaren statisk • Benytte Theme.Holo.NoActionBar for aktiviteten • Activity.getActionBar vil returnere null
ActionBar Overlay • Benytt ActionBar overlay for å gi en bedre skjul/vis håndtering • Overlay - skjule/vise ActionBaren uten og endre activity størrelse • Legge til overlay med activity stylen • Definer en ny style som arver fra Theme.Holo • Set windowActionBarOverlay • Legge til overlay programatisk • Bruk Activity.getWindow for å få en referanse til vinduet • Bruk requestFeature og legg til Window.FEATURE_ACTION_BAR_OVERLAY • Applikasjonen må håndtere hva som gjør at ActionBaren vises/skjules • Vanlig og bruke touch-based events • Vanlig og skjule den etter en action item er valgt
Oppsumering • Bygger på menykonsepter • Benytter rettningslinjer for å tilpasse seg • Kan gjøre tilpassninger • Overlay gir mer skjermplass til activityen
ActionBar navigering • ActionBar navigering • Tabbed navigasjon • Partial tabbed navigasjon • Kontrollere plassering av tabs • Liste navigasjon
ActionBar navigering • 3 moduser • Standard • Kun ved hjelp av action items • Tabs • Brukeren kan navigere mellom views ved hjelp av tabs • En tab kan benytte hele skjermen, eller deler av den • Tabs kan være fast, eller benytte horisontal skrolling • Liste • Kan navigere mellom views ved hjelp av en drop-down liste
Legge til tabs • Å lage tabbed ActionBar benytter 3 steg • Legge til ActionBar i tabbed-navigation mode • Kall setNavigationMode på ActionBar med NAVIGATION_MODE_TABS • Opprette en instans av ActionBar.Tab for hver tab • Lag en Fragment for innholdet • ActionBar.TabListener interface implementasjon for håndtere taben • Legge til hver ActionBar.Tab til ActionBaren • Kall ActionBar.addTab for hver ActionBar.Tab instans
Tab interaksjon • ActionBar.TabListener håndterer hver tabs interaksjon • Ansvarlig for å håndtere når en tab vises • Må legge til en fragment til en activity • Hver tab må assosieres med en egen TabListener • Finnes en standard implementasjon for å gjøre dette
Implementere ActionBar.TabListener • Metoder • onTabSelected • Kalles når en tab blir klikket • Første gang må fragmenten instansieres og legges til activityen • Senere må den gjøres synlig • onTabUnselected • Kalles når taben ikke er valgt lenger • Må skjule taben • onTabReselected • Kalles når samme tab blir klikket igjen • Må ikke gjøre noe
Tabs til deler av skjermen • Tabs kan kontrollere deler av skjermen, hvis ønskelig • Kan kontrollere innholdet i alle ViewGroups • LinearLayout, etc. • Definere en layout til Activityen • Inkluder en ViewGroup til innholdet i tabene • ViewGroupen Må ha en ID • Trenger de samme komponentene som når den vises over hele aktiviteten • Fragments, ActionBar.Tab, ActionBar.TabListener • Assosier ActionBar.Tablistener med ViewGroupen
Kontrollere plassering av tabs • Tab plasseringer avgjøres av tilgjengelig plass • Vanligvis under ActionBar • I ActionBaren når det er plass • Kan lage mer plass ved å legge action items på bunn og ved å skjule ikon/tittel
Skrollbare tabs • ActionBar tabs har skrolling innebygd • Tabs blir automatisk skrollbare horisontalt når det er ikke er nok plass • Må ikke gjøre noe spesielt
List navigasjon • List navigasjon gir brukeren en drop-down liste • Lister blir laget som en SpinnerAdapter • Legger til en drop-down liste i actionbaren • Gjør det mulig og pupulere den med forskjellige kilder • Vanligvis vil man skjule tittelen for å gi rom til drop-down listen • Hver list item representerer et skjermbilde • Hver skjerm er implementert som en Fragment
Implementering av list navigasjon • ActionBar.OnNavigationListener håndterer skjermendringene • En instans håndterer alle skjermene • onNavigationItemSelected kalles hver gang et valg blir gjort • Sender index • Sender ID hvis det finnes • Hvert valg håndteres ved å vise riktig Fragment • Attacher fragment til android.R.id.content for hele skjermen • Attacher fragment til riktig ViewGroup id for en del av skjermen
Oppsumering • ActionBar navigering gjør det lett og velge skjermer i appen • Navigasjonen baserer seg på Fragments for hvert skjermbilde • Tab navigasjon krever en ActionBar.TabListener for hver tab • Du kan kontrollere plasseringen av tabs ved å flytte ActionBar innhold • List navigasjon bruker en enkel ActionBar.OnNavigationListener