- androiden app layout: at opstille en liste over clickable billeder med gridview

, i tidligere layout tutorials, vi har set på linearlayout og relativelayout.en almindelig anvendelse i androide er imidlertid, at de har en liste over poster, som du ønsker at vise, at brugeren være i stand til at se.en mulighed for - det er et listview (som drøftet i denne forelæsning).en, der er fantastisk, hvis din liste er bedst repræsenteret af billeder, er gridview.det, som man kunne forvente, er din liste som scrollable net af billeder.læs den for et eksempel på, hvordan man kan oprette en gridview med en liste over de billeder, som når man klikker på et billede, lancerer et websted, der er forbundet med det, en af fordelene ved en gridview er det en listview, den behøver kun at holde mindet de billeder, der er synlig på et tid.som de ved, hukommelse og ressourcer, der anvendes til billeder, scroller, fra side kan genanvendes til dem nedad.men du har stadig brug for at sikre, at deres image filer er en passende størrelse.(en 1024x768 billede stadig er den samme mængde hukommelse, når det vises i en 200x150 kasse.) skabe små thumbnails, hvis dit billede filer er store, for at undgå den androide vm løber ud af hukommelse.,, en gridlayout også er til rådighed fra api - 14.det er en indretning, hvis børn er placeret i et rektangulært gitter.børnene er defineret som indtager en særlig mobil eller celler i den udformning, der gør særlige opstillingsskemaer lettere at forvalte og organisere attraktiv.hvis du bruger andre skemaer og finde dig selv forsøger at rede dem på flere niveauer, kan det være værd at undersøge ved hjælp af en gridlayout i stedet, og det er nok lettere at lære, hvis man starter fra bunden, end nogle af de andre opstillingsskemaer.der er en nyttig lektion til rådighed online gridlayout.,, oprettelse af gridview, først, skabe en ny androide projekt, gridviewtest.dine billeder er til rådighed, er du nødt til at oplagre dem i res /drawable (i betragtning af note vedrørende fil størrelse).nu skaber deres layout fil i res /layout /activity_grid_view_test. xml,:,, < gridview xmlns: androide = "http://schemas.android.com/apk/res/android" androide: id = "@ + id /gridview" androide: layout_width = "match_parent" androide: layout_height = "match_parent" androide: gravimetriske = "centret" androide. stretchmode = "columnwidth" androide: numcolumns = "auto_fit" androide: paddingbottom = "@ dimension /activity_vertical_margin" androide: paddingleft = "@ dimension /activity_horizontal_margin" androide: paddingright = "@ dimension /activity_horizontal_margin" androide: paddingtop = "@ dimension /activity_vertical_margin" />,, du vil se, at det gridview er noget helt for sig selv, og det behøver ikke at være pakket ind i en relativelayout eller linearlayout, forbindelsermedmindre du ønsker at tilføje andre elementer (som f.eks. knapper) på nettet.de fleste af de egenskaber skal være temmelig selvforklarende.der er to, som det er værd at lægge særlig vægt på:,,,,, - androiden: stretchmode = "columnwidth", - - som definerer, hvordan kolonner skal strække til at udfylde det tomme rum., columnwidth, betyder, at hver kolonne er strakt ud lige.,,, - androiden: numcolumns = "auto_fit", - - det passer så mange kolonner som muligt ind i det rum.kan de angive et nummer i stedet, men dette kan ikke fungere korrekt på alle anordninger,.,,,, så vi er nødt til at skrive en adapter til at håndtere grænsefladen mellem image liste og synspunkt:,, offentlige klasse gridadapter udvider baseadapter (privat sammenhæng sammenhæng; private heltal [] imageids = {r.drawable.file1, r.drawable.file2, r.drawable.file3, r.drawable.file4}; offentlige gridadapter (forbindelse c) {forbindelse = c} offentlige int getcount() {tilbage imageids.length;} offentlige formål getitem (int holdning) {tilbage imageids [stilling]} offentlige længe getitemid (int holdning) {tilbage 0} offentlige mening getview (int holdning, opfattelse, viewgroup modervirksomhed) (imageview iview; hvis (betragtning = = null) (iview = nye imageview (baggrund); iview. setlayoutparams (nye gridview. layoutparams (150200)); iview. setscaletype (imageview. scaletype. center_crop); iview. setpadding (5, 5, 5, 5)} andre (iview = (imageview) synspunkt;} iview. setimageresource (imageids [stilling]); tilbage iview;}}, billeder eller henvisninger til deres ressource - id 'er) befinder sig i, imageids,.de fleste af de metoder, som er temmelig selvforklarende.her, kan vi ikke gennemføre, getitemid(), for det er især nyttig, hvis din adapter og taler med en sql database, og du vil være i stand til at få direkte adgang til et punkt på dagsordenen.,,, getview(), gør alt det hårde arbejde... det er en opfattelse, for hver enkelt post.__iview. setlayoutparams() __ fastsætter bredde og højde i betragtning (forholdsvis små, som vi vil have flere af dem til en skærm), og __setscaletype() __ giver mulighed for forskellige måder at center og omfattende billede.bemærk, at du sætter alle disse, hvis de imageview i øjeblikket er ugyldige.fordi gridview genbrug sine ressourcer, hvor det er muligt, og de "nye" opfattelse rent faktisk vil være en "gammel" mener, at alle disse værdier, der allerede er fastlagt.når imageview er oprettet, vi forbinder et bestemt billede med det og sende det tilbage. og endelig oprettede den vigtigste aktivitet, gridviewtestactivity:,, pakke com.example.gridviewtest; offentlige klasse gridviewtestactivity udvider aktivitet (beskyttede tomrum oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate); setcontentview (r.layout. activity_grid_view_test); gridview gridview = (gridview) findviewbyid (r.id.gridview); endelig gridadapter gridadapter = nye gridadapter (dette). gridview. setadapter (gridadapter)); gridview. setonitemclicklistener (nye onitemclicklistener() (offentlige eller onitemclick (adapterview <?> forældre, betragtning v, int holdning, lang id) (//gøre noget her (se næste afsnit)}})}}, denne kodeks fastsætter indholdet i sagen, at vi først har skabt, og så er den aktivitet, og den opfattelse, sammen med vores nye gridadapter klasse.dette vil automatisk klare at trække billeder til nettet, ved hjælp af __getview() __.den __setonitemclicklistener() __ er sat op, men vi skriver liget af den i næste afsnit.,, hvis du styrer din kode, så det burde virke og vise dig de billeder i et smart grid.,, at klikke på et punkt, et net er rart at vise billeder, men i de fleste tilfælde vil du kunne se dem.i dette tilfælde vil vi forbinder vores billeder med en url, og at indlede en browser se url, når en bruger klik på billedet.der er mange måder, du kan gøre det, men her er en mulighed.første, skabe en imagewithurl klasse i gridadapter og tilpasse gridadapter i overensstemmelse hermed:,, private imagewithurl [] imageids = (nye imagewithurl (r.drawable.file1 "http: //f.eks. kom /link1. html"), nye imagewithurl (r.drawable.file2 "http: //f.eks. kom /link2. html"), og - og alle de andre), offentlige imagewithurl getitem (int holdning) {tilbage imageids [stilling]} offentlige mening getview (int holdning, opfattelse, viewgroup modervirksomhed) (//størstedelen er som før iview. setimageresource (imageids [stilling]. getimageid()); tilbage iview;} beskyttede klasse imagewithurl udvider objekt (private int imageid; private snor imageurlstring; imagewithurl (int id, snor url) (imageid = id. imageurlstring = url.} offentlige int getimageid() {tilbage imageid;} offentlige snor getimageurlstring() {tilbage imageurlstring;}}, vores system af ressourcer er nu en række imagewithurl objekter.det betyder, at vi er nødt til at ændre, getitem(), så det kommer tilbage en imagewithurl og edit __getview() __, så får vi en henvisning til det billede, som en del af den imagewithurl.den imagewithurl klasse i sig selv er ligetil.,, endelig er vi nødt til at skrive det, onitemclicklistener(), metode i gridviewtestactivity:,, gridview. setonitemclicklistener (nye onitemclicklistener() (offentlige eller onitemclick (adapterview forælder, betragtning v, int holdning, lang id) (intent - to - jeg = nye hensigt (hensigt. action_view); i.setdata (uri. analysere (gridadapter. getitem (stilling). getimageurlstring())); startactivity (i)}}), skaber det en ny hensigt med url knyttet fra specifikke net punkt slået til.hensigten er så vant til at starte en virksomhed, - - så vil det se ud for den foretrukne browser app og iværksætte url i det.(for yderligere oplysninger om aktiviteter og praktisk, jf. foregående forelæsning om androide basale. du har din clickable net i aktion!,

android gridview



Previous:
Next Page: