Hi Android Developers!
In today’s post, we are sharing our recent interview with Tobias Scholze, a senior software engineer for iOS B2B applications in a Munich-based platform solution agency, to learn more about his experience exploring the value of a dual-screen mobile devices like the Microsoft Surface Duo. Here are some resources to learn more about Tobias:
GitHub: https://github.com/tscholze
Twitter: https://twitter.com/tobonaut
LinkedIn: https://www.linkedin.com/in/tobias-scholze-4301b5187/
Tobias created an app called #rTsd (Road To Surface Duo) to learn more about what it means to have two screens in your pocket and at the same time understand how far along the cross-platform support for dual screen devices has come.
The Xamarin.Forms project he created is intended to highlight most of the new features that makes the Surface Duo so unique. In Tobias’s words, “It is meant to be a great entry point to get started with Xamarin.Forms for the community. I want to share the joy of modern mobile software development.”
Before we get into the interview details, here is Tobias’ GitHub page to access the Road to Surface Duo app: https://github.com/tscholze/xamarin-road-to-surface-duo
Can you share a little info about why you are interested in the dual-screen/foldable form factor and what does it help with in your view?
I started (Xamarin.Forms) Android development solely for the reason to work in my spare time on Surface Duo apps. I also publish articles of my “developer diary” in one of the largest German speaking Microsoft news portals to motivate others to get started with (Xamarin) software development.
In context of a productivity app, two separated screens help to reduce the amount of hard context (aka app) switches on “standard” phones. For example, you can have a call on the left side and take some meeting notes on the right side. A dual-screen device could, in my opinion, help to be more focused on your current task.
On the other hand, it also provides a great typing experience in landscape mode. It reminds me of the old days with Nokia Communicators. All in all, dual-screen devices could help to reduce the need for a heavy laptop.
When you got started, what was the biggest challenge/blocker? Learning curve? Docs? Samples? Helper functions? Other?
One of the biggest challenges was to come up with the working concept for smart use of both screens, figuring out what user story really benefits from the new form factor.
Due to the awesome Surface Duo SDK, communities blog posts, and docs, the actual coding was less of a challenge than I was expecting.
What Xamarin controls did you use to build the dual-screen layouts?
My app is a community project which is meant to work as a gateway to get more people interested in Xamarin.Forms development using the eye-catching factor of the new Surface Duo. That’s why the view structures and controls are not too complicated.
As my foundation, I used the NuGet package that included TwoPaneView which provided all required functionality to get started. On top of this, I used default Xamarin.Forms controls. The only non-Xamarin.Forms control that I used was the awesome Pancake View.
What are your plans after this – any other dual-screen app ideas or enhancements?
At first, I have to try it on a real device. I know that there is some room for improvements related to animations on dual-screen devices, navigation flows, etc. I also want to build a gamification app called “Hinge It” (https://github.com/tscholze/xamarin-surface-duo-hinge-it) which uses the hinge of the Surface Duo for a little game between meetings.
Did you build the UI mostly in XAML or C#?
I used the standard Xamarin.Forms approach with XAML views (pages) with C# code behind files. Of course, all services, view models, etc. were also written in C#.
Did you use any type of MVVM, from databinding right up to a fully VM driven navigation architecture?
Yes, I used a “lightweight” MVVM pattern with view, view models, commands, and services. This worked very well and was documented well by Microsoft and a lot of other developers.
Do you have any favorite NuGets that you add to every project? Which ones and why?
In every project I add Xamarin.Essentials of course! Besides this, I try to hold my amount of external dependencies low. For the PancakeView, I made an exception.
Did you find yourself having to do lots of native Android code for your Surface Duo app or could everything be accomplished in the Xamarin.Forms shared code?
I have very little native code because my goal was to write as much as possible using shared Xamarin.Forms code.
If native code was required, can you tell us a bit about what you did?
For example, to check if it is an actual Surface Duo device, I had to use the context of the app and I think this is only possible if I write Android-specific source.
ScreenHelper.IsDualScreenDevice(Application.Context);
Tobias, thank you for sharing your experience with the community!
You are most welcome.
Feedback
Tobias was able to build and test his dual screen app with Xamarin, C#, and Visual Studio. Developers can use a wide variety of development tools (IDEs) and languages to build apps for Surface Duo, including Kotlin, Java, React Native, Unity, Flutter, and web technologies. Visit the dual-screen documentation for more information.
Please let us know what apps you are building! We would love to share your dual-screen development experience stories in future devblogs. You can reach out to us on our forums, or if you would like a more confidential communication channel, reach out to me privately on Twitter (@HakonStrande) or on LinkedIn (https://www.linkedin.com/in/hakonstrande/).
Re: your profile
You don’t need to be ashamed about working on Vista. It might not have been ultra-successful, but it’s not at all a shameful OS, I grew up with it, and loved using it! I believe the generation that grew up with it will keep remembering it fondly (like the generations who grew up with 95 or 98 or XP, I think those OSes were highly criticized around their launches).
It was a pleasure, thanks for having me!
I can’t wait to test my apps on a real Microsoft Surface Duo device. Great work from you all.