ISensorEventListener Kompas class KompasView : View , ISensorEventListener { Bitmap b; float Schaal; float Hoek; belooft methodes public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource(...UU...); } SensorManager sm = c . GetSystemService(...); sm.RegisterListener(this, ...Orientation...); is een geldige ISensorEventListener want zijn klasse heeft deze methode public void OnSensorChanged(SensorEvent s) { } Hoek = s.Values[0]; this.Invalidate( ); }
want zijn klasse heeft deze methode using Android.Locations; Kompas class KompasView : View , ILocationListener { Bitmap b; float Schaal; float Hoek; belooft methodes public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource(...UU...); } LocationManager lm = c . GetSystemService(...); lm.RequestLocationUpdates(..., this); is een geldige ILocationListener want zijn klasse heeft deze methode public void OnLocationChanged(Location loc) { } noord = loc.Latitude; oost = loc.Longitude; }
Kompas using Android.Locations; belooft methodes class KompasView : View , ILocationListener { Bitmap b; float Schaal; float Hoek; belooft methodes public KompasView(Context c) : base(c) { b = BitmapFactory.DecodeResource(...UU...); LocationManager lm = c . GetSystemService(...); Criteria crit = new Criteria(); crit.Accuracy = Accuracy.Fine; IList<string>lps = lm.GetProviders(crit,true); if ( lps != null && lps.Count>0 ) { string lp = lps[0]; lm.RequestLocationUpdates(lp,0,0,this); } } public void OnLocationChanged(Location loc) { } noord = loc.Latitude; oost = loc.Longitude; }
pixel van het plaatje dat in het midden moet komen Kompas class KompasView : View , ISensorEventListener { Bitmap b; float Schaal; float Hoek; pixel van het plaatje dat in het midden moet komen protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } Schaal = this.Width / b.Width; Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostTranslate(–b.Width/2, –b.Height/2); mat.PostRotate(– Hoek); mat.PostTranslate(Width/2, Height/2); canv.DrawBitmap(b, mat, verf); }
pixel van het plaatje dat in het midden moet komen Kaart class KaartView : View , ISensorEventListener { Bitmap b; float Schaal; float Hoek; pixel van het plaatje dat in het midden moet komen protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } Matrix mat = new Matrix(); mat.PostScale(Schaal, Schaal); mat.PostTranslate(–midx, –midy); mat.PostTranslate(Width/2, Height/2); canv.DrawBitmap(b, mat, verf); }
Exceptions Exception: Uitzonderlijke toestand die door een methode wordt opgeworpen De situatie moet door de aanroeper van de methode worden opgevangen throw catch
Voorbeeld van Exception kan een Exception opwerpen try { } s = invoer . Text; n = int . Parse (s); uitvoer . Text = ( "kwadraat is " + n*n ); catch ( Exception e ) { uitvoer . Text = ( s + " is geen getal" ); } opvangen van het probleem
Meerdere catch-delen try { s = invoer . Text; n = int . Parse (s); } als er een Exception optreedt, wordt de eerste catch gekozen met een passend type try { } s = invoer . Text; n = int . Parse (s); uitvoer . Text = ( "kwadraat is " + n*n ); catch ( FormatException e ) { uitvoer . Text = ( s + " is geen getal" ); } catch ( OverflowException e ) { uitvoer . Text = ( s + " is te groot" ); }
opdracht blok return expressie ; if ( expressie ) opdracht else opdracht while ( expressie ) opdracht for ( expr ; expr ; expr ) opdracht , , declaratie foreach ( type naam in expr ) opdracht var try blok catch ( type naam ) blok
Syntax en semantiek Syntax: de vorm van het programma Semantiek: wat het programma betekent compilatie eenheid using ; klasse declaratie library naam
Syntax van klasse-declaratie [ attributen ] public private : naam class naam { member } attributen naam ) ( = expressie ,
Syntax van member member type void naam ( type naam ) blok , public private protected override static type void naam ( type naam ) blok ,
Multi
Multi public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; protected override void OnCreate(Bundle b) { base.OnCreate(b); LinearLayout lay = new LinearLayout(this); b1 = new Button(this); b2 = new Button(this); b1.Text = "Hallo"; b2.Text = "Teller"; b1.Click += klik1; b2.Click += klik2; lay.AddView(b1); lay.AddView(b2); SetContentView(lay); } public void klik1(object o, EventArgs e) { ...... } }
Dialoog Pop-up window waarin de gebruiker gegevens invoert DatePickerDialog AlertDialog
DatePicker Dialog public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; DateTime GebDat; public void klik4 (object o, EventArgs e) { DatePickerDialog d; d = new DatePickerDialog(this, Gekozen); d.Show(); } public void Gekozen (object o, DatePickerDialog.DateSetEventArgs e) { this.GebDat = e.Date; b4.Text = GebDat.ToString(); } }
Alert Dialog public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; DateTime GebDat; public void klik6 (object o, EventArgs e) { AlertDialog.Builder d; d = new AlertDialog.Builder(this); d.SetTitle("nu al stoppen?"); d.SetPositiveButton("ja", Ja ); d.SetNegativeButton("nee", Nee ); d.Show(); } public void Ja (object o, EventArgs e) { } this.Finish( ); public void Nee (object o, EventArgs e) { } }
Intent Intent: bedoeling om een nieuwe activiteit te starten eigen activiteit Hallo Teller standard web-browser text-sender
Intent: Hallo opstarten public class Multi : Activity { public class Hallo : Activity { Button b1, b2, b3, b4, b5, b6; override void OnCreate(Bundle b) { base.OnCreate(b); public void klik1 (object o, EventArgs e) { TextView t = new TextView(this); Intent i; string s = Intent.GetStringExtra("wat"); i = new Intent (this, typeof(Hallo) ); t.Text = s; i.PutExtra("wat", "Hallo!!!"); SetContentView(t); } StartActivity(i); } } }
Intent: Teller opstarten public class Multi : Activity { public class Teller : Activity { Button bt; int x; Button b1, b2, b3, b4, b5, b6; override void OnCreate(Bundle b) { base.OnCreate(b); int w = 0; public void klik2 (object o, EventArgs e) { bt = new Button(this); x = Intent.GetIntExtra("begin",0); Intent i; bt.Click += klik; i = new Intent (this, SetContentView(bt); typeof(Teller)); } i.PutExtra("begin", 15 ); w public void klik (object o, EA e) { } StartActivity(i); ForResult(i, 99); x = x+1; } bt.Text = $"Teller: {x}"; override void OnActivityResult (int c, Result r, Intent i) { base.OnActivityResult(c,r,i); override void Finish ( ) { Intent i = new Intent(); i.PutExtra("eind", x ); if (c==99) SetResult(Result.Ok, i ); w = i.GetIntExtra("eind",0); base.Finish( ); } } } }
Intent: Website opstarten public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; public void klik3 (object o, EventArgs e) { string adres = "students.uu.nl/beta/informatiekunde"; Intent i; i = new Intent ( Intent.ActionView , Android.Net.Uri.Parse( adres ) ); StartActivity(i); } }
Intent: Messager opstarten public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; public void klik5 (object o, EventArgs e) { Intent i; i = new Intent ( Intent.ActionSend ); i.SetType( "text/plain" ); string bericht = "Kom je op mijn verjaardagsfeest?"; i.SetType( Intent.ExtraText, bericht ); StartActivity(i); } }
Intent: Messager opstarten public class Multi : Activity { Button b1, b2, b3, b4, b5, b6; DateTime GebDat; public void klik5 (object o, EventArgs e) { Intent i; i = new Intent ( Intent.ActionSend ); i.SetType( "text/plain" ); TimeSpan tijd = DateTime.Now – GebDat; int dagenOud = (int) tijd.TotalDays( ); int nachtjes = 1000 – dagenOud % 1000; DateTime feestDag = DateTime.Now + TimeSpan(nachtjes, 0,0,0); string bericht = "Op {feestdag} is mijn verKdagdag. Kom je ook?"; i.SetType( Intent.ExtraText, bericht ); StartActivity(i); } }
Kijk wel uit waar je het post...