Publication in the Diário da República: Aviso n.º 12718/2016 - 19/10/2016
6 ECTS; 2º Ano, 1º Semestre, 60,0 PL + 30,0 TP , Cód. 620016.
Lecturer
(1) Docente Responsável
(2) Docente que lecciona
Prerequisites
C# programming language deep knowledge.
XAML/XML basic knowledge are nor mandatory, but are welcome.
Objectives
Learn and master mobile application development, with and without data persistence, for iOS and Android platforms, using the Xamarin.Forms framework.
Program
Cap. 1 - Xamarin.Forms overview
- 'Native' Xamarin vs Xamarin.Forms
- Cross-platform development
- Shared code
- Integrated Development Environments
- Emulators and simulators
- Portable Class Library (PCL) Apps vs Shared Asset Project (SAP) Apps
- Anatomy of a Xamarin.Forms Solution
Cap. 2 - Android and iOS projects
- The Label view
- Padding
Cap. 3 - Using Text
- Wrapping paragraphs
- Text and Background colors
- The Color structure
- Default color scheme
- Font size and attributes
- Text formatting
Cap. 4 - Scrolling the stack
- Stacks of views
- Scrolling contents
- Frame and BoxView
- ScrollView in a StackLayout
Cap. 5 - Dealing with sizes
- Pixeis, Points,dps, DIPs e DIUs
- Metric sizes
- Estimated Font sizes
- Fitting text to available sizes
Cap. 6 - Button clicks
- Processing the click
- Sharing Button clicks
- Anonymous event handlers
- Distinguish views with IDs
- Saving transient data
Cap. 7 - XAML usage
- Properties and Atributtes
- Adding a XAML page to the project
- Formatted text
- Passing arguments
- The x: Name attribute
- Custom XAML-based Views
- Events and Handlers
- Tap gestures
Cap. 8 - Platform-specific API calls
- Preprocessing in the SAP
- Parallel classes and the SAP
- DependencyService and the PCL
- Platform-specific sound generation
Cap. 9 - XAML markup extentions
- Code structure
- Accessing static members
- Recource dictionaries
- Other markup extentions
Cap. 10 - The Bindable infrastructure
- The Xamarin.Forms class hierarchy
- BindableObject and the BindableProperty
- Defining bindable properties
Cap. 11 - Styles
- The basic style
- Styles in code
- Style enheritance
- Implicit styles
- Dynamic styles
- Device styles
Cap. 12 - Bitmaps
- Platform-independent bitmaps
- Streaming bitmaps
- Platform-dependent bitmaps
Cap. 13 - AbsoluteLayout
- AbsoluteLayout characteristics
- Attache bindable properties
- Proportional sizing, coordinates and positioning
- AbsoluteLayout and XAML
- Overlays
Cap. 14 - The interactive interface
- Slider and Stepper
- Switch and Checkbox
- Typing text
- Date and time selection
Cap. 15 - Data Binding: Part I
- Code and XAML
- Source and BindingContext
- The binding mode
- String formatting
- The Path property
- Binding value converters
- Bindings and custom views
Cap. 16 - The Grid and Collections
- The Grid
- Picker
- ListView
- ListView and the MVVM
- TableView
Cap. 17 - Page navigation
- Model pages and modeless pages
- Navigation variations
- Patterns of data transfer
- Saving and restoring the navigation stack
Cap. 18 - Page varieties
- Master-Detail
- Tabbed pages
Cap 19 Data Binding: Part II and Data Access
- Overview
- The SQLite database
- The SQLite.NET library
- Data Binding
- The interface INotifyPropertyChanged
- ViewModels and the MVVM
- Binding to ViewModels and Data Models
- Using SQLite.NET
- Creating a database
- Using a pre-existent database
- Building the database Path
- Connect by using PCL
- Connect in Android
- Connect in iOS
- Creating Tables
- Using attributes
- Selecting, Inserting, Updating and Deleting rows
- Locking Rows
- Creating a Data Access Layer (DAL)
- Creating a repository
- Managing the repository
- Adding methods to the repositiry
Evaluation Methodology
- A cross-platform development project of an Android and iOS App (Peso 100%).
Project auditions are compulsory.
Bibliography
- Hermes, D. (2015). Xamarin Mobile Application Development. (pp. 297-337). California: Apress
- Petzold, C. (2016). Creating Mobile Apps with Xamarin.Forms. (pp. 1-1050). Redmond: Microssoft Press
Teaching Method
Theoretical and practical classes.
Software used in class
Visual Studio;
Android SDK;
XCode;