Komme i gang med Xamarin.Forms: Basics

Getting Startet med Xamarin.Forms: Basics
55
Del
6
Del

Dette Cyber ​​Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter Komme i gang med Xamarin.Forms.Getting Startet med Xamarin.Forms. Layoutalternativer
1. Innstilling av Stage

Helt siden Xamarin kom på scenen for flere år siden, har C # utviklere gledet i å kunne lage mobile applikasjoner som er rettet mot ikke-Microsoft-plattformer. Det er med ganske mye spenning at vi nå kan skrive programmer i et språk som er veldig kjent for oss, og være i stand til å distribuere dem til de store aktørene i mobil plass, iOS og Android.

Siden disse apps kan være skrevet i et enkelt språk, er det bare fornuftig å ønske å skrive en eneste kodebasen som ville samle inn egne apps for de ulike plattformene og til slutt tillate oss å nå verden av Write Once, Run Overalt /Anywhere
. Dette høres bra ut på papiret, men det var ikke helt tilfelle.

2. Problemet

Konseptet med å skrive en søknad en eneste gang og være i stand til å kjøre den på flere plattformer er ikke en ny. Utviklere har forsøkt å oppnå dette i mange år med desktop og server applikasjoner skrevet i Java eller C /C ++, og kompilert til de spesifikke plattformer. Hvorfor skal mobile apps være annerledes? Det enkle svaret er, de er ikke det. Som mobile app utviklere, kjører vi inn i de samme store plattformer problemer som andre gjør, brukergrensesnittet.

Når det gjelder å skrive noen form for programvare som du ønsker å være i stand til å kjøre på forskjellige plattformer, lett
del er logikken. Av lett
, mener jeg den delen av søknaden som ikke endres uavhengig av plattform du målretter. Uansett hvilken plattform du målretter, vil du fortsatt trenger å få data fra tjenester, databaser, filer, etc. Oddsen er at dette vil svært sjelden endres. Den delen som gjør endre er UI. Dette er først og fremst på grunn av den iboende forskjeller på de ulike plattformene. Hver plattform vil ha sin egen SDK, definere plattformens evner så vel som deres visuelle komponenter og egenskaper.

Når du ser på dagens mobile landskapet, vil du raskt finne at det er tre store aktører, iOS
, Android
, og Windows Phone
. Disse tre er i konstant konkurranse om å prøve å engangs opp de andre for å få mer markedsandel. Men, i overskuelig fremtid, er det disse plattformene som du ønsker å være rettet. Grunnen til at kryssplattform utvikling på mobilen kan være vanskelig skyldes de grunnleggende forskjeller i form av UI. En knapp er ikke lenger bare en knapp. En knapp er en UIButton med XML på iOS, en knapp med AXML på Android, og en knapp med XAML på Windows Phone.

3. Løsningen

Som med de fleste plattformer rammer, har Xamarin vanligvis hatt en lignende strategi når det gjelder å begrense hodepine som UI årsaker, delt ut logikken fra brukergrensesnittet.

I en verden av C #, vil denne strategien vanligvis forlate deg med minst N + 1
prosjekter i din løsning. Du vil ha minst ett prosjekt
for hver av de N plattformer
du er målgruppe, og vil du også trenger å ha minst ett prosjekt som skal inneholde all den delte koden som søknaden er avhengig på. På den måten kan du ha plattformspesifikke prosjekter bare referere til delt kode prosjektet og bare trenger å bekymre deg for hvordan å visualisere data. Takket være noen ny funksjonalitet i .NET og Mono rammer, har du et par alternativer

Alternativ 1:. Portable klassebiblioteker

Bærbare Class Libraries eller PCLs kom på scenen først. Det er lettest å tenke på PCLs som normale klassebiblioteker, bare med begrenset funksjonalitet. Det er lettere å forstå dette konseptet med et eksempel. Start med å lage en ny løsning /prosjekt og gi den navnet PCLDemo Hotell og velg Class Library (Portable)
som prosjektmalen.

Når du klikker OK
i Visual Studio, vil du se et annet vindu showet opp som ligner på dette:

Avhengig av de verktøyene du har installert, kan det se litt annerledes ut. I dette skjermbildet har du muligheten til å målrette så mange eller så få plattformer som du ønsker. Tommelfingerregelen her er å bare velge de plattformene som du absolutt trenger å målrette. Grunnen til dette er at flere plattformer man ønsker å målrette, vil færre funksjoner være inkludert i dette biblioteket. For en oppdatert liste over funksjonene som støttes av de ulike plattformene, sjekk ut Cross Platform Development med Portable Class Library side på MSDN.

Hvis du ikke velger de riktige plattformene i denne dialogen, kunne du kjøre inn inkompatibilitet problemer senere. For å se dette i aksjon, fjerner du merket de nederste tre alternativer:

Windows Phone 8.1

Xamarin.Android

Xamarin.iOS

Nå, opprette et nytt prosjekt av en av de typene som du fjernet støtte fra i PCL. Som et eksempel kan du lage en ny Xamarin.Android prosjekt å bruke noen av de medfølgende maler. Når prosjektet er opprettet, høyreklikker du på Referanser
og velg Legg Reference
. I Reference Manager
dialogboksen velger du Løsning > Prosjekter
fra filteret til venstre, og merk av i boksen ved siden av PCLDemo
prosjektet.

Når du klikker OK
, vil du se en feilmelding som følgende:

Denne feilen gjør at du vet at prosjektet du er nå i er uforenlig med de målene som er tilgjengelige i det valgte PCL. Du kan omgå dette ved å gå inn i PCL prosjektegenskaper og endre målene. Men husk, jo flere mål, jo færre funksjoner som støttes.

Fordeler med Portable Class Libraries

Selv om det er et par ting du må se opp for når du bruker PCLs, er det noen veldig fine fordeler.


    non-plattform-spesifikk kode kan isoleres i et eget prosjekt (er)

    enhetstesting av felles kode er isolert i et eget prosjekt (er)

    delt kode i PCLs kan deles med andre applikasjoner via en kompilert dll

    Ulemper av Portable Class Libraries

    Når du velger en ny teknologi eller plattform å bruke, det lønner seg også å forstå de ulemper som må tas opp.


      har sett er begrenset basert på målrettede plattformer

      PCLs kan bare legge til referanser til andre PCLs som deler de samme målplattformer

      PCLs kan ikke inneholde noen plattform-spesifikk kode

      Hvis PCLs synes for begrensende til deg som et valg for delt kode, det er et annet alternativ.

      Alternativ 2: Delt Prosjekter

      I den siste utgaven av Visual Studio 2 013 Update 2, lagt Microsoft støtte for felles prosjekter. Delte Prosjekter er en annen måte å dele kode mellom ulike plattformer, på noen måter ligner PCLs og på andre måter drastisk forskjellige. La oss begynne med å lage et enkelt eksempel.

      Begynn med å lage en annen løsning /prosjekt i Visual Studio og gi den et navn på SharedDemo Hotell og velge Delt Project (Tom) Anmeldelser som mal.

      Hvis du ikke ser Delt Project (Tom)
      som et alternativ, sørg for at du har den nyeste versjonen av Visual Studio 2013 Update 2. Hvis du bruker den nyeste versjonen, og fortsatt ikke ser det, kan det hende du må installere Delte Prosjektleder Reference Manager forlengelse.

      Når du klikker OK
      , Visual Studio vil opprette et nytt prosjekt for deg i Solution Explorer
      , men det vil se litt annerledes enn du er vant til.

      Det virker litt ensom, ikke sant? Det er ingen mappe Properties Kjøpe og ingen Referanser

      mappe. Hva er det som skjer? Det er det fine og ofte kilden til forvirring for de fleste utviklere. Som standard gjør en delt Prosjekt egentlig ikke inneholde tilgang til noe funksjonalitet i det hele tatt. Det finnes noen magiske skjer bak kulissene i Visual Studio /Xamarin Studio, men du vil se at om kort tid.

      En annen merkelig funksjon i en delt prosjektet er at du faktisk ikke kan bygge den. Hvis du skulle høyreklikk
      løsningen eller prosjekt, du vil ikke se noen alternativer for bygning, løping, eller debugging dette prosjektet. For å forstå hvorfor dette er, må du ta et skritt tilbake for et øyeblikk.

      Hva er hensikten med å bygge et prosjekt? Hensikten er å forvandle din kode fra tekst til en faktisk fil som kan brukes av systemet du kjører på eller et annet program. Det er derfor du ikke kan faktisk bygge en delt Project, ingen utgang filen er generert av den. Denne spesialiserte Prosjektet har et helt annet formål.

      Når du oppretter en delt Prosjekt og skrive kode i det, kan du legge referanser til den fra andre prosjekter så mye du vil. Det er ingen plattformer for å målrette eller regler å følge. Dette er den første faktor fra PCLs. La oss fortsette med et eksempel. Opprett en ny Xamarin.Android Hotell og /eller Xamarin.iOS
      prosjekt i din løsning og navngi dem på riktig måte, SharedDemo.Android Hotell og /eller SharedDemo. iOS
      .

      Nå som du har et nytt prosjekt, høyreklikker du på mappe Referanser Kjøpe og velg
      Legg til Shared Prosjekt Reference
      . Hvis du ikke ser dette som et alternativ, må du kanskje en anmeldelse legge Delte Prosjektleder Reference Manager forlengelse

      Herfra klikk OK Anmeldelser og du skal se noe som ligner på dette.:

      Det er her magien kommer inn i bildet. Koden inneholdt med en delt prosjektet vil være kompilert inn
      noen prosjekter som refererer til den. Det er derfor du ikke kan bygge dem direkte, de trenger noe å referere til dem før de kan bygges og kompilert. Det faktum at de kan legges til ethvert prosjekt som en referanse er en del av grunnen til at de er så gode kandidater for kryssplattform utvikling.

      Den andre grunnen til at de er gode kandidater for kryssplattform utvikling er deres støtte for kompilatoren direktiver. Du kan plassere sjekker for spesielle direktiver innenfor dine felles prosjekter, slik at bare bestemte plattformer får visse funksjoner eller at ting blir håndtert forskjellig på ulike plattformer. Følgende direktiver kan bli funnet i plattformprosjekter:

      __ MOBILE__ Xamarin.Android og Xamarin.iOS prosjekter

      __ IOS__ Xamarin.iOS Prosjekter

      __ ANDROID__ Xamarin.Android prosjekter

      __ ANDROID_xx__ Xamarin.Android prosjekter der xx er erstattet med den målrettede Android API versjon

      WINDOWS_PHONE Windows Phone-prosjekter

      Silverlight Windows Phone-prosjekter

      Du kan bruke disse direktivene inne # ifdef blokker for å sjekke hvilken plattform du kjører på og bruke betinget kompilering å bare omfatte det som trengs i hvert prosjekt. Dette er gjort for deg av kompilatoren. La oss se et eksempel

      I SharedDemo
      prosjektet, legge til en ny klasse som heter Oppskrift Hotell og erstatte standard gjennomføring med følgende:.
      Public class Oppskrift { offentlig string kortnavn {får; sett; } #if __iOS__ offentlig streng LongName {får; sett; } #endif offentlig List < streng > Ingredienser {få; sett; } Public List < streng > Retninger {få; sett; }}

      Dette er litt av en contrived eksempelet, men det tjener til å illustrere et enkelt punkt. Siden jeg henviser til denne koden fra en Xamarin.Android prosjekt, vil Oppskrift klassen bare inneholde 3 eiendommer, kortnavn, ingredienser og retninger. Hvis denne koden ble referert av en Xamarin.iOS prosjekt, ville det også inneholde LongName eiendommen.

      Du er mer sannsynlig å bruke disse direktivene i situasjoner der du kjører inn i plattformen divergens. Fellesområdene divergens på disse mobile plattformer har å gjøre med tilgang til maskinvaren, filsystemet, etc. Du kan nå plassere plattformen koden i Shared prosjektet delt direktivene og Visual Studio vil håndtere den plattformspesifikke samling til de riktige prosjektene. Veldig hyggelig.

      Fordeler med felles prosjekter

      felles prosjekter inneholder noen veldig fine funksjoner som hjelper i etableringen av plattformer prosjekter.


        non-plattform og plattformspesifikk kode kan eksistere i ett prosjekt

        ha tilgang til bibliotek og funksjoner av foreldre prosjektet

        støtte direktiver for å skille plattformspesifikk kode

        Ulemper av Delt Prosjekter

        Selv om felles prosjekter har fine funksjoner, er det noen ikke så ønskelige egenskaper.


          ingen dll er opprettet, slik kode kan ikke deles med andre løsninger

          bare ha tilgang til bibliotekene i foreldrenes prosjekt, så non-plattform-spesifikk enhet testprosjekter kan være vanskelig

          kan ikke referere til andre prosjekter eller biblioteker

          4. Tast Xamarin.Forms

          Du er nå klar over de grunnleggende strategier for å dele din app logikk. Det er på tide å begynne å se på programmet ditt brukergrensesnitt. I den nyeste utgaven av versjon 3 av Xamarin, en av de mest spennende funksjonene er innføring av Xamarin.Forms
          . Xamarin.Forms er et bibliotek som inneholder abstraksjoner av typiske UI kontroller som utgjør appens UI. Når disse kontrollene brukes på de spesifikke plattformer, de er kartlagt til å gjengi innfødte UI kontroller slik at du får utseendet og følelsen av innfødte komponenter.

          Den grunnleggende strukturen i cross-platform program endres ikke. Du vil fortsatt være å følge N + 1 regelen så langt prosjektene er bekymret, men du vil nå være å flytte plattformen spesifikke UI kode fra plattformspesifikke prosjekter inn i felles prosjekter. Før vi får altfor forkant av oss selv, må vi forstå behovene og kravene til ikke bare å kjøre, men å utvikle Xamarin.Forms apps.

          Krav

          Det er et par krav hvis du vil å dra full nytte av Xamarin.Forms. For å bruke Xamarin.Forms, må appen være rettet mot disse plattformene:

          iOS 6.1+

          Android 4.0+

          Windows Phone 8


          Dette betyr at hvis du har tenkt å målrette noen av de eldre versjonene av disse plattformene, vil du ikke kunne bruke Xamarin.Forms. I tillegg til å målrette plattform begrensninger, er det også noen utvikling systemkrav.

          OS X

          Xamarin 5 kreves for å bruke Xamarin.Forms på OS X.
          < li> Å utvikle iOS apps, Xcode og OS X 10.8+ er nødvendig.

          Windows Phone-apper kan bare utvikles på en Windows-maskin.

          Windows

          Du trenger Visual Studio 2012 eller nyere.

          Hvis du vil bruke PCL versjonen av Xamarin.Forms, må du bruke PCL Profile 78, som inkluderer støtte for .NET Framework 4.5+, Windows Phone 8 eller nyere, Windows 8, Windows Phone Silverlight 8, Windows Store apps (Windows 8), Xamarin.Android, og Xamarin.iOS.

          Det taler for seg selv at du trenger også Windows Phone SDK.

          For å utvikle iOS apps, trenger du Xcode og en Mac som kjører OS X. Dette er et krav for alle Xamarin.iOS apps laget ved hjelp av en Windows-maskin.

          Når du har alt lastet ned og konfigurert, er du klar til å komme i gang.

          5. Building Blocks

          Den grunnleggende ideen bak Xamarin.Forms er enkel, henvise deg til vanlige UI kontroller på samme måte uavhengig av plattformene som du målretter. En knapp er en knapp er en knapp. Du vil opprette disse kontrollene og gi dem visuelle egenskaper og funksjonalitet. Du vil deretter bruke et oppsett for å plassere kontrollene på skjermen og vise alt på en side. Hvis du er vant til å bruke plattformspesifikk terminologi for å beskrive UI komponenter av dine apps, bli vant til de nye vilkårene kan ta litt tid. Heldigvis er det bare et par konsepter for å forstå.

          Sider

          I Xamarin.Forms, Pages representerer de faktiske skjermbildene av søknaden din. Med hensyn til andre plattformer, en side er en aktivitet på Android, en UIViewController på iOS, og en side på Windows Phone. Side er hovedobjektet du skal håndtere når du jobber med overganger og navigasjon. Også en side inneholder bare et enkelt barn, som i de fleste situasjoner er noen form for Layout.

          utforminger

          utforminger er kontroller som brukes til å organisere UI komponenter på siden din på en logisk måte. Innenfor en Layout, kan du sette karakteristikker av UI kontroller, for eksempel plassering og størrelse. Du kan legge til så mange UI komponenter til en layout inkludert kontroller og andre oppsett stedene.

          Visninger

          I Xamarin.Forms, Visninger er hva du ville vanligvis refererer til som kontroller. Vanlige Se objekter i Xamarin.Forms er Button, Label, og Listview, for å nevne noen. Layout klassen faktisk arver fra Vis-klassen, noe som betyr at de kan behandles på samme måte og lagt til oppsett stedene.

          Cells

          Cells er spesialiserte UI komponenter som brukes til å tilpasse hva ville vanligvis bli referert til som rekker innenfor Listview og UITableView stedene. Det er pre-bygget Cell typer å legge en rekke ulike tilpasninger til Se stedene.

          6. Opprette en Basic Application

          For å lage en enkel Xamarin.Forms program, åpne Visual Studio, velg Fil > Nytt prosjekt
          , velg Mobile Apps
          kategori, og velg riktig mal. Jeg har valgt Blank App (Xamarin.Forms delt)
          mal. Dette vil skape en Xamarin.Forms program ved hjelp av Delt Prosjekt
          mal.

          Etter å ha klikket OK
          , løsningen vil bli opprettet med fire prosjekter. Som diskutert før, vil du ha tre plattformspesifikke prosjekter og ett felles prosjekt. Fellesprosjektet inneholder programmet logikk samt all Xamarin.Forms kode som vil ha ansvar for å skape skjermene (Side objekter) av søknaden din.

          Hvis du åpner SampleFormsApp Anmeldelser prosjektet, vil du se en enkelt klasse som heter App.cs
          . Dette er den viktigste filen av prosjektet som inneholder siden definisjoner som til slutt vil vises på målplattformer. Det er en enkel klasse som bare inneholder følgende:
          public class App {public static Page GetMainPage () {return new ContentPage {Content = ny etikett {Text = "Hei, Skjemaer", VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand,}}; }}

          Klassen App er ganske enkelt i at den bare inneholder en enkelt statisk metode som returnerer en ContentPage objekt. En ContentPage objekt er den mest grunnleggende, ikke oppstaset Page at du kan lage. Det er lettest å tenke på en ContentPage som et blankt lerret som du kan gjøre hva du vil med. Det er svært lite funksjonalitet innebygd i den.

          Du vil vanligvis finne at de fleste Page objekter har et innhold egenskap som gjør at du kan tildele Vis objekt til det. I dette tilfellet er det en enkel etikett syn som skriver "Hello, Forms!" til skjermen samtidig gi det noen grunnleggende formatering for å sentrere den.

          For å få denne ContentPage å laste på hver plattform som vi målretter, det er noe tilpasset plattform-spesifikk kode som må inkluderes i hver av de plattform prosjekter. La oss ta en titt på iOS-prosjektet først. Åpne SampleFormsApp.iOS
          prosjektet og ta en titt på AppDelegate.cs
          fil. Dette er filen som inneholder ledningene inn i Xamarin.Forms verden
          offentlig overstyring bool FinishedLaunching (UIApplication app, NSDictionary alternativer) {Forms.Init (.); vindu = new UIWindow (UIScreen.MainScreen.Bounds); window.RootViewController = App.GetMainPage () CreateViewController (.); window.MakeKeyAndVisible (); return true;}

          Først initial vi Xamarin.Forms bibliotek med ved å påberope Forms.Init (). Etter det er det bare egendefinert kode sette window.RootViewController eiendom til resultatet av App.GetMainPage (). CreateViewController () kall. Den linjen vil starte i Xamarin.Forms verden og alt fra det punktet fortsetter å bruke Xamarin.Forms.

          Prosessen for initialisering Xamarin.Forms i Android og Windows Phone er veldig lik. Du vil ringe Init metoden og sette den første siden for å være et resultat av den App.GetMainPage () -metoden. Dette er hva det ser ut i SampleFormsApp.Android
          prosjekt i
          MainActivity.OnCreate metode
          beskyttet ride void OnCreate (Bundle bundle) {base.OnCreate (bundle).; Xamarin.Forms.Forms.Init (dette, pakke); SetPage (App.GetMainPage ());}

          Og i SampleFormsApp.WinPhone
          prosjekt i Main konstruktøren av den delvise klassen Mainpage:
          offentlig Mainpage () {InitializeComponent (); Forms.Init (); Content = SampleFormsApp.App.GetMainPage () ConvertPageToUIElement (denne);.}
          Konklusjon

          Du skal nå ha en grunnleggende forståelse av Xamarin.Forms samt hva du kan oppnå ved å bruke dem. Reisen inn i denne fantastiske teknologien stopper ikke der. Du vil ha et annet valg foran deg når du bruker Xamarin.Forms, som har å gjøre med layout. Og det er nettopp det som vil bli dekket i neste tutorial

          Neste trinn:. Se Course

          Hvis du ønsker å lære mer om Xamarin, så sjekk ut vår kurs Building Multi- Plattform apps med C # i Xamarin.

          I kurset vil du lære hvordan du oppretter en kryssplattform søknad fra en enkelt kodebasen som vil kjøre på tre distinkt forskjellige plattformer: iOS, Android og Windows Phone 8. Tror det kan ikke være gjort? På bare en liten stund vil du gjøre det selv. La oss få til å fungere.

          Du kan ta med en gang med en helt gratis
          14 dagers prøveversjon av en Tuts + abonnement. Ta en titt på våre abonnement alternativer å komme i gang, eller, hvis du er like interessert i dette kurset, kan du kjøpe det individuelt for $ 15! Her er en forhåndsvisning for å komme i gang: