Nate Rickard takes you on a deep dive into Xamarin.Forms, providing a brief overview, a practical application analysis of this took, and how to extend Xamarin.Forms.
You will be able to answer the following questions:
1. What are some considerations when deciding whether to use Xamarin.Forms?
2. When does it make sense to use Xamarin.Forms?
3. How can I use built in features/tactics to improve development on Xamarin.Forms?
4. How can I supplement Xamarin.Forms with additional (or changed) functionality?
Cape Town MS Developer User Group: Xamarin Community ToolkitJavier Suárez Ruiz
In this session we are going to talk about the Xamarin Community Toolkit, a collection of Animations, Behaviors, Converters Effects and Controls for mobile development with Xamarin.Forms.
We will see what it gives us, how to use it and also how you can contribute!
User interface customization for aem6 circuitDamien Antipa
This document provides an overview of how to customize the user interface in AEM 6. The presentation discusses extending both the administration screens and page authoring tools. For administration screens, it covers overlaying and extending existing screens as well as creating new custom admin screens. For page authoring, it reviews concepts like editables, overlays and layers, and how to extend features like toolbars, inplace editing and asset handling. Examples of customizations are also provided.
AngularJS is an open source JavaScript framework for building dynamic web applications. It enhances HTML with custom directives and bindings to enrich client-side web applications with reusable components. Key features include two-way data binding, reusable components, support for MVC/MVVM design patterns, end-to-end testing, cross-browser compatibility, and services. AngularJS allows developers to organize applications into modules and controllers to keep code clean and reusable.
This document provides an overview of how to customize the user interface in AEM 6, including extending administration pages, creating custom admin screens, and extending the page authoring interface. It discusses using the Sling Resource Merger to override and extend existing UI components. It also covers creating custom toolbar actions, inplace editors, layers, and asset groups. The document aims to explain the key extension points and objects involved in customizing different aspects of the AEM UI.
This document provides an overview of RubyMotion and iOS development using RubyMotion. Some key points:
- RubyMotion allows developing native iOS and OS X apps using Ruby. It includes the motion command, projects structure, and REPL for interacting with apps.
- The document demonstrates basic RubyMotion tasks like creating a project, building and running an app, and using the REPL. It also covers iOS frameworks, the app delegate, and test-driven development with Bacon.
- An example Todo list app is developed using TDD, starting with a failing test and making the minimal code changes to pass tests, demonstrating the "red-green-refactor" loop of TDD in RubyMotion.
The document is a presentation about customizing user interfaces in AEM 6. It discusses how to extend both admin screens and page authoring. For admin screens, it explains how to use Sling resource merging and overlays to customize existing screens or create new ones. For page authoring, it describes how to work with editables, components, overlays and layers to extend editing capabilities. Examples are provided for adding toolbar actions, custom editors, layers and more. Resources like documentation, examples and recordings are provided for further information.
Angular Kickstart document provides an overview of Angular including:
- Angular is a client side JavaScript framework that allows building of single page applications.
- A single page application loads initial content via the first page load and subsequent content without reloading the page.
- The document discusses Angular features such as modularity, performance, TypeScript support, and building blocks like modules, components and directives. It also provides instructions on setting up the development environment for Angular applications.
This document discusses various features and customization options for the AEM 6.0 user interface. It covers the Sling resource merger which allows overlaying and customizing nodes, adding and hiding links from the left rail, adding buttons to the console, modifying search filters, using metadata properties as tags, and customizing asset editor metadata templates. It provides examples of how to customize and overlay nodes in the /libs path with custom configurations in the /apps path. The document also includes some additional useful information and links for AEM UI customization.
Cape Town MS Developer User Group: Xamarin Community ToolkitJavier Suárez Ruiz
In this session we are going to talk about the Xamarin Community Toolkit, a collection of Animations, Behaviors, Converters Effects and Controls for mobile development with Xamarin.Forms.
We will see what it gives us, how to use it and also how you can contribute!
User interface customization for aem6 circuitDamien Antipa
This document provides an overview of how to customize the user interface in AEM 6. The presentation discusses extending both the administration screens and page authoring tools. For administration screens, it covers overlaying and extending existing screens as well as creating new custom admin screens. For page authoring, it reviews concepts like editables, overlays and layers, and how to extend features like toolbars, inplace editing and asset handling. Examples of customizations are also provided.
AngularJS is an open source JavaScript framework for building dynamic web applications. It enhances HTML with custom directives and bindings to enrich client-side web applications with reusable components. Key features include two-way data binding, reusable components, support for MVC/MVVM design patterns, end-to-end testing, cross-browser compatibility, and services. AngularJS allows developers to organize applications into modules and controllers to keep code clean and reusable.
This document provides an overview of how to customize the user interface in AEM 6, including extending administration pages, creating custom admin screens, and extending the page authoring interface. It discusses using the Sling Resource Merger to override and extend existing UI components. It also covers creating custom toolbar actions, inplace editors, layers, and asset groups. The document aims to explain the key extension points and objects involved in customizing different aspects of the AEM UI.
This document provides an overview of RubyMotion and iOS development using RubyMotion. Some key points:
- RubyMotion allows developing native iOS and OS X apps using Ruby. It includes the motion command, projects structure, and REPL for interacting with apps.
- The document demonstrates basic RubyMotion tasks like creating a project, building and running an app, and using the REPL. It also covers iOS frameworks, the app delegate, and test-driven development with Bacon.
- An example Todo list app is developed using TDD, starting with a failing test and making the minimal code changes to pass tests, demonstrating the "red-green-refactor" loop of TDD in RubyMotion.
The document is a presentation about customizing user interfaces in AEM 6. It discusses how to extend both admin screens and page authoring. For admin screens, it explains how to use Sling resource merging and overlays to customize existing screens or create new ones. For page authoring, it describes how to work with editables, components, overlays and layers to extend editing capabilities. Examples are provided for adding toolbar actions, custom editors, layers and more. Resources like documentation, examples and recordings are provided for further information.
Angular Kickstart document provides an overview of Angular including:
- Angular is a client side JavaScript framework that allows building of single page applications.
- A single page application loads initial content via the first page load and subsequent content without reloading the page.
- The document discusses Angular features such as modularity, performance, TypeScript support, and building blocks like modules, components and directives. It also provides instructions on setting up the development environment for Angular applications.
This document discusses various features and customization options for the AEM 6.0 user interface. It covers the Sling resource merger which allows overlaying and customizing nodes, adding and hiding links from the left rail, adding buttons to the console, modifying search filters, using metadata properties as tags, and customizing asset editor metadata templates. It provides examples of how to customize and overlay nodes in the /libs path with custom configurations in the /apps path. The document also includes some additional useful information and links for AEM UI customization.
Silverlight is a Microsoft technology for building and delivering rich interactive applications and media experiences on the web. It allows developers to use HTML, CSS and JavaScript for application logic and XAML for user interface markup and animation. Silverlight supports cross-browser deployment and integrates with common developer tools like Visual Studio and Expression Blend.
The document discusses customizing the user interface in AEM 6.1. It covers extending component dialogs by providing a diff instead of copying the entire dialog structure. It also covers customizing page properties by using flags to control which properties are shown in different views. Additionally, it discusses customizing search forms by leveraging reusable search predicates and the Sling resource merger to overlay forms.
From Flash to Canvas - a penchant for black holesPatric Lanhed
From Flash to Canvas discusses the advantages of using the HTML5 Canvas element over Adobe Flash for building interactive graphics. It provides a brief history of both technologies and their evolution. Today, Canvas has widespread browser support, though text rendering and some features lag behind Flash. Tools like CreateJS, EaselJS, TweenJS and PreloadJS help make Canvas development easier by providing a display list, animations, loading and other capabilities. The presentation demonstrates these tools with an example animation exported from Flash Professional to Canvas using the Zoe tool.
Presentation on the Model-View-ViewModel Design Pattern for Silverlight application. Presented by Jonas Follesø at the Norwegian Developer Conference 2009.
MOPCON 2014 - Best software architecture in app developmentanistar sung
Talking about how to build smart design and architecture for app development. Let your app can easy develop and deploy components on your app. And more topic of version control and quality improvement.
The document discusses the new touch-optimized UI in AEM 6. It highlights that the user experience needs to work across devices and browsers given the proliferation of mobile devices. The new UI focuses on being mobile, simple, and future proof. It leverages web standards and reusable widgets to create a consistent experience across solutions. The presentation provides an overview of key highlights of the new touch UI and discusses the transition and feedback process.
The document discusses customized Java EE training courses that are developed and taught by a well-known author and developer. The training courses cover topics like Java, JSF 2, servlets, Android development, and can be held either at public venues or customized on-site at organizations. Details are provided on layout strategies and commonly used attributes for XML layouts in Android development, with examples of nested LinearLayouts using different orientations, widths, heights and gravities.
The document discusses using the Model-View-ViewModel (MVVM) pattern to increase cross-platform code sharing in Xamarin apps. MVVM separates app logic, UI logic, and UI, allowing business logic to be shared via portable class libraries and UI logic to interact with it in a cross-platform manner via bindings and commands. This produces more testable and maintainable apps with less platform-specific code than traditional approaches. The document provides an example tip calculator app to illustrate MVVM concepts and benefits.
Everyone wants to create compelling and immersive Apps, with the right skills, you can do this in Xamarin.Forms. This session will cover what you need to know to take your Xamarin.Forms Apps experience to the next level. We will be discussing the various customisation techniques like styles, effects and renderers
This document discusses porting a legacy application to use the Model-View-ViewModel (MVVM) and Composite Application Guidance (CAL) patterns. It defines key MVVM concepts like models, views, presenters, and presentation models. It outlines advantages of CAL like modularity, reusability, and separation of concerns. It then provides a sample scenario of a legacy life insurance application and steps to refactor it to use these patterns, including creating modules, services, and using regions to host views.
Building xamarin.forms apps with prism and mvvmMike Melusky
This document summarizes a presentation about building Xamarin.Forms apps with Prism and MVVM. The presentation covered introducting Xamarin.Forms, creating a basic app, .NET Standard, core concepts like XAML and navigation, introducing the MVVM pattern and Prism framework, and additional topics like SQLite, authentication, and testing. It demonstrated building a simple app, integrating Prism and dependency injection, and using MVVM patterns like commands and data binding.
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows AzureRainer Stropek
The Xamarin and Mono platforms enable C# developers to use their existing knowledge and experience to write apps für Android and iOS. At BASTA 2013 conference I did a 75 minutes session about that topic. During the session I showed a sample that used SQLite on the phone and Windows Azure Mobile Service as its backend in the cloud. This is the slidedeck I used for the session
The Model View ViewModel (MVVM) is an architectural pattern originated by Microsoft as a specialization of the Presentation Model (Martin Fowler). Similar to MVC, MVVM is suitable for client applications (Xaml-based, Xamarin, SPA, ...) because it facilitates a clear separation between the UI and the Business Logic. Examples with WPF, MvvmCross, AngularJs. It also contains solutions for common use cases.
This document provides an overview of developing iOS applications using C# and .NET. It discusses how common .NET patterns and idioms map to their iOS counterparts. It also covers the basic building blocks of iOS development in C#, including views, view controllers, controls, animation, and the three most important views: scroll views, table views, and collection views. The document aims to help C# developers get started with iOS development by explaining how iOS development in C# relates to more familiar .NET platforms.
MVP Community Camp 2014 - How to useenhanced features of Windows 8.1 Store ...Akira Hatsune
This document discusses enhancements to Windows 8.1 Store apps and Blend 2013. It outlines major changes in Windows 8.1 including the replacement of ViewState with the ApplicationView class and changes to in-app search. It also describes new APIs, enhanced hub app and traditional templates, and new behaviors and sample data capabilities in Blend 2013. Store app developers can take advantage of these features to improve app design, navigation, and development workflow.
This document provides an introduction to developing native iOS apps using C# with Xamarin. It discusses:
- Using Xamarin to access the full iOS APIs from C# in Visual Studio.
- The components of a Xamarin iOS app, including the Main, AppDelegate, views and view controllers.
- Implementing navigation between views using storyboards and segues.
- Managing lists and tables using classes like UITableView, UITableViewCell, and UITableViewSource.
Building a full-stack app with Golang and Google Cloud Platform in one weekDr. Felix Raab
This document discusses building a full-stack application called MemeMail using Golang and Google Cloud Platform within one week. It describes choosing Google Cloud over other cloud providers for its ease of use. It then discusses the frontend implementation using Vue.js with a simple state mutation approach. The backend is built with Golang on App Engine using Cloud services like Datastore and Cloud Build for CI/CD. It emphasizes keeping the architecture simple rather than over-engineering for an MVP within a tight deadline.
The document provides an overview of Xamarin and Telerik UI for Xamarin. It discusses that Xamarin allows building mobile apps using C# that can target iOS, Android and UWP from a single codebase. It highlights key features of Xamarin like reusing existing .NET skills, consistent cross-platform APIs, and great tooling. It also summarizes the Xamarin technology stack and when to use Xamarin.iOS, Xamarin.Android or Xamarin.Forms. The document then discusses the Telerik UI for Xamarin library, which provides polished cross-platform UI controls to build apps, allowing developers to focus on features rather than UI details. It show
Building your first android app using xamarin (Gill Cleeren)Visug
Do you have a great knowledge about C#? Maybe you’ve already built a great mobile app on Windows Phone or Windows 8 or even Windows 10? Would you like to be able to use your knowledge to build an Android app without having to resort to other languages or IDEs? This is possible using Xamarin! In this session, Gill Cleeren will take you through the creation of your first Android application: Joe’s Coffee Store. Along the way, you will learn the basic concepts of Android such as Activities and see how we can use these from Xamarin.Android. We’ll need to connect with services to get access to data and we’ll learn how to navigate in the app. You’ll see we can do this all of this directly from Visual Studio. We will finish the session by looking at how we can deploy the application to the Google Play Store so it’s ready for our users! You’ll walk away wanting to port your code to Android!
Silverlight is a Microsoft technology for building and delivering rich interactive applications and media experiences on the web. It allows developers to use HTML, CSS and JavaScript for application logic and XAML for user interface markup and animation. Silverlight supports cross-browser deployment and integrates with common developer tools like Visual Studio and Expression Blend.
The document discusses customizing the user interface in AEM 6.1. It covers extending component dialogs by providing a diff instead of copying the entire dialog structure. It also covers customizing page properties by using flags to control which properties are shown in different views. Additionally, it discusses customizing search forms by leveraging reusable search predicates and the Sling resource merger to overlay forms.
From Flash to Canvas - a penchant for black holesPatric Lanhed
From Flash to Canvas discusses the advantages of using the HTML5 Canvas element over Adobe Flash for building interactive graphics. It provides a brief history of both technologies and their evolution. Today, Canvas has widespread browser support, though text rendering and some features lag behind Flash. Tools like CreateJS, EaselJS, TweenJS and PreloadJS help make Canvas development easier by providing a display list, animations, loading and other capabilities. The presentation demonstrates these tools with an example animation exported from Flash Professional to Canvas using the Zoe tool.
Presentation on the Model-View-ViewModel Design Pattern for Silverlight application. Presented by Jonas Follesø at the Norwegian Developer Conference 2009.
MOPCON 2014 - Best software architecture in app developmentanistar sung
Talking about how to build smart design and architecture for app development. Let your app can easy develop and deploy components on your app. And more topic of version control and quality improvement.
The document discusses the new touch-optimized UI in AEM 6. It highlights that the user experience needs to work across devices and browsers given the proliferation of mobile devices. The new UI focuses on being mobile, simple, and future proof. It leverages web standards and reusable widgets to create a consistent experience across solutions. The presentation provides an overview of key highlights of the new touch UI and discusses the transition and feedback process.
The document discusses customized Java EE training courses that are developed and taught by a well-known author and developer. The training courses cover topics like Java, JSF 2, servlets, Android development, and can be held either at public venues or customized on-site at organizations. Details are provided on layout strategies and commonly used attributes for XML layouts in Android development, with examples of nested LinearLayouts using different orientations, widths, heights and gravities.
The document discusses using the Model-View-ViewModel (MVVM) pattern to increase cross-platform code sharing in Xamarin apps. MVVM separates app logic, UI logic, and UI, allowing business logic to be shared via portable class libraries and UI logic to interact with it in a cross-platform manner via bindings and commands. This produces more testable and maintainable apps with less platform-specific code than traditional approaches. The document provides an example tip calculator app to illustrate MVVM concepts and benefits.
Everyone wants to create compelling and immersive Apps, with the right skills, you can do this in Xamarin.Forms. This session will cover what you need to know to take your Xamarin.Forms Apps experience to the next level. We will be discussing the various customisation techniques like styles, effects and renderers
This document discusses porting a legacy application to use the Model-View-ViewModel (MVVM) and Composite Application Guidance (CAL) patterns. It defines key MVVM concepts like models, views, presenters, and presentation models. It outlines advantages of CAL like modularity, reusability, and separation of concerns. It then provides a sample scenario of a legacy life insurance application and steps to refactor it to use these patterns, including creating modules, services, and using regions to host views.
Building xamarin.forms apps with prism and mvvmMike Melusky
This document summarizes a presentation about building Xamarin.Forms apps with Prism and MVVM. The presentation covered introducting Xamarin.Forms, creating a basic app, .NET Standard, core concepts like XAML and navigation, introducing the MVVM pattern and Prism framework, and additional topics like SQLite, authentication, and testing. It demonstrated building a simple app, integrating Prism and dependency injection, and using MVVM patterns like commands and data binding.
Developing Android and iOS Apps With C#, .NET, Xamarin, Mono, and Windows AzureRainer Stropek
The Xamarin and Mono platforms enable C# developers to use their existing knowledge and experience to write apps für Android and iOS. At BASTA 2013 conference I did a 75 minutes session about that topic. During the session I showed a sample that used SQLite on the phone and Windows Azure Mobile Service as its backend in the cloud. This is the slidedeck I used for the session
The Model View ViewModel (MVVM) is an architectural pattern originated by Microsoft as a specialization of the Presentation Model (Martin Fowler). Similar to MVC, MVVM is suitable for client applications (Xaml-based, Xamarin, SPA, ...) because it facilitates a clear separation between the UI and the Business Logic. Examples with WPF, MvvmCross, AngularJs. It also contains solutions for common use cases.
This document provides an overview of developing iOS applications using C# and .NET. It discusses how common .NET patterns and idioms map to their iOS counterparts. It also covers the basic building blocks of iOS development in C#, including views, view controllers, controls, animation, and the three most important views: scroll views, table views, and collection views. The document aims to help C# developers get started with iOS development by explaining how iOS development in C# relates to more familiar .NET platforms.
MVP Community Camp 2014 - How to useenhanced features of Windows 8.1 Store ...Akira Hatsune
This document discusses enhancements to Windows 8.1 Store apps and Blend 2013. It outlines major changes in Windows 8.1 including the replacement of ViewState with the ApplicationView class and changes to in-app search. It also describes new APIs, enhanced hub app and traditional templates, and new behaviors and sample data capabilities in Blend 2013. Store app developers can take advantage of these features to improve app design, navigation, and development workflow.
This document provides an introduction to developing native iOS apps using C# with Xamarin. It discusses:
- Using Xamarin to access the full iOS APIs from C# in Visual Studio.
- The components of a Xamarin iOS app, including the Main, AppDelegate, views and view controllers.
- Implementing navigation between views using storyboards and segues.
- Managing lists and tables using classes like UITableView, UITableViewCell, and UITableViewSource.
Building a full-stack app with Golang and Google Cloud Platform in one weekDr. Felix Raab
This document discusses building a full-stack application called MemeMail using Golang and Google Cloud Platform within one week. It describes choosing Google Cloud over other cloud providers for its ease of use. It then discusses the frontend implementation using Vue.js with a simple state mutation approach. The backend is built with Golang on App Engine using Cloud services like Datastore and Cloud Build for CI/CD. It emphasizes keeping the architecture simple rather than over-engineering for an MVP within a tight deadline.
The document provides an overview of Xamarin and Telerik UI for Xamarin. It discusses that Xamarin allows building mobile apps using C# that can target iOS, Android and UWP from a single codebase. It highlights key features of Xamarin like reusing existing .NET skills, consistent cross-platform APIs, and great tooling. It also summarizes the Xamarin technology stack and when to use Xamarin.iOS, Xamarin.Android or Xamarin.Forms. The document then discusses the Telerik UI for Xamarin library, which provides polished cross-platform UI controls to build apps, allowing developers to focus on features rather than UI details. It show
Building your first android app using xamarin (Gill Cleeren)Visug
Do you have a great knowledge about C#? Maybe you’ve already built a great mobile app on Windows Phone or Windows 8 or even Windows 10? Would you like to be able to use your knowledge to build an Android app without having to resort to other languages or IDEs? This is possible using Xamarin! In this session, Gill Cleeren will take you through the creation of your first Android application: Joe’s Coffee Store. Along the way, you will learn the basic concepts of Android such as Activities and see how we can use these from Xamarin.Android. We’ll need to connect with services to get access to data and we’ll learn how to navigate in the app. You’ll see we can do this all of this directly from Visual Studio. We will finish the session by looking at how we can deploy the application to the Google Play Store so it’s ready for our users! You’ll walk away wanting to port your code to Android!
This document discusses IBM Rational Host Access Transformation Services (HATS) which transforms traditional text-based interfaces into web, portlet, rich client or mobile device interfaces. It provides an overview of HATS capabilities including creating macros, integration objects, web services and using HATS with other IBM technologies like SQL, Toolbox for Java and Program Call Markup Language.
SharePoint Framework, Angular and Azure FunctionsSébastien Levert
Things are moving fast. Sometimes you might even feel that you own comfort zone is getting of control. But in a Mobile-First, Cloud-First world, things are changing to a crazy pace and to stay on the top of your game, you need keep up with the latest and greatest technologies that are available out there. By staying up to date, you will give to yourself new options that will let you be more productive, write better code and push you in a more open and more collaborative world.
With the official shipment of Angular 4 and the current release of the SharePoint Framework, it is now the time to start moving towards those new technologies in your SharePoint Solutions.
In this session, we will cover the modern tool belt of the SharePoint developer by covering the SharePoint Framework as the new surface to express yourself, Angular as a Framework to enable you to build complete applications within your SharePoint modern experiences and Azure Function as the perfect server-side companion for all your Office 365 & Azure development.
This very demo-intensive session will make sure that at the end you get those 3 key takeaways :
- Understand the role of the SharePoint Framework, Angular and Azure Functions in this Cloud-First, Mobile-First world
- Have a complete sample where the modern tool belt is relevant and useful in a real-world scenario
- Change the way you will think for your next SharePoint project
Xamarin is a mobile application development platform for building native and cross-platform apps using C# and .NET. It was started in 2011 and was originally based on Mono. It allows developers to write native Android, iOS, and Windows apps with shared code and libraries, and developers can use C# with Xamarin.Forms to write cross-platform UIs. Xamarin apps provide full access to native APIs and can be developed in Visual Studio. The platform has over 20,000 customers, 375,000+ developers, and a small team of 76 employees.
Supercharge xamarin forms with custom renderers and animationsTom Walker
Xamarin Forms includes an assortment of commonly know controls out of the box to help developers build cross-platform UIs using XAML. However, if you are going to use Xamarin Forms for real-world projects you’re going to need to understand custom renderers on how to customizing the rendering of the controls to their native versions. Besides covering customer renders this session will cover how to leverage animation in your controls to add the extra professional polish to your Xamarin mobile apps.
Moderne App-Architektur mit Dagger2 und RxJavainovex GmbH
The document discusses modern app architecture using Dagger 2 for dependency injection and RxJava for asynchronous data flows. It covers dependency injection and how Dagger 2 avoids reflection for faster performance. It also discusses the model-view-presenter pattern to separate business logic from display logic. Finally, it explains how RxJava uses observables and observers to implement asynchronous data streams and how this avoids callback hell and allows pushing data instead of polling.
Power Your Mobile Apps with Sitecore
Mobile devices continue to gain popularity with customers and enterprises at a rapid pace. Sitecore is the ideal platform to be the central hub for your multichannel mobile content, powering your organization's native mobile and responsive web applications. This presentation illustrates how to leverage the power of Sitecore to deliver content you've already invested in building within those applications. Unlock the power of Sitecore to boost your organization mobile app potential!
Presented by: Jonathan Chen, Bluetube
Personalization allows websites to track user interests and behaviors to provide tailored suggestions and prioritize relevant content. It can change website flows and calls to action based on a user's profile. While it provides organizational value, personalization requires strategy, tools, and potentially developer integration. A demonstration showed how a performing arts site could personalize based on musical interests or buying patterns, changing the user experience based on their profile.
This is a presentation that overviews Xamarin.Forms . Xamarin.Forms is used to quickly design Android UI & iOS UI's from a single, shared C# codebase. Its API & UI design tools help app developers work efficiently. Make developing mobile applications easier!
This document discusses the mobile development platform Xamarin and its benefits for enterprises. It is presented by Bluetube, an award-winning digital agency established in 1999. Bluetube argues that Xamarin allows developers to write native mobile apps in C# that can target iOS, Android, and Windows using shared code, with benefits including lower maintenance costs and the ability to use a single codebase and skillset across platforms. While Xamarin presents some challenges around UI development and code sharing, Bluetube's experience indicates it can reduce development efforts by 25%+ with 50% code reuse between iOS and Android apps.
This slide was first presented at the Atlanta Xamarin Users Group. Feel free to join us and share your Xamarin knowledge at the next one @ http://www.meetup.com/Atlanta-Xamarin-Users-Group/
2. Who is Bluetube
Bluetube designs & builds award-
winning mobile applications and
responsive websites that revolutionize
how organizations do business.
• Mobile User Experience Experts
• Atlanta’s Leading Xamarin Premier Consulting Partner
• Xamarin Test Cloud Consulting Partner
• Service Global 2000s and Major Non-Profits
3. My Background
Nate Rickard
• Director of Architecture @ Bluetube
• Working with Xamarin MonoTouch
since late 2012
• Xamarin Certified Developer
• Relative newcomer to Xamarin.Forms
(but isn’t everyone?)
• Has a terrible picture
4. Presentation Topics
Brief Overview of Xamarin.Forms
– What it is
– Why it matters
Practical Application of Xamarin.Forms
– What are some considerations when deciding whether to use it?
– When does it make sense to use it?
Extending Xamarin.Forms
– Using built in features/tactics to improve development
– Supplementing Xamarin.Forms with additional (or changed)
functionality
6. What Is Xamarin.Forms?
• Xamarin.Forms is a cross-platform, natively-backed UI toolkit.
• A shared set of pages, layouts, views (and controls) that abstract
native functionality across platforms.
• Allows developers to create native user interfaces that can be shared
across mobile platforms.
• A compelling set of features that include XAML support, 2-way
property bindings, good support for the MVVM pattern, UI layout
engine, native dependency service location, messaging center.
7. Why Should You Care?
• It can save you time! Build apps in half the time.
• It can save you money! Build apps at half the cost.
• It makes you more efficient! Maintain less code.
• Bottom line: It allows the same development team to work on
multiple platforms at the same time, share the (majority of the)
code, fix issues on multiple platforms simultaneously, and use a
great development paradigm (in MVVM)
10. When To Use Xamarin.Forms
• When maximum code sharing is the main priority.
• When creative flexibility exists.
• When you can plan your UI around Xamarin.Forms.
• When multiple platforms are a requirement but
budget is tight.
11. When NOT To Use Xamarin.Forms
• When a specific creative UI is required.
• When you need a component that can not be shared.
• When UI performance is paramount.
• When you are unwilling to meet Xamarin.Forms pattern for
implementation.
• Bottom line: Xamarin.Forms is meant to be used when you are
willing (and able) to adopt it’s Paradigm.
12. It’s Per Screen, Not Per App
• Xamarin.Forms can be extended.
• Xamarin.Forms can be mixed with native screens in the same
Xamarin application.
• Just because a screen or component needs to be custom it
doesn’t mean the whole app must be.
14. Dependency Service
• Allows access to Native SDKs.
• Simplifies how platform specific features are implemented.
• Allows you to register classes which will then be pre-initialized
for you upon request.
• It removes the need for you to “new” every time you need to
use that class.
15. Dependency Service - Example
Define an interface the Xamarin.Forms PCL:
public interface INativeServices
{
bool LaunchUri (Uri uri);
}
16. Dependency Service - iOS
Implement the interface in the iOS platform project:
[assembly: Xamarin.Forms.Dependency (typeof(NativeServices))]
namespace MyApp.iOS
{
public class NativeServices : INativeServices
{
public bool LaunchUri (Uri uri)
{
var app = UIApplication.SharedApplication;
var url = NSUrl.FromString (uri.ToString ()) ?? new
NSUrl (uri.Scheme, uri.Host, uri.LocalPath);
if (app.CanOpenUrl (url)) {
return app.OpenUrl (url);
}
return false;
}
}
}
17. Dependency Service - Android
Implement the interface in the Android platform project:
[assembly: Xamarin.Forms.Dependency (typeof(NativeServices))]
namespace MyApp.Droid
{
public class NativeServices : INativeServices
{
public bool LaunchUriAsync (Uri uri)
{
Device.OpenUri (uri);
return true;
}
}
}
18. Dependency Service - Usage
Use the DependencyService to get the platform-specific
implementation of the interface in the shared PCL Xamarin.Forms
project:
DependencyService.Get<INativeServices> ()
.LaunchUri (contact.CellUri);
19. Messaging Center
• The Xamarin.Forms MessagingCenter allows you to send and
receive “Messages” without knowing who they are going to or
who they are coming from
• It is very similar to using Event Handlers, but messages are
global, more decoupled, and more flexible
• This form of messaging is often named Event Aggregation or an
event bus
20. Messaging Center
Example
• Publish a message:
MessagingCenter.Send<WelcomePage, string> (this,
"Authenticated", User.Id.ToString ());
• Subscribe to a message:
MessagingCenter.Subscribe<WelcomePage, string> (this,
"Authenticated", (sender, arg) => {
//do something whenever the "Authenticated” message is sent
//using the 'arg' parameter which is a string
});
21. Custom Renderers
• Renderers form the backbone of the Xamarin.Forms magic
• Xamarin.Forms contains dozens of built in renderers for every
most Pages, Layouts, Views, and Cells
• Custom renderers involve us changing the way a
Xamarin.Forms element is rendered natively, or adding
functionality via new views/controls or extending an existing
view
22. Custom Renderers
Customize an existing view
– Find the renderer it uses and derive your own
– Use native native and renderer ‘lifecycle’ events/features to customize
the way the view is rendered on that platform
– Example: I don’t want ListView cells to show their ‘selected’ state
• Inherit from ViewCellRenderer
• iOS - Override GetCell() and set the cell’s selection style:
cell.SelectionStyle = UIKit.UITableViewCellSelectionStyle.None
• Tag the renderer with the ExportRenderer attribute:
[assembly:ExportRenderer (typeof(ViewCell),
typeof(NonHighlightViewCellRenderer))]
23. Custom Renderers
Add features to an existing view
– Create a new class inheriting from an existing View
– Add new member(s) – properties, methods, etc.
– Use the derived view in your XAML/code instead of the base View
– Implement a custom renderer that uses the extended view
– Example: I want a 2 line title/subtitle in the navigation bar
• Inherit from Page or NavigationPage and add a Subtitle property
• Add a custom renderer that inherits from NavigationRenderer
• iOS – add a new UIView with multiple labels for title/subtitle and set
the TitleView of the NavigationBar
24. Custom Renderers
Add a new type of view/control
– Create a new class inheriting from an existing View or just View
– Use the new view in your XAML/code
– Implement a custom renderer that uses the new view
– Renderer could inherit from another renderer or simply
VisualElementRenderer or ViewRenderer
– Example: I want a view that draws a shape, ShapeView
• Create ShapeView : BoxView and
ShapeViewRenderer : VisualElementRenderer<ShapeView>
• Implement drawing/masking code in renderer to achieve shapes
25. Extending Views
• Sometimes you can customize the behavior of a View without a
custom renderer.
• Inherit from Xamarin.Forms View, Page, Layout, Cell, etc. and
add or change functionality.
26. Extending Views
Example
• Need: ListView does not have an ICommand to bind an item
tapped command to, only an ItemTapped event.
• Solution: An extended ListView that provides an
ItemTappedCommand that can be bound and used in a
ViewModel.
• How: Derive our own ListView class and wrap the event
handling into an ICommand.
27. Extending Views
public class ExtendedListView : ListView
{
public static readonly BindableProperty ItemTappedCommandProperty =
BindableProperty.Create<ExtendedListView, ICommand> (bp => bp.ItemTappedCommand,
default(ICommand));
public ICommand ItemTappedCommand {
get { return (ICommand)GetValue (ItemTappedCommandProperty); }
set { SetValue (ItemTappedCommandProperty, value); }
}
public ExtendedListView ()
{
this.ItemTapped += ExtendedListView_ItemTapped;
}
void ExtendedListView_ItemTapped (object sender, ItemTappedEventArgs e)
{
if (ItemTappedCommand != null) {
ItemTappedCommand.Execute (e.Item);
}
}
}
28. Custom Renderer
• Need:
– Xamarin.Forms provides a CarouselPage, which allows the user to swipe
entire pages of content left or right.
– What if we only want to swipe a portion of the page? Maybe an Image
slider/carousel?
• Options:
– Go complain in the Xamarin forums
– Look for a pre-built 3rd party component
– Build our own
• Issues:
– We can’t customize CarouselPage
– Xamarin.Forms does not have a Swipe gesture recognizer (?!?)
Example
29. Custom Renderer
• What we’ll build
– A reusable ImageCarousel view (control) that allows the user to swipe
images left/right
– Use custom renderer(s) to ‘forward’ the swipe gestures to our view
• Goals
– Maximize code reuse – most of the logic stays in our PCL
– Support for code-based UI layout and Xaml
Example
30. Topics - Review
Brief Overview of Xamarin.Forms
– What it is
– Why it matters
Practical Application of Xamarin.Forms
– What are some considerations when deciding whether to use it?
– When does it make sense to use it?
Extending Xamarin.Forms
– Using built in features/tactics to improve development
– Supplementing Xamarin.Forms with additional (or changed)
functionality