hvordan til at opbygge en grundlæggende menu androide app udvikling

, skabe passende menuer for din app er afgørende for at skabe en god bruger erfaring.i den sidste lektion, så vi på at skabe muligheder menu med xml - og også på at tilføje punkter programmatically.i denne forelæsning, vi vil se på deres menu - menuer, som vedrører en særlig del af den opfattelse., som af androide 3,0, er der to typer kontekstuelle menu: gamle flydende menuer, der flyder på skærmen, forankret til element klikkede på, og deres indsats - modus (androide 3,0 og op), som en grundlæggende foranstaltning bar (cab) synes øverst.taxaen er den foretrukne måde at skabe en grundlæggende menu, men hvis din kode er forenelig med androide 2.3 eller tidligere, bør de også give et flydende version at falde tilbage på.vi dækker begge muligheder og også se på, hvordan til at omfatte både i din kode, vil vi bruge de samme grundlæggende gridview kode, som i den sidste forelæsning, og vores grundlæggende menu indtræden vil bruge intent - to - kode fra gridview forelæsning, som affyrer en url forbundet med billedet sammen.,, flydende menuer, vi starter med flydende kontekstuelle menu, som de kan bruge til at drive en version anordninger ældre end api - 11.først, lad os skabe vores xml - menu, res /menu /grid_element_menu. xml,:,, <?xml - version = "0" kodning = "utf - 8"?> < menu xmlns: androide = "http://schemas.android.com/apk/res/android" > < punkt androide: id = "@ + id /showurl" androide: afsnit = "@ snor /showurl_title" /> < /menu >,, vi klarer det i gridviewtestactivity kode.vi er nødt til at tilføje en opfordring til at registrere net poster for forbindelse menu og gennemføre oncreatecontextmenu():,, beskyttede tomrum oncreate (bundt savedinstancestate) (//som før gridview. setadapter (gridadapter); registerforcontextmenu (gridview); //resten som før} offentlige tomrum oncreatecontextmenu (contextmenu menu, betragtning v, contextmenuinfo menuinfo) (super. oncreatecontextmenu (menu, v, menuinfo); menuinflater inflater = getmenuinflater(); inflater. puste (r.menu.grid_element_menu menuen)},,, registerforcontextmenu(), associerede virksomheder de opfattelse, gridview) med en forbindelse menu.hvis man er af den opfattelse, gridview eller listview, gør dette registre alle sine produkter i samme forbindelse menu.for andre synspunkter, de har behov for for at registrere hvert holdning til sin egen individuelle forbindelse menu., oncreatecontextmenu(), virker på nøjagtig samme måde, som den sidste lektion er, oncreateoptionsmenu(), øge menu fra xml.,, for endelig at gøre det rigtige, når de bruger det på en menu punkt, er vi nødt til at gennemføre, oncontextitemselected():,, offentlige boolean oncontextitemselected (menuitem punkt på dagsordenen) (adaptercontextmenuinfo info = (adaptercontextmenuinfo) punkt. getmenuinfo(); skift (pkt. getitemid()) (sag r.id.showurl: hensigt i = nye hensigt (hensigt. action_view); i.setdata (uri. analysere (gridadapter. getitem (info. stilling).getimageurlstring())); startactivity (i); tilbage. misligholdelse: afkast super. oncontextitemselected (punkt)}}, her har vi kun én menupunkt så langt, men vi vil give mulighed for at tilføje flere ved hjælp af et skift erklæring.det giver også mulighed for at menu emner til en superclass.,, samle og flygt, og du vil se din flydende menu, når du længe klik på et punkt.,,,,, kontekstuelle aktion menu, nu fra den flydende kontekstuelle menu til nu foretrukket kontekstuelle aktion bar (cab).der er to måder at skabe en taxa.hvis du ønsker at knytte den taxa til en specifik fælles holdning, kan du bruge actionmode.callback.(det er drøftet i detaljer i den androide menuer dok.), men det fungerer ikke så godt med en listview eller gridview.for dem er det bedre at gennemføre en multichoicemodelistener.dette gør det muligt for brugeren at samle flere punkter, og så anvende en enkelt mulighed for dem.her, men vi er kun at anvende vores prøve valg til et enkelt punkt, at påvise grænseflade.ved at skabe din app, nøje overveje, hvilke menuer til brug under hvilke omstændigheder at skabe den bedste brugeroplevelse.,, multichoicemodelistener ligner denne (i gridviewtestactivity):,, private multichoicemodelistener modelistener = nye multichoicemodelistener() (int itemselectedposition; offentlige boolean oncreateactionmode (actionmode tilstand, menu menu) (menuinflater inflater = tilstand. getmenuinflater(); inflater. puste (r.menu.grid_element_menu menuen); tilbage.} offentlige tomrum onitemcheckedstatechanged (actionmode tilstand, int holdning, id, boolean kontrolleres) (itemselectedposition = holdning;} offentlige boolean onprepareactionmode (ac -tionmode tilstand, menu menu) (//anvendes til opdatering af taxa efter anmodning tilbage invalidate() falske} offentlige boolean onactionitemclicked (actionmode tilstand, menuitem punkt på dagsordenen) (skift (punkt på dagsordenen. getitemid()) (sag r.id.showurl: hensigt i = nye hensigt (hensigt. action_view); i.setdata (uri. analysere (gridadapter. getitem (itemselectedposition).getimageurlstring())); startactivity (i); - tilstand. finish(); tilbage. misligholdelse tilbage med falske}} offentlige tomrum ondestroyactionmode (actionmode mode) (//ikke}};,, hvis man sammenligner denne kode til flydende kontekstuelle menu, eller de muligheder, kortet, du vil se en masse ligheder.vi sprængte menuen, når den er oprettet, og onactionitemclicked(), endnu en gang har, skifte - kode, vi har set før.denne gang er vi nødt til at få den holdning, den udvalgte post fra en anden metode, onitemcheckedstatechanged(),.bemærk, at vi kun har en enkelt int opbevarer det punkt holdning, hver gang et punkt på dagsordenen er udvalgt eller ikke - selekterede, int vil blive erstattet.det betyder, at vi kun sende et enkelt url (i punkt for nylig sammen med hensigt.hvis vi vil være i stand til at handle på flere punkter (f.eks. til at slette dem, eller at dele dem), er vi nødt til at holde styr på alle punkter udvalgt.,, der har forårsaget den multichoicemodelistener, det tager kun to linjer, til at sætte det i gridviewtestactivity:,, beskyttede tomrum oncreate (bundt savedinstancestate) (//som før gridview. setchoicemode (gridview. choice_mode_multiple_modal); gridview. setmultichoicemodelistener (modelistener)}, udarbejde og løbe, og en lang klik vil give den taxa.,, du kan også bruge den actionmode til at foretage ændringer i de øvrige foranstaltninger bar.for eksempel, du kan sætte skik titel og undertitel:,, offentlige boolean oncreateactionmode (actionmode tilstand, menu menu) (//som før tilstand. settitle ("action bar!"); - tilstand. setsubtitle ("undertekst"); tilbage.}, denne skærmbillede, viser, hvor de skal anføres.se actionmode docs for andre muligheder.,,,,, en anden forbedring i kodeksen, ville være at ændre baggrunden farve for udvalgte poster, eller at oprette et afkrydsningsfelt, til at vise, hvilke punkter (er) er blevet udvalgt.,, håndtering på, hvis du kode både flydende menu og bilen og køre det på en android enhed at api - 11 eller højere, flydende menu, vil ikke blive taget til fordel for den taxa, som nu er den foretrukne mulighed for grundlæggende menuer.for at gøre din kode af de flydende menu, den tidligere api - versioner, som du kan kode en api - kontrol:,, beskyttede tomrum oncreate (bundt savedinstancestate) (////////////////- som før næste linje erstatter setchoicemode() og setmultichoice... () linjer setupcontextualactionbar();} private tomrum setupcontextualactionbar() (hvis (build.version.sdk_int > = bygge. version_codes. honeycomb) (gridview. setchoicemode (gridview. choice_mode_multiple_modal); gridview. setmultichoicemodelistener (nye multichoicemodelistener() (//kode til at oprette multichoicemodelistener som før})), vil du også nødt til at tilføje en bestemmelse i begyndelsen af klasse, til at undertrykke api - kompatibilitet advarsler og tillade, at kodeksen udarbejde, @ suppresslint ("newapi") offentlige klasse gridviewtestactivity omfatter aktiviteter, bør de kun gøre det, hvis du er meget sikker på, at du har pakket alle dine nye api - kode i passende, hvis bestemmelser eller anden beskyttelse.for mere om støtte til flere forskellige platforme og apis, se androiden dok.,,, til mere i denne serie:,, androide app udvikling: hvordan kan man skabe en muligheder menu,

android floating menu
android menu cab



Previous:
Next Page: