Xamarin.Forms Timer Kullanımı

image
image
image
Xamarin.Forms Timer Kullanımı

Xamarin.Forms Timer Kullanımı

Merhaba, bu yazı Xamarin ile ilgili ilk yazım. Bu yazımda her ne kadar Timer kullanımından bahsedecek olsam da bazı kontrollerin kullanım şekillerinden de bahsetmiş olacağım. Timer’ı açıklamadan önce .xaml kısmında yazdığım kodu paylaşmak ve bunlar üzerinden kullandığım Kontrollerden başlamak istiyorum. <ContentPage.Content>     <StackLayout Orientation="Vertical" VerticalOptions="Center" HorizontalOptions="Center">       <Entry x:Name="_EntryTime" Placeholder="Enter Time" PlaceholderColor="White" HorizontalTextAlignment="Center"></Entry>       <Button x:Name="_btnTimerStarter" Text="Start" Clicked="TimerStarterClicked"></Button>       <Label x:Name="_lblTimeText" Text="Time" TextColor="Yellow" FontSize="20" HorizontalTextAlignment="Center"  />       <Label x:Name="_lblTime" Text="0" TextColor="Yellow" FontSize="50" HorizontalTextAlignment="Center" />       <Label Text="erbayat.com" TextColor="White" HorizontalOptions="Center"></Label>     </StackLayout>   </ContentPage.Content> Kullandığım Kontroller Entry(TextBox), Button ve Label. Entry, yani c#’taki textbox, kullanıcıdan süreyi almak için için kullandım. Kontrolde Placeholder özelliği kullanıcının veri girişi yapmamış haldeki görünecek yazıdır. PlaceholderColor özelliği de onun rengini vermemizi sağlıyor. HorizantalTextAlignment’ı da textin konumunu belirlemek için kullanıyoruz. Konumu Center diyerek ortalanmış şekilde olmasını belirttim. Start diyerek en solda olmasını veya End diyerek sağa dayalı olmasını sağlayabiliriz. Button, süreyi başlatmak için kullanılacak. Butonun Clicked özelliğine c# tarafında yazacağımız fonksiyonu veriyoruz. O fonksiyonu Label’den bahsettikten sonra açıklayacağım. Kullandığım kontrol türlerinin sonuncusu Label, süreyi görüntülemek için kullandım. Kontroller hakkında daha fazla bilgi için https://developer.xamarin.com/guides/xamarin-forms/controls/ adresine gitmenizi öneririm. Şimdi Timer’ı açıklayayım. C# tarafında timer isimli bir fonksiyon tanımladım. Bu fonksiyon içinde Device.StartTimer kullanarak her bir saniyede fonksiyona parametre olarak gönderilen time değişkenini 1 azaltarak Label’a yazdırdım. Kullanımı şu şekilde, Device.StartTimer iki tane parametre alır. Birinci parametre TimeSpan, ne kadar zamanda olayın tekrarlanmasını belirlemek için, ikinci parametre ise gerile bool döndüren bir fonksiyon. ( StartTimer (TimeSpan interval, Func<bool> callback) )  Bu bool döndüren fonksiyon false döndürene kadar belirtilen zamanda bir içindeki işlemleri yapar. private void timer(double time)         {             Device.StartTimer(TimeSpan.FromSeconds(1), () => {                 time -= 1;                 _lblTime.Text = String.Format("{0}", time);                 if (time == 0.00)                 {                     DisplayAlert("Süre Doldu", "Geri sayım süresi bitti!", "Ok");                     return false;                 }                 return true;             });         } Son olarak yukarıdaki fonksiyonda da kullandığım DisplayAlert’i açıklayayım. DisplayAlert isminden anlaşılacağı gibi uyarı mesajı vermemizi sağlar. 3 adet parametre alır. Birincisi başlık, ikincisi açıklama, üçüncüsü kapanma butonu yazısı. Ayrıca DisplayAlert’ten Yes No şekilde sonuç da döndürebilirsiniz. Uygulamanın kodlarının tamamını github hesabımdan ulaşabilirsiniz. Link: https://github.com/huseyinerbayat/Xamarin/tree/master/XamarinTimer