Spectacular Components for Xamarin Apps

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
>> I am always excited about every single thing and every single session so far. Thank you so much for all the great questions that have been coming in on Twitter. Of course, you need is #dotNETConf. We pick your question, you will be sent a Xamarin Monkey. So how cool is that? So don't forget to do that throughout all the sessions today. We have many more hours of content coming up, and don't forget everything will be on-demand later on, and we'll post that on the Xamarin blog, Channel 9, YouTube, everywhere where you get Xamarin stuff. Now, I'm really excited because I have a brand new session that I've never done before. It's between me and all my friends, all of you amazing developers out there building things in and for Xamarin. If you don't know who I am, I'm James Montemagno. I'm a Principal Program Manager Lead here at Microsoft, and I love mobile development with Xamarin. How's the Xamarin show here? We tweet about it, blog about it, create samples. I love the amazing work that the community is doing. What I wanted to do today is show off that amazing work that the team is doing, the community members are doing as well. So this is the James Montemagno and Friends session. So I first want to talk about Xamarin.Essentials and some of the work we're doing there. Xamarin.Essentials is in the box. You get it with every file new project that you get. What Xamarin.Essentials does is it gives you access to over 60 native APIs for iOS, Android, Windows, and more from a single shared API. That's really cool because if you want to access geolocation, phone dialer, e-mail, vibration, connectivity. You can do all of that with just one API. So you have to learn a for each platform. It's completely opensource, and we have amazing contributions from the community that we are continuously adding. Now, last year, when we launched Xamarin.Essentials, we started with iOS, Android, and UWP. We quickly heard that developers wanted our more platforms. So we then added in watchOS, tvOS, and we worked with the Samsung team to add official Xamarin.Essentials API support to the Tizen platform. We work closely with the community and our partners to ensure that when we're adding new features to the core, they get added to additional platforms. I'm also excited to announce that soon we'll be adding even more platforms to Xamarin.Essentials, and we're starting next with macOS. So soon you will have a fully cross-platform API for not only your mobile applications, but also your desktop applications to truly, wherever your .NET applications can run, that's where we want to be. So right now, we just recently launched version 1.5, which I'm really excited about as Theme Detection, Platform Extensions, a Cross-platform Permissions API, and even a WebAuthenticator API to enable you to login with OAuth with a few lines of code. It's also based on AndroidX for the brand new Android 10, if you're targeting that, same with Xamarin.Forms. Now, we'll be working on 1.6 next, which will add macOS support, which is near finally in the open PR on GitHub. But we'll also be adding file pickers, contacts, and calendars. We've worked closely with developers in the community, and these are community contributions that we've been iterating on them for the last few months, and we're ready to pull them in to the core of Xamarin.Essentials. So be on the lookout for that. But it's not about just all the great things that we're working on here. We love the community, and I love the community and all the great work that all of you are doing. So what I wanted to do today is something a little bit different. I asked all of my amazing friends out there on Twitter, on GitHub, and through all my e-mails that you've all sent me throughout the years to highlight your projects, the things that you're working on. You're going to see some amazing opensource projects from the Xamarin team, but also community developers around the world. I first want to start out with some amazing libraries that developers just sent me and said, "Hey, I'm using this on my Xamarin app, why don't you show it off?" So I said, "Sure." First one's from Shaun, which is expressive, which is this awesome .Net API, or it's an any .NET application that enables you to evaluate expression. So here he's doing one plus one, and it's going to evaluate an integer to return three or 1 plus 2 to return three, which is really cool. It's really extensible, completely opensource. Next, here we go. MVVM Atom for my good friend Sameer, who works here at Microsoft now. It's really awesome. It's a minimum base class MVVM with commands and navigation service. You wanted to get the maximum done in the most minimum amount of time. So it allows you to do custom commands and things like that for your MVVM. Next up, HTTP Tracer. This is from Dylan, Daniel, and Chase, really, really cool stuff. I get asked all the time, "Hey, I'm making HTTP requests. How do I debug that? How long does it take?" Well, HTTP Tracer does that. It works with any .NET application and your Xamarin apps. It's a fiddler for those applications. You can trace your responses, your requests, output it to the council, which is what you're seeing here. Best of all, completely opensource. In fact, everything I'm showing you completely opensource. AnyBind. Alexander sent this one, and I really like this. This is the best part, I didn't know a half of this stuff existed. So sending it in is awesome. This AnyBind helps improve the binding situation to get rid of those OnProperty changes. It's really cool. What he does is it simply comes in. He used before here with adding events for property change, having to propagate up OnPropertyChanged notifications in here on the right-hand side, after just simply initializes the dependency manager as these little attributes on top and the magic happens. TinyInsights from Daniel out there, which is awesome. This is really cool if you're using any Analytics. So App Center, App Insights or Google Analytics, it abstracts it into a common API that you can access from your shared code. You can even add your own custom providers. So if you're not satisfied with what's out there using your own back-end, it's really, really easy. So here, there's a little tracker that you initialize. You can set up dependency trackers, what you're calling, and you can send that into the back-end. It's really, really nice, no matter what you're using and multiple providers too. So I love that because sometimes you're sending data to multiple sources, and I really, really like this to give you insights into your apps. Now, when you go beyond Xamarin.Essentials, which sometimes you may, you want deeper integration OS. You can always access those APIs. But there are amazing community projects out there that deliver some of this great functionality. So now that I ask the amazing developers and all of you to send me your suggestions. I said, "Hey, why don't you make a video for me?" So I have a few here that I want to play back for you. The first is Allan Ritchie and his amazing Shiny project. I use Shiny in my applications to do all sorts of good stuff. Check him out on GitHub and the shinyorg as well. But I'm going to let him talk about it because he deserves it, because he helped build it. So here we go. >> Hi, my name's Allan Ritchie. I've been working with Xamarin and .NET for many years. I'm a former Xamarin MVP and a current Microsoft MVP. Over the last few years, I've contributed many opensource components to help developers get stuff done with a total of almost four million NuGet downloads to date. I love being a part of the Xamarin and.NET community. Today, I'm going to talk about my latest opensource contribution to the community called Shiny. Traditionally, background services can be quite difficult to write and even harder to bring your shared code and services to them. No one likes to rate spaghetti code or untestable code. Forget about a good cross-platform solution to this until now and Shiny. Shiny fixes all these scenarios and makes it really easy for you to write this code fast that runs across all of the Xamarin platforms. By bringing a solid dependency injection architecture, Shiny allows you to get your back-end done quickly, freeing you up to create beautiful user experiences and innovative applications. Shiny is a framework that has several libraries and utilities for you to use, such as Periodic Background Jobs, Geofencing, Background GPS, Motion Activity Recognition, Local Notifications, Push Notifications, Bluetooth LE Client and Server Modes, BLE Beacon Detection and more to come in the future. As the standard process pick with a NuGet, you need to install, each of the NuGet packages does contain a baseline set of instructions to help get you started. Shiny like Xamarin.Forms and Xamarin.Essentials does require some boilerplate code. Because Shiny use dependency injection, we do need a general type of startup file. If you've used ASP.NET core, this should look familiar to you. You'll notice that we've registered a background job with some criteria and notifications module with categories and actions and some geofencing. We'll take a look at how we handle the events for these modules shortly. This file is also where you want to register your own services and code so that Shiny can use them in the background events. iOS is pretty straightforward when it comes to the boilerplate code. Everything is done in AppDelegate and any permissions that you normally need to get set up in the info P list. Nothing new here but a couple lines of code. As you can see, Shiny wires in using extension methods. This is to make the plug points a little easier for you to discover during development. Android, on the other hand, is a bit more complicated. Shiny needs to initialize before everything. Note the use of the main application here. This is something that is a bit different versus Essentials and Forms. Behind the scenes, Shiny uses broadcast receivers, which when run in the background, will be starting the app in a cold state without ever hitting your main activity, and thus going through the normal Xamarin.Forms application life cycle you are used to. Lastly, there are few touch points here in the main activity to enable things like notification entry, interception, and permission requests. Finally, let's take a look at our Background Job code. Note the constructor injection of the Notification Manager. You can basically DI, whatever you registered in your startup file here. In this job, we're not doing anything crazy, just sending out a notification. Things you could do with background jobs are things like synchronizing offline data to and from your server, maybe cleaning up a local database, maybe sending some reminder notifications later in the day. Note that jobs are periodic, not scheduled. Android is generally pretty good about running roughly every 15 minutes. iOS is a bit more intelligent, and we'll run shortly before the user is known to use the app. The OS is essentially being trained by the user when they like to use your application during the day. Let's take a look at some geofencing. Geofencing allows you to monitor for when your user is entering or exiting a circular region from a center point. Geofencing has several great scenarios, like welcoming a user to a certain location. In the startup file, I registered a geofence for Toronto, Canada CN Tower. When the user gets roughly a mile away from the CN Tower, we'll send a notification welcoming the user and attach a category. We'll cover that in a couple slides, which will allow the user to interact with the notification. We can also use a different set of actions based on if the user is leaving the geofence. For now, we'll just say goodbye. Here's a couple of screenshots showing our trigger geofence running. Note the welcome response and how the app responds with another notification without ever entering the application. Let's take a look at how we accomplish that. This is the notifications delegate. From here, I'm able to catch events for when the notification is actually being sent and when the user has interacted with one of your notifications. The only entry event here is where I'm responding to the user interaction from the geofence notification. If the user chose to leave a message, I'll simply respond to them saying that their message is recorded. If they wanted a free ticket, we'll just let them know that we've received their request. Because the methods are traditional .NET tasks, you could also choose to interact with your backend here to provide some additional business logic. Looks pretty simple, doesn't it? So that's a quick look at Shiny. I hope you liked what you saw. Be sure to check out the links below for the latest developments in modules that are being worked on. Thanks for watching. >> There you have it, Shiny to accomplish so much more. Geofencing, background notifications, and sinking, everything that you could possibly want. That's amazing work being done by Allan. I cannot thank him enough for him and all the contributors to the project. I use it in my applications, and I hope that you find it useful too. Now, sometimes, it's not just about libraries and the application. It's about extensions, about build time of your application. I asked my good friend, one of my best friends in the entire world, Jonathan Dick, you may know as Redth on the Internets. I worked closely with him here on the Xamarin team, specifically on Xamarin.Essentials, and he's tackling how to properly get different image sizes from a single source. Everyone knows images, different sizes, different platforms. He's going to show off Resizetizer NT in his project. So let's check it out. >> Hey, James. Hey, everyone. This is John Dick here. You may better know me as Redth on the Internet or on Twitter. Today, I wanted to share with you quickly just a little something I've been working on to make cross-platform images in your Xamarin apps a lot easier. So if you've ever done images before in your Xamarin apps, you know that it can be a pain. So if you have your Android app, and I've got a new solution here that's just a Xamarin.Forms app, it's got an Android app, it's got an iOS app, it's got a UWP app. If I want to add an image to this, I've got to go into my resources, I've got to resize it for all the different displayed densities that exist for Android devices. When I'm done doing that, I've got to go into my iOS project, I've got a resize everything for all of the different display densities for it. So I've got like the normal image, the 2x image, the add 3x image, and finally, if I come down to UWP and I do the same thing, I've got a bunch of different assets. I've got a scale 100, a scale 200, 400, etc, etc. That's a lot of images to have to resize, and so I've made a quick plugin that lets you share your images from your shared code project. If you go today and install Resizetizer NT, go install this to all your different projects, including your shared code project. Then what I'm going to show you here is I'm going to take a vector image, an SVG, and I'm going to drag it into my shared code project here. You'll see this popping, it's a Xamagon, it's an SVG, it's a lovely image. Now, what I need to do is go to its properties, and I need to set it as a shared image type, and then this is a build action that Resizetizer adds for you. I go and resizetizer shared image, and when I'm done with this, I can actually go into my project file, my shared project file, and I'm going to go ahead and set an attribute on here called BaseSize. This is going to be the size of the image that I want to specify in my code. Now, because this is a vector, we actually have to know what your normal resolution, what your 1x iOS resolution, your MDPI Android resolution, your scale 100 resolution for UWP is so that we can make the right sizes for all the other, their different display densities. I go ahead and I save this, I add my base size, and now in my apps, I can actually reference this in all my app head projects just using, now, this is a vector, so we'll resize it for you, and it will actually output as a PNG file. So I'm going to go ahead and reference this as xamagon.png. Let's go into our shared project here. Let's get rid of this label, and let's add an image. Let's call it xamagon.png. We'll center it. Horizontal options will be centered to. Then finally, we've got to go give it our width requests, which is going to be 100, and our height requests, which will be 100. Now remember, that's the size we set in our shared project as the base size. So now, I've got this thing. I can go ahead and build my app. Let's start it off on iOS, and you'll see it launch in the simulator here in a second. We'll run, and we should have a lovely Xamagon image. Yeah, nicely in our view here. That's great. You'll notice that if we look at our resources, it didn't actually add it to our resources here, it's actually adding it to our resources in the output folder, in the intermediate outputs. If I go into the output folder here in the OBJ folder for iPhone Simulator, we can go into this folder called resizetizer, and we can see all the different display density versions of that image were created for us as PNGs. They were included into the build automatically. We didn't have to add anything specifically to those projects. So that's pretty cool, and the same is true for Android, for UWP. It now supports WPF, and it will be supporting Tizen soon as well. So we support a lot of different platforms. Now, we'll just run the Android version quick here, and as for doing that, we'll just check out the fact that we don't see any resources built into these folders for the Xamagon. They all exist at runtime, just built into your app automatically for you, all from this one little include shared image item in your project. The Android app is launching now, and we should see a pop up here in a second, and there it is. That's great. We have the Android app, the Xamagon in there, and everything works just fine. Now, we could start the UWP app as well. There we go, the icon is in our UWP app as well. So this is called Resizetizer NT. This is a new plugin I made. It's in pre-release now. Go give it a shot, try it out, and you can get it installed into all your projects, and let me know how it goes. Thanks. >> That thing is absolutely astonishing. The first time John showed it to me, it blew my mind. I was like, "I need to have this, and we need to share with the world." So checkout Resizetizer NT and give us feedback on the project. I know John would love it. Now, let's hope over to the UI. I've shown you some amazing libraries from developers out there for your Xamarin applications and some plug-ins into Visual Studio to help you with images such as Resizetizer. When you're building applications, there's tons in the box. We've had some great sessions about building beautiful applications, and there's a lot more out there. Sometimes you need things that are super-duper custom, and you could build them yourself, but there's amazing companies in the Xamarin and Xamarin.Forms Ecosystem that are making awesome tool kits with tons of controls built into them. Now, I could talk about him all day, but I challenge every single one of the amazing control vendors out there to highlight their amazing tool set in just 30 seconds each. So lets hop over to the video and check them out. >> We explain why you should be using Syncfusion's Xamarin controls in just 30 seconds. Well, let's find out. Essential Studio for Xamarin with comprehensive Xamarin UI controls. Controls that include a High-Performance DataGrid that helps you to efficiently display and manipulate large amounts of data. Our seamless ListView with features such as swiping, multiple orientations, pull-to-refresh, grouping, and more, and our gallery at 30 plus charts that cater to all charting scenario. Plus, you can implement them all and use ease of use Xamarin templates from our Xamarin UI Kit. Want to try them out for yourself, download a free trial at syncfusion.com/xamarin. I made it. [MUSIC] >> Putting together that video was absolutely amazing. Seeing all of the videos come in, combine them up with the awesome music, I literally just playing that over and over again at home. I don't know how my wife put up with me. But truly, there is something out there for any single application that you're building, [inaudible] will beautiful applications. Now, is amazing control vendors are building the most complex, amazing, awesome things possible, and there's also great work being done in the community. So as a few of my friends, some of them already present today to show off more awesomeness. A few awesome projects out there, Magic Gradients, helping you put XAML gradients and C# gradients absolutely everywhere for Marcin and Bohdan, absolutely stunning, built on top of SkiaSharp. The UI Color Picker Control out there from Udara, being able to easily pick a color with just a single XAML snippet in your app. XamAnimation, Javier presented earlier today, easily enabling you to add an animations into your Xamarin applications all from XAML or code behind, super duper awesome, completely open-source. Sheet control. This is an awesome one from Havard who also was tweeting today. A lot of people are asking about sheet control. He spent a lot of hard work on this. It's really awesome to see how easy it is to add the sheet controls into your application. Xamlly is a different tool set out there from Mohamed with progress switch, toggle bars, radio buttons, all awesome, being built on top of Xamarin.Forms to add to your applications. Now, I also asked a few good friends to make another short video. Steven presented earlier today. He talked a little bit about PancakeView and Debug rainbows, but I asked him to go a little bit more in-depth. So here is. >> Hi there. My name is Steven Thewissen, and I'm here to give you a quick overview of some of the NuGet packages that I've created for Xamarin.Forms over the last year. The first package I'd like to show you is PancakeView, which despite its quirky name, it's a really useful control. Using the built-in Xamarin.Forms controls, it can be hard to create views, the view shadows, the gradients, or borders. There are a few built-in controls available that implement some of these things, like frame, for example, but what PancakeView does is it combines it all into a single simple-to-use control. So let's take a look at what options we have available. For that, I will open the accompanying sample app. You can find that in the repo, and it has a built-in page with all the options that has. What I especially like besides these options we are showing here is the debug mode, which allows you to play around with the control itself by adjusting all these sliders and exploring all the options that way. So we have gradients, we have multi-colored gradients, we can adjust angles on them, we can add borders and all shapes and forms, so dashed or maybe a gradient as well, and the angle of that can also be adjusted. It supports CornerRadius. So a uniform corner radius for every corner all the way up to making it a circle. Or we can also do, if we want to, individually around the corners, we can add shadows and multiple fashions, so either using elevation, which is an Android thing, or just a regular shadow. It also clips its content automatically, so it doesn't really matter what type of borders or corners we add. The content is always clipped, and we can also make it into a multi-cornered element, so maybe a hexagon or a triangle if we really want to, and CornerRadius is also influencing that. So we can create all crazy shapes, and we can also rotate that shape around. So it offers a lot of freedom in that regard, has a lot of options, and it can really help you quickly get started on making a beautiful user interface. That was debug rainbows. If you're creating user interfaces in Xamarin.Forms, you've probably come across the scenario where you've changed the background color on an element to identify the space that it consumes on the page or maybe to debug positioning issue, debug rainbows can help you with those issues. So essentially, what the package does is give you a few additional attach properties that you can set with your content pages to enable different debug views. I have downloaded a sample made by Kym Phillpotts. I hijacked his styles and added all of the debug rainbow styles in here. The sample app normally looks like this, which looks pretty great. If we enable debug rainbows, it becomes much more colorful. But this helps you identify where all the different elements are, where they're positioned, and how they align compared to one another. On the topic of alignment, debug rainbows also offers the alignment grid which helps you figure out if everything is aligned evenly. So it allows you to create all these major and minor grid lines. You can adjust all of the properties related to it. So colors, opacities, the interval of how many major grid lines you want, and it really helps you align your items evenly. When combining this with hot reload, you can really speed up your depth loop when figuring out those nasty layouting issues or you can just use it to create pretty colorful pictures. Wraps up this little quick summary of all the packages that I've built over last year. I hoped you enjoyed it, and we'll see each other soon. >> Awesome. I love PancakeView and Debug rainbows. I use them in every single application I build. Hope you find it super useful. I also challenged Steven to put the grid on there, and he totally did it from one of my favorite packages, from I think Jeff Wilcox who did it back in the day on the bunch of different platforms. So really cool to see this work from the amazing community. Our next up, a library near to a lot of our developers hard is SkiaSharp. Somebody you may not even know about SkiaSharp, so I asked Matthew Leibowitz from Africa, one of our amazing developers here, to give a little brief overview of what SkiaSharp is, what you can build with it, and also some amazing libraries built with it. So let me go ahead and show off this. >> Hello, world. I'm Matthew Leibowitz, a software engineer from Microsoft, and I'm based in South Africa. I have the honor of working on many different libraries and tools for all the developers in the community, and not only do I get to work on them, but I get to see the cool and exciting things that are made with those tools. One of my favorite libraries of all time is SkiaSharp, an open-source, cross-platform, 2D drawing library that enables you to do anything when it comes to graphics, animations, or UI. It's based on the amazing open-source work done by the folks at Google on the Skia Project. Skia is used in many things such as Android, Chrome, and Firefox. I intake the code, wrap it in a pretty package, add a few extra APIs, make it work great with .NET, and ensure that it runs on Android, iOS, UWP, MacOS, Windows, Linux and more. You can check out the code for SkiaSharp on github.com/mono/SkiaSharp. Speaking of amazing things done by the community, I just wanted to take the time to show off some of the great things that has been done with SkiaSharp by the folks in the community. The first cool example I like to show off is Balloony by Shanmukha. It's a cool little slider with a balloon, wobbles back and forth using SkiaSharp to draw the balloon. The next is a library called MagicGradients by Marcin that adds shadings, backgrounds or gradients or patterns to pages and views. You can edit in code, or in XAML, or even use CSS to style it. Another very cool library I'd like to show off is MicroChart originally written by [inaudible]. It allows you to add all colorful graphs and charts into your app to represent any data that your app maybe using or you want to show to the user. The last library I'd like to show off is Mapsui. This is awesome cross-platform mapping component that you can drop into your desktop or mobile applications. Just look how smooth this map renders and this is just the CPU renderer. Now, I'd like to move on from individual controls to entire control galleries built on top of SkiaSharp, such as Aurora controls with buttons, gauges, gradients, and even Confetti Control. Another awesome control library is [inaudible] all the buttons, steppers, and other various progress bars that you can add into your app. If we go from libraries and control galleries to entire applications, Wiesław has really cool project called Draw2D. This is a multi-platform 2D diagram editor. It allows you to create and edit 2D diagrams. I hope you enjoyed looking at some of the things made by the folks in the community. Maybe some of your stuff was shown, maybe you're inspired to do some cool things, but I hope you would checkout SkiaSharp. Don't forget to hit up github.com/mono/SkiaSharp. See you around. >> Awesome to see all the amazing things built with SkiaSharp and all the amazing libraries that are built on top of it, and the awesome things you can do to your application. Now, last and not least, I couldn't talk about awesome controls but I'll tell you about my good friend, Jean-Marie. Jean-Marie is an amazing developer, building awesome things. Mr. Sharpnado himself, I'm just going to let him explain all the awesome things that he's building to use in your applications. Hello, ladies and gentlemen. This is Jean-Marie Alfonsi speaking for Sharpnado. Sharpnado.com is a blog about mainly Xamarin.Forms, but also a bit of C# and a tiny bit of Monthy Python. Behind Sharpnado, this is just me, a French software developer working as a freelance. So if you want to build flabbergasting apps, you can contact me and we'll make this happen. But today it's about the community, and I will talk about my components that you can find on NuGet, and we will start with Horizontal List View. So it's really self explainable. What you can do about the Horizontal List View, it sets the column count for example. So now, you have three items, four pages, but if you set the column count to one, you achieve a carousel layout, in fact. Which is cool about the Horizontal List View is that it recycle all the items just like the collection view, and you can also change the layout of the Horizontal List View and have a grid. Now, you have a grid with three column for example, if you set to one column, you have now a list view. Which is really cool also about the Horizontal List View is that you can drag and drop items. Now, if I can take my father, Ted and put it all the way up, or I can take my Steve Carell here and put it all the way down. Now I will jump straight to the tabs. So pure Xamarin.Forms tabs, and so we have a lot of different tabs here, all the different style you can imagine, like the bottom tab item, this one, or the underline tab item, like this one, which are fixed types. But you also have scrollable tabs and custom tabs. You can style them, you can change the color, you can change the font, everything. But which is really cool about it is we can also create your own tab item by inheriting from Tab Item, look at those spam and this animation here. We can play a bit with the tabs you see here. We can just go to those scrollable tabs, and yes, it's working. No problem. Now, I will be talking about my favorite components, the Task Loader View. It's my favorite one because it will remove a lot of boilerplate code, and it will also prevent a lot of crashes. The main provide of Task Loader View is to free yourself from IsBusy equal true. So it's a bit mysterious. To understand it more, we will launch the Ritornado app, and we'll want to achieve this, a little loading spinner with a result view here, a list of games, and if there's error, we will show an error view to the user. This is what we want. Now to do this, we have a view model here and all these properties like IsBusy. If you set IsBusy to true, you will see the spinner. If it's a zero, it's true, you will see the error view, All those kind of things here. For sure, you have retroGamingService. You will retrieve your games from it, and we have our load method that will run this code, which is a missing void method. We'll just start with the Properties and then load the Initialization and Catch all the Exception. All those properties will be bound to our example. So we have the result view here, the loading view here with an activity indicator and the error view as a stack layout. So this is what you saw earlier. If we use a Task Loader View, all is really simple now. You just add Task Loader View and that's it. In it, you just have your result view, and all the loading states are embedded in it. It's the same in the view model. If you use a task loader notifier, you just give in the initialization code and it will take care of everything. You see, IsBusy is gone. All their properties are gone, everything is taken care of. Thanks to composition. So it's really great. Now, if you look at the documentation, you can see that it features many things like default states, though there's already different views that are implemented in the Task Loader View, default one, like the error view is just an image with text. It's styleable, you can put any font you like. For example here, it's the ISSD fonts. But you can also use your own custom view by overriding the loading states. You see how you do it here? Loading States, you just override the views and you put your own, so you can achieve really all the design you want. Now, there are more to it. You can also use skeleton loading, thanks to our rich package. Better also, load the animation. So that really everything, anything you can do with the Task Loader View. So guys, I think that's all for me. Have a great .NETConf and see you soon on Sharpnado. Bye, guys. >> I want to first say thank all of you for being part of this amazing Xamarin community, building libraries, building on top of what the team builds and also just sending your pull requests and your feature requests. You-all made it easy for me to put together this presentation because all of you together in this amazing community help other developers build beautiful, stunning applications. We couldn't do this alone. We do it as one big happy .NET and Xamarin family. I want to thank everyone. I want to make a shout out to all the different awesome projects that are highlighted here and the amazing component vendors. I believe we have time for just three questions. So I'm going to head over to the board here really quick, and Olia is helping me out by picking some good ones. The first one's from Rob Wilson. Again, he says, does Xamarin.Essentials support GPS location capture with long running stuff via background services? As of today, it doesn't, of course, Xamarin does. So you could go and access those API's yourself on iOS and Android. But you should also look what Allan Ritchie is doing because he's already built this library included inside of Shiny to do background updates and notifications as well. You can combine the two together if you want or use the amazing open-source libraries that are out there. Now, we are looking at integrating some of that stuff into the project. So check out the GitHub issues as well. Next from Ali, he say's, "Great presentation, James." Well, thank you. He said, why isn't camera and gallery added the Xamarin.Essentials or will it be added? It's a great question. You know, we're actively talking to developers all the time, seeing what you need for your applications, and we're adding those continuously into Xamarin.Essentials. Now, Xamarin.Essentials, since we support so many platforms and it's included inside the templates, we have to be rock solid that the functionality is super complete and well-tested. We run hundreds of UI tests and unit tests on our app, on Xamarin.Essentials itself. Now that said, our big focus is actually on file-based access. We started with sharing files, e-mailing files, SMSing files. In the next version, you'll see file pickers, which is going to start to get into the camera picker, video picker controls. Those are very, very complex controls out there are API's, I should say, but we are looking to integrate them over time. But again, just because it's not in Xamarin.Essentials doesn't mean there's not an awesome library out there that can already do it, such as the media plug-in or some other plug-ins out there. All right, last one here. Luis says, "#dotNETConf, hey, James." Hey Luis. "When can we try gradients with Xamarin.Forms?" You can do it today. In fact, I showed you some amazing libraries from the community, including Magic Gradients and the PancakeView. I use gradients in all my applications today. Now, Xamarin.Forms itself is adding it into the box, different controls. I believe it's added in the next version and the one after. But you can check out the pool requests and even download a new git from that PR. Again, I want to thank every single one of you for being part of this amazing Xamarin and .NET community, for building these awesome libraries, and for letting me show off all of your hard work. Go build beautiful applications with these amazing libraries. Now, let's head back over to Olia now for our next session.
Info
Channel: dotNET
Views: 11,261
Rating: undefined out of 5
Keywords: .NET, Xamarin, community, Xamarin apps, syncfusion, telerik, grailkit, elitekit, steema, charts, xamarin.forms, visual studio, design
Id: AB9PycndUbA
Channel Id: undefined
Length: 43min 21sec (2601 seconds)
Published: Tue Mar 24 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.