It’s one thing to make a great iOS app, but oftentimes the next step is to reproduce the experience for Android. It’s no easy task.
After gathering experience in that process at Two Toasters, I’ve put together some fundamental principles on reimagining an iOS app for Android.
1. Treat your Android app as a new product.
Despite the temptation to port over UI elements from iOS, it’s important to start from the ground up. Both platforms look, feel, and perform separately from each other.
Step one is to determine how many Android users you could have. If your app has a web counterpart, this part’s easy. Simply segment out the unique Android visitors and there’s a number you can start working with. If not, it’s still worthwhile to try surveying Android-specific users on places like Reddit or Android forums to get an indication of interest in the problem you’re solving. Why go through this effort? The truth is, you could be saving yourself a ton of effort and headache if now is not the right time to think about Android. Just like with any other product, a “we will build it and they will come” mentality isn’t a healthy mindset.
Next, it’s important to define the primary goal of this app. Remember, treating your Android counterpart as a mere copy of your iOS app won’t go well with your potential users. Perhaps your Android app will function differently than the other? Are you seeking to increase conversion? Maybe your goal is simply to grow your user base? It’s not necessarily a given that this goal be the same as your iOS app. The app needs a reason for existence according to your overall business strategy – so identify that reason before you get started.
Last, examine your iOS app and re-evaluate your feature set with your goal in mind. This part’s a bummer, I know. You’ve already spent so much time perfecting your iOS app. But here’s why it’s important: First, you probably have limited resources. The longer you wait to get your product out, the more you stand to lose market share with competitors. Equally important, your Android and iOS customers are different kinds of users. Sure, they’re both humans; but consider the two differing ecosystems. What your app offers may have redundancies on the Android platform as opposed to iOS. Identify how your app fits on the platform, then build accordingly.
2. Design your app to adapt
It’s no secret that device fragmentation on Android is a big challenge. But tackling adaptive layouts that uniquely target varying resolutions can be a Sisyphean struggle. Instead, design an aesthetic and layout that can expand and contract gracefully. Then see if you can optimize experiences around the more popular resolution blocks.
It can be a laborious process, but here are some tips to help:
- Learn about Density Independent Pixels (dp) and Scale-Independent Pixels (sp). This is essential in understanding how your UI elements will be sized.
- Rely on native elements where possible. They’re already designed to respond to differing resolutions and incredibly easy to restyle by just replacing the default theme assets.
- Use responsive design strategies such as:
- defining layouts with margin insets instead of fixed-widths,
- using columns (particularly with grids) whose counts are based on screen-width,
- letting images/photography scale-to-fit your UI elements while maintaining their aspect ratio,
- having lists expand fluidly, but anticipating where elements fall, and
- setting max-widths to portrait and landscape views to keep lines of text from getting too long.
- Tile background images or use 9patches to stretch them. Minimizing your assets will reduce the memory footprint of your application.
- Cut assets for at least HDPI, XHDPI and XXHDPI. These are the higher density resolutions–for everything lower, Android will automatically scale assets down.
- Optimize for a landscape experience. Tablets, phablets; these sort of devices are practically meant for landscape viewing. Think about what information can be pulled into another column, what elements can be consolidated, and if more information can be provided in a landscape orientation.
3. Take advantage of the Android platform’s differences.
Android is characteristically a less limited platform than iOS. So why not re-imagine the app to take advantage of these freedoms? Make it unique to Android users, not just available to them.
First, read the Android Design Guidelines. This will be an invaluable resource in helping internalize Android so you can build a good native experience.
Navigation can be a bit different on Android. Spend some time on the platform and gain a sense of its differing paradigms. An app that adheres to the analogous structure of iOS will surely feel different than the native structure of Android. Of course not all navigation structures should be similar, but figure out if there is one that makes more sense than that found in your iOS version. This is particularly relevant if you’ve decided on a feature set that isn’t a parity for your iOS app. (Hint: pay attention to Google’s own apps. The way they solved navigation problems probably didn’t have iOS navigation in mind.)
Build widgets. They’re an awesome tool to encourage customization, iOS doesn’t have them, they can expand the functionality of your app, and they give more real estate for you to reach your users. But make sure you do it right: Does it just let your user access media controls? Does it quickly throw them into a section on your app? Does it display information? (If so, make sure it stays fresh.) In all these cases, apply the same responsive strategies as before, but optimize for smaller areas. Especially since your user likely prefers that the widget be resizable.
Design your app icon with transparency. It doesn’t actually have to be a rounded square. The guidelines suggest following a follow a three dimensional, top front view. However, you can be creative about the shape, angle and aesthetic of the icon. Just remember that it has to scale down to very small sizes. An icon can be well designed, but if it’s too-reliant on miniscule details, it could end up not looking quite right in practical use.
See if other Android apps could do some of the work for you. Tying in with other apps means you don’t have to build every piece of functionality yourself and makes the Android experience more integrated for the user. For example, if you’re linking to web content, push it to chrome. (Building your own web views can be clunky.) If you need the user to capture audio, photos or videos, link to them to a media recording app that handle these well. Use the native share action provider so that you can easily share out to any app that accepts the style of content you want to share without having to build it out yourself.
Make the app international! For instance, separating copy in a strings file makes it easier to update to other languages. Although, you should remember to design the content and UI elements with added strings of information in mind. It’s possible your content cells may need to have content flow from right to left or even expand to fit longer strings when translated. Luckily, you don’t have to worry about the actual conversion; a recent update to the Play Store has added the ability to hire translators.
Update often. The Play Store allows developers to release updates much more quickly than the iOS App Store. It even allows you to do alpha and beta releases so that you can update a small percentage of users at a time, letting you work out kinks before shipping to everyone. Taking advantage of the Play Store’s update mechanisms will demonstrate to the users your active investment in improving the app.
And speaking of your users; listen to them. This is perhaps the best advice when converting to Android. A user is required to authenticate with a Google+ account when leaving reviews, which means that you can directly correlate the reviewer with their actual identity. So take the time to reply to comments and respond to feedback personally. Dialogue with your users not only helps in building a great app according to their feedback, but promotes a loyal user base that’ll stick with your app as it grows.