In case you missed it, Xamarin was acquired by Microsoft and now it’s available for free for small teams or non-commercial use. I had always been curious about this technology, but with the hefty price tag it was never going to really become something I would get to try. But now that it’s free, it immediately jumped out as something to do.
So far, I’ve done one tutorial and a little bit of exploring. I used this tutorial, which was a reasonable introduction to Xamarin Forms and into getting the environment set up. The environment setup was actually the hard part. The Visual Studio plugin was easy enough to install. Downloading the emulator was easy too, but it had odd conflicts with my existing install of VirtualBox. I managed to find some good advice on how to clean up the virtual network adapters that were causing the problem. The hardware acceleration options for the emulator are not actually “optional,” as without them I could barely log into the emulated device.
Xamarin Forms themselves are a bit of a throwback to WinForms (although it is all XAML under the hood), which was a skill I had mostly forgotten, having been doing web work more recently. The drag-and-drop editor works just as well as it did for WinForms, although out of the box you have a lot more custom widgets. There were a fair number of conventions the tutorial used but didn’t explain, like the id syntax “@+id/CallButton” and “@+id/TranslateButton”. It shows a clear pattern and that showed up in the generated resource class when you referenced these ids in the code it had you adding. This does come out in a nice and clean way to add references to these bits in the code. For instance,
Button callButton = FindViewById<Button>(Resource.Id.CallButton);
But the tutorial didn’t explain the id syntax or reference additional documentation. The deep dive explains some of this, but the tutorial and the deep dive could have been linked together better.
Overall it seems very nice and matches at least some of the hype surrounding the technology. While I don’t have any plans to make a mobile app it never hurts to try out something new so you can see what it can do.