Mobiele apps programmeren met Xamarin – Praktische voorbeelden – Een Timer gebruiken

print
Deze tip maakt deel uit van het programmeertraject:


Een Timer gebruiken

Geef de huidige datum en tijd weer.

Het programma moet constant de huidige datum en tijd weergeven. U moet dus de tijd zien “vooruitgaan”.

XAML

De XAML bevat twee labels om de datum en tijd weer te geven. De datum wordt wat groter weergegeven.

  • Pas de XAML van de pagina Mainpage.xaml als volgt aan:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Zoeken" x:Class="Zoeken.MainPage">

    <StackLayout>
        <Label x:Name="timeLabel" FontSize="Large" HorizontalOptions="Center" VerticalOptions="EndAndExpand" />

        <Label x:Name="dateLabel" HorizontalOptions="Center" VerticalOptions="StartAndExpand" />
    </StackLayout>
</ContentPage>

Code-behind

Gebruik de methode StartTimer van de Device klasse. De methode StartTimer heeft de volgende syntax:

public static Void StartTimer (TimeSpan interval, Func callback)

De eerste parameter is van het type TimeSpan, voor de tweede parameter moet een callback functie aangemaakt worden die een boolean teruggeeft. Onderstaande code roept iedere seconde TimeSpan.FromSeconds(1) een functie aan met de naam OnTimerTick.

Device.StartTimer(TimeSpan.FromSeconds(1), OnTimerTick);

De functie OnTimerTick zal eerst België als cultuur instellen. Vergeet niet hiertoe de namespace Globalization toe te voegen using System.Globalization;.

CultureInfo nlBEFormaat = new CultureInfo("nl-BE");

De huidige datum en tijd wordt opgevraagd en aan een variabele dt toegekend.

DateTime dt = DateTime.Now;

De datum en tijd worden aan hun respectievelijke labels en in de juiste cultuurinstellingen toegekend. Ken ook de juiste formaat toe.

timeLabel.Text = dt.ToString("T", nlBEFormaat);
dateLabel.Text = dt.ToString("D", nlBEFormaat);

Uiteindelijk moet de functie een boolean teruggeven.

return true;

  • Pas de code behind in MainPage.xaml.cs als volgt aan.
using System;
using System.Globalization;
using Xamarin.Forms;

namespace Timer
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            Device.StartTimer(TimeSpan.FromSeconds(1), OnTimerTick);
        }

        bool OnTimerTick()
        {
            CultureInfo nlBEFormaat = new CultureInfo("nl-BE");
            DateTime dt = DateTime.Now;
            timeLabel.Text = dt.ToString("T", nlBEFormaat);
            dateLabel.Text = dt.ToString("D", nlBEFormaat);
            return true;
        }

    }
}

Geef een reactie

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

  • Abonneer je op deze website d.m.v. e-mail

    Voer je e-mailadres in om je in te schrijven op deze website en e-mailmeldingen te ontvangen van nieuwe berichten.