XAMARIN

29.03.2021 Svítilna - Blikačka

1.04.2021 ITNetwork - kurz XAMARIN

Lekce 1 - Úvod do Xamarin

Lekce 2 - Struktura Xamarin projektu a životní cyklus aplikace

Přechod mezi jednotlivými stavy

Jazyk XAML v Xamarin.Forms

Lekce 4 - První multiplatformní aplikace v Xamarin a C# .NET

Lekce 5 - Pozicování v Xamarin.Forms

Lekce 6 - Debug Xamarin aplikace na Android zařízení a stylovaní

Lekce 7 - Uložení a načtení dat v Xamarin pomocí textového souboru

  1. Vytvoř prázdný projekt Xamarin.Forms
  2. V Adresáři Models vytvoř class ToDo.cs (Text,Date,IsDone). Implementuj rozhraní INotifyPropertyChanged kvůli bindingu. Neboli při změně textu zavolej v nabindované třídě (třídách) metodu PropertyChanged. Pokud se na model díváme ze stránky říkáme ji Context nebo BindingContext. INotifyPropertyChanged obsahuje pouze metodu PropertyChanged.
  3. ToDosService.cs je třída, která se stará o seznam úkolů (Add,Remove) ve třídě ObservableCollection (chytřejší List pro Binding). Zároveň se stará o uložení a načtení do/z souboru XML.
  4. O navigaci se stará NavigationPage (Místo MainPage). Pracuje na základě zásobníku. Je to jeden ze způsobů jak vůbec nepotřebuješ menu - zde stačí ToolBar a await Navigation.PushAsync(PageX) a await Navigation.PopAsync();. Pop voláš ze stránky ToDoItem, když dokončíš Add/Remov. Push když do této stránky skáčeš (z + nebo z Item).
  5. NavigationPage obsahuje NavigationStack a na hlavní stránku se le dostat přes PopToRootAsync. Víc toho snad ani neumí, ale ani není co potřeba. Volá se z App.xaml.cs
  6. ToDoDetailPage.xaml - Dynamický Binding na ToDo - aktivní prvek/prázdný prvek. Obsahuje Grid se dvěma Buttony a možnost měnit Text (via Binding)
  7. ToDoListPage.xaml je vlastně MainPage. App.xaml nejprve vytvoří instanci ToDoService a pak tuto instanci předá ToDoListPage.xaml s tím že ji zároveň rozšíří jako NavigationPage.
  8. ToDoListPage obsahuje ToolBar s jedním prvkem + a ListView se seznamem úkolů. Pokud dáš + nebi click na úkol volá ToDoDetailPage s Bindingem na prázdný nebo zobrazený ToDo. Volání se provádí přes navigaci Push().
  9. Na začátku se načte soubor todos.xml a v průběhu se všechny změny aplikují do třídy ToDos (ObservableColections) a zároveň se zapisují. Neboli se čte 1x a zapisuje s Nx. Adresář "/data/user/0/com.companyname.todoapp/files/.local/share/todos.xml"

Lekce 9 - Použití SQLite databáze v Xamarin.Forms a C# .NET

Lekce 10 - Aplikace na počasí v Xamarin - GUI a základní třídy

Pro získání polohy telefonu (longitude/latitude) se používá Xamarin.Essential a jeho metody Geolocation.
Pro získání údajů o počasí je vytvořena třída WeatherInfoProvider, která přes HttpClient získá JSON o počasí. Tento JSON rozparsuje do třídy WeatherInfo a vrátí. Ikonu podá jako string což je název ikony z db ikon v openweathermap
Veškerou logiku najdeš v MainPage.xaml. Volám (onAppearing) RefreshWeatherData kde zjistím svoji pozici a načtu data o počasí (z WeatherInfoProvider). NAčtení vlastně vyklíruje obrazovku, zjistí zdali je konektivita (internet), doptá se na počasí a zkontroluje vrácené údaje. Vrácené info o počasí uloží do proměnných (preferences) a zobrazí nové hodnoty. Pokud není konektivita zobrazí data z preferences - pokud jsou časově platná.
Já jsem ještě doplnil timer v MainPage, který aktualizuje 1x za minutu, + lačítko pro aktualizaci, zobrazení longitude/latitude a název meteostanice.
Navíc jsem ještě doplnil timer do hlavního threadu (MainActivity), ale ten nejde v MainPage použít, protože to skončí na chybě typu "to není můj thread".

Lekce 15 - Navigace v Xamarin.Forms a C# .NET

Lekce 16 - MVVM a rozhraní ICommand v Xamarin.Forms a C# .NET

ADB Tool (Android Debug Bridge)

Původně jsem se chtěl podívat na soubor todos.xml. Ale v emulátoru ani v mobilu jsem ho nenašel. Až jsem našel EDB.

Poznámky

  • Diskuze o Xamarin
  • Background