Make sure that your app offers an interactive UI that responds quickly to user input and, if necessary, compensates for a slow launch.
Ensure that your app is designed to be easily localized by
accommodating the variations between languages: allow for spacing, density,
order, emphasis, and wording variations. Also make sure that date, time, and
other units are internationalized and displayed according to the phone’s
Fast and responsive user interface
The user's perception of app performance is formed in large part by the app's
responsiveness. For example, interaction with the user and a crisp display are two important
characteristics of a performant app. Here you can find tips on how to optimize these and
other aspects of an app's speed and responsiveness.
Touch feedback on all touchable items
- Touch feedback adds a tactile feeling to the user interface. You should
ensure your app provides touch feedback on all touchable elements to reduce
the perceived app latency as much as possible.
Responsive interaction encourages deeper exploration of an app by
creating timely, logical, and delightful screen reactions to user input.
Responsive interaction elevates an app from an information-delivery service
to an experience that communicates using multiple visual and tactile
- For more information, see the Android training on Customizing Touch
UI should always be interactive
- Apps that are unresponsive when performing background activity feel slow
and reduce user satisfaction. Ensure your app always has a responsive UI
regardless of any background activity. Achieve this by performing network
operations or any heavy-duty operations in a background thread—keep the UI
thread as idle as you can.
- Material Design apps use minimal visual changes when loading
content by representing each operation with a single activity indicator.
Avoid blocking dialogs with
states occur when a view has no content to show. It might
be a list that has no items or a search that returns no results. Avoid
empty states using starter, educational, or best match content.
When these options aren’t applicable display a non-interactive image and a text tagline
that tell the user what they’ll see when there is something to display.
- For more information, see the Android training on Keeping Your App
Target 60 frames per second on low-cost devices
- Ensure that your app always runs fast and smoothly, even on low-cost
- Overdraw can significantly slow down your app—it occurs when the pixels
are being drawn more than once per pass. An example of this is when you have
an image with a button placed on top of it. While some overdraw is
unavoidable, it should be minimized to ensure a smooth frame rate. Perform
GPU overdraw on your app to ensure it’s minimized.
- Android devices refresh the screen at 60 frames per second (fps), meaning
your app has to update the screen within roughly 16 milliseconds. Profile
your app using on-device tools to see if and when your app is not
meeting this 16 ms average.
- Reduce or remove animations on low-cost devices to lessen the burden on
the device’s CPU and GPU. For more information, see
- An efficient view hierarchy can speed up your app without increasing the
app's memory footprint. For more information, see
and View Hierarchies.
Use a launch screen on slow to start apps
- The launch screen is a user’s first experience of your application.
Displaying a blank canvas while launching your app increases the perception of its
loading time, so consider using a placeholder UI or a branded launch screen
to reduce the perceived loading time.
placeholder UI is the most seamless launch transition, appropriate for
both app launches and in-app activity transitions.
Branded launch screens provide momentary brand exposure, freeing the UI
to focus on content.
- The best way to deal with slow start speeds is not to have them. Launch-Time Performance provides
information that may help you speed up your app's launch time.
User interface best practices
Material Design is a visual language that synthesizes the classic
principles of good design with the innovation and possibility of technology
and science. Material Design provides a single underlying system that
allows for a unified experience across platforms and device sizes. Consider
using key Material Design components so that users intuitively know how to
use your app.
- Ready-to-use Material Design components are available in the Material Design Support
library. These components are supported in Android 2.1 (API level 7) and
- Your users could be from any part of the world and their first language
may not be yours. If you don’t present your app in a language that your
users can read, it is a missed opportunity. You should therefore
localize your app for key regional languages.
- To learn more, visit the Android training on
Different Languages and see the
- Starting from Android 7.0 (API level 24), the Android framework
makes available a subset of the ICU4J APIs, which can
help you localize your app into multiple languages. For more
ICU4J Android Framework APIs.
To learn more about this topic, view the following additional resources: