GUI Differentiation on Android Devices
By Ville-Veikko Helppi, Mentor Graphics
Due to the completeness of the Android platform, which goes far beyond a generic
Linux distribution, more embedded device manufacturers are quickly adopting
Android across a wide range of vertical markets. However, standardizing on a single
technology base does have its drawbacks, one of which is the risk that all products
end up looking alike and offering much of the same functionality.
There’s no question that in the current climate of “soon-to-be-announced” Android
devices, the graphical user interface (GUI) plays an instrumental role. The most
obvious and cost-efficient way to differentiate any Android device is to provide a rich
user experience through the device’s GUI. Unfortunately, differentiating a GUI usually
requires significant engineering investment and it is not necessarily guaranteed that
the results will be accepted by a diverse and ever-more demanding user base. This
article examines a compelling GUI technology that allows for the rapid creation and
radical customization of a GUI in any Android-based device.
Android Architecture and GUI
Android is still a relatively new platform architecture loaded with many useful
features, but it also comes with higher expectations. According to various
research reports, the Android development platform will gain recognizable
market share in the handset industry and eventually, it will have a footprint in
all major vertical markets.
However, Android architecture may not be as easily customizable as the open
source approach may lead people to believe. Based on the open Linux
Kernel and services associated to the GNU-based utility packages (ported to
processor-specific architectures), the lowest level of software must stay
untouched, and if changes are made, they will need to be distributed as
source code. At the Libraries level, where a number of C and C++ libraries
are located, there are a number of available licenses such as GPL,
LGPL, BSD, and so on. It may, therefore, be possible to make changes to
libraries without distributing the changes: however, any device that is
customized at this level might conflict with Android‟s non-fragmentation rules.
Looking at the GUI, the Android development platform affords basic GUI
customizations. These types of customizations include changes to boot
animations, personalized wallpapers and/or icons. Swappable themes are
introduced in Android, but the software developer has very little chance to
create or radically customize these themes without some serious software
experience. The ability to make more compelling changes, such as creating a
new menu or completely changing the look and feel of a menu system, is not
within the scope of the Android SDK today. Instead, these customizations
need to be done at a deep code level and usually require major engineering
Customizing the Android GUI without Touching Code
In general, changes to software are expensive and risky, even on Android, as
the developer not only has to describe the GUI first in the XML level, but then
write Java code for the behavior of each GUI element. To some extent,
Android‟s standardized GUI framework and the use of graphical components
or widgets (buttons, check and list boxes, keys, indicators, progress bars,
etc.) has helped, but the GUI development always requires code to be written.
An alternative approach is to use an intelligent, customizable GUI technology
that enables designer resources (software engineers, GUI designers, and
content providers) to rapidly create, customize, and test GUI logic without
having to modify the actual Android software. An intelligent GUI technology
would also allow the design team to package their designs into templates and
themes, which can be rapidly deployed on the Android platform – regardless
of whether it‟s running on the physical target device or running on the Qemu
emulator (which is packaged with the Android SDK). This makes it relatively
easy to create market- or product-specific variants and often without much
It is therefore crucial to employ a GUI tool that can easily aid developers in
creating user interfaces and maintaining themes or templates. This tool would
also have the capability to modify and enhance graphical elements quickly
(such as bitmaps, icons, menu items, and the other UI components) – all
while the code remains untouched.
Any user interface development tool employed should provide software
engineers or developers with an easy-to-use method to create UI flow –
whether through menus or icon-based input methods. It should be possible to
structure menus around the chosen design paradigm (for example, carousel,
widget screens, etc.) and embedded widgets that can then be updated with
live data feeds. Any tool should also make it easy to use standard GUI
constructs like “yes/no” prompts, multiple-choice settings, and so on. Applying
this level of customization to a home screen allows the OEM to develop a
highly differentiated offering.
Enabling “Expertise Alignment”
The successful implementation of the GUI can be measured by several
different form factors such as performance, intuitiveness, general usability,
and memorability of certain sequences. Because of this, OEMs/ODMs will hire
a variety of resources to focus on each of these GUI aspects. It is not
uncommon to employ usability engineers, GUI designers, interaction
designers, integration engineers, and software and hardware engineers to
guarantee a successful GUI implementation.
Therefore, the separation between the GUI designer and software engineer is
tantamount to a compelling GUI that helps distinguish one device from
another (Figure 1). The presentation aspects of the GUI (what the GUI looks
like and how it responds) are within the role of the GUI designer. And the
functional aspects (what features the device affords access to) fall under the
sole responsibility of the software engineer. In this way, an Android device
manufacturer is able to align each respective expertise so that software
engineers can focus all of their effort (and talent) on software development
(no need to develop software for GUI on Android) and GUI designer can take
care of the providing great user experiences with GUIs.
Figure 1: Drawing a key distinction between the GUI designer and software engineer is the
first step to creating a distinctive graphical user interface.
Designing the GUI development independently of the software is not
necessarily a new concept. Today, developers can find a variety of tools that
can be used for this purpose. The problem lies in the fact that often a concept
(the presentation) is given to engineers who say it is too demanding, or too
complex to build (code), given their limited resources. To meet the deadline,
compromises are made which ultimately dilute the original vision of the GUI,
and as a result of these compromises, the end-product falls dreadfully short of
its true potential.
Separating application content and functionality from presentation is best
managed using data providers which present content to the device‟s user
interface. Productivity is increased as software engineers focus on developing
the functionality and data providers, while UI designers remain free to develop
the best possible user experience. Thus, any intelligent GUI technology
employed should provide a clean “GUI abstraction” model for the Android
This separation is critical in the context of providing the best possible UI
experience and best exploiting the device‟s silicon (e.g. OpenGL/ES
An Intelligent GUI Technology for Android
An intelligent GUI technology for Android, known as Inflexion™ UI solutions
from Mentor Graphics is now available for Android-based devices. Inflexion UI
solves the problem of similar look-and-feel Android devices by enabling rapid
customization of the UI. It delivers a distinctive look and feel to any Android
product – without requiring the developer to understand low-level graphics
APIs, or even modifying applications at the code level.
Figure 2: Mentor’s Inflexion UI within the Android software stack.
This new type of Android UI technology enables design teams to create
stunning new application launchers and “home screens” for Android by using
a visual drag and drop method. Developers do not have to write or modify a
single line of code to achieve this. Rich visuals (including 3D animation and
lighting) can be employed within minutes.
The standard Inflexion UI Engine is optimized to use Android‟s built-in 3D
OpenGL/ES API, which can be software or hardware accelerated. This
“engine” sits alongside other system libraries (Figure 2) and interfaces to the
OpenGL/ES library for 3D rendering. On platforms that include a 3D
accelerator, Inflexion will be able to take advantage of that accelerator with no
additional engineering effort. If there is no supported accelerator, 3D effects
will still be possible using software only. Moving up to the Application
Framework, Inflexion provides a lightweight Java framework that exposes the
functionality of the Inflexion Engine so that it can be used by Java
applications. At the top level, Inflexion comes with a „shell application‟ to
replace the standard Android home screen and menuing system. This
replacement enables the rapid and radical reskinning of the main screens
without affecting any of the other applications such as those downloaded from
the Google‟s application store “Android Market.”
By separating an application‟s visual and interactive characteristics from the
underlying functionality, Inflexion UI enables engineering and design tasks to
be carried out independently. Application content is managed by Inflexion
software modules that serve as data providers to the device‟s user interface.
Productivity is increased as software engineers can focus on developing the
functionality and data engines the application requires, while UI designers
remain free to develop the best possible user experience. In this way,
Inflexion maintains a clear separation between presentation and content.
This proven concept enables developers to create completely new interface
designs without any programming or scripting because it automates many of
the key interactive behaviors such as hierarchical browsing, master/detail
views, and scrolling which are common to a wide range of UIs.
With the assistance of this type of GUI technology, it will be easy for Android
device makers to master a compelling, distinctive, and easy-to-use GUI which
is key to the successful introduction and life of an Android-enabled device.
Figure 3: Dynamic UI creation is possible with Inflexion UI.