2. Action Bar
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
The action bar is a window feature that
identifies the user location, and provides user
actions and navigation modes. Using the action
bar offers your users a familiar interface across
applications that the system gracefully adapts
for different screen configurations.
Figure 1. An action bar that includes the [1] app icon, [2]
two action items, and [3] action overflow.
The action bar provides several key functions:
Provides a dedicated space for giving your app an identity and indicating the user's
location in the app.
Makes important actions prominent and accessible in a predictable way (such as
Search).
Supports consistent navigation and view switching within apps (with tabs or drop-
down lists).
3. ActionBarActivity or Activity?
If you want to set title , logo, navigation modes for an ActionBar, you need to get a reference to
ActionBar.
With sdk level higher than 11 (>=11), you can directly call getActionBar() in an Activity to fetch a
reference of ActionBar which you can configure.
For sdk level lower than 11 (<=10), however, getActionBar is not supported in an Activity.
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
4. ActionBarActivity or Activity?
Google Android team released a new backward-compatible Action Bar
implementation called ActionBarCompat that‘s part of the Support Library r18 during
I/O 2013 . The ActionBarCompat APIs let you build the essential Action Bar design
pattern into your app, with broad compatibility back to Android 2.1 (sdk7).
ActionBarActivity (android.support.v7.app.ActionBarActivity) and ActionBar
(android.support.v7.app.ActionBar) was introduced within ActionBarCompat, which
can be used essentially as same as Activity with ActionBar features in sdk levels higher
than 11.
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
5. ActionBarActivity for Backward Compatibility
Therefore use ActionBarActivity if you need to use ActionBar while supporting sdk
level lower than 11.
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
6. Get Started with ActionBarCompat
ActionBarCompat is a new API in the Android Support Library that allows you to add
an Action Bar to applications targeting minSdkVersion 7 or greater. The API and
integration have been designed to closely mirror the existing framework APIs, giving
you an easy migration path for your existing apps.
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
7. Add ActionBarCompat as a project dependency
1. Android Studio or Eclipse+ADT go to Tools->Android->SDK Manager
2. Check if the Android Support Library (revision 18) has been installed.
The version of Android support library ( Revision 18 ) is released with a new library called appcompat
under the package android.support.v7.The new library facilitates users to implement action bar back
up to Android 2.1 ( API Level 7 ) .
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
8. Adding ActionBarCompat support library
Eclipse
Make sure you have downloaded the Android Support Library using the SDK Manager.
Create a libs/ directory in the root of your application project.
Copy the JAR files from your Android SDK installation directory
/extras/android/support/v7/appcompat/libs/android-support-v4.jar
/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar
into your application's project libs/ directory.
Right click the JAR file and select Build Path > Add to Build Path.
Android Studio
Make sure you have downloaded the Android Support Repository using the SDK Manager.
Open the build.gradle file for your application.
Add the support library to the dependencies section. For example, to add the v7 appcompat
library, add the following lines:
dependencies {
…
compile 'com.android.support:appcompat-v7:18.0.0'
}
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
9. Create New Android Project
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
10. Create New Android Project
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
11. Dependency
The Gradle build script dependency identifier for this library is as follows:
com.android.support:appcompat-v7:18.0.0+
This dependency notation specifies the release version 18.0.0 or higher.
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
12. When using default Activity
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
13. Default Activity support ActionBar on level higher
than API 11
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
Running on API17
14. Use ActionBarActivity for Backward Compatibility
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
Using ActionBarActivity instead of
Activity
Done? Not yet, if you compile and run now, you will run into fata error caused
by theme setting.
15. Error Caused by Theme Setting
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
This is cause by theme setting. When using ActionBarCompat, you can only use a
Theme.AppCompat theme or its descendant (for customized theme).
16. Update Style Resources
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
The first things to update are your Activity themes so they use a Theme.AppCompat
theme. If you're currently using one of the Theme.Holo themes then just replace this
with the related Theme.AppCompat theme. For instance if you have the following in
your AndroidManifest.xml:
<activity
...
android:theme="@android:style/Theme.Holo" />
You would change it to:
<activity
...
android:theme="@style/Theme.AppCompat" />
UseTheme.AppCompat theme or its descendant
17. Update Style Resources
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
UseTheme.AppCompat theme or its descendant
If you don’t want to change your activities’ theme setting one by one, you can
change the theme setting for application in AndroidManifest.xml:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<style name="AppBaseTheme" parent="android:Theme.Light">
</style>
<!-- Application theme. Which is a decendant of Theme.App -->
<style name="AppTheme" parent="AppBaseTheme">
</style>
18. Becareful with values-v11/14
When you update the style resource files, do update all the styles.xml in values folder
and the possible values-v11 and values-v14 folder. Cause your app may load styles.xml
file in values-v1X folder according to target Android API level!
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
19. Try again, it works now!
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
Running on API17
20. Add More Actions on Action Bar
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
In the following sections, I will show how to add
Actions such as Search to Action Bar.
You can download these icons which you can use
for Actions from Download the Action Bar Icon
Pack
Then copy the icons you need to drawable
folders. Here I copied 2_action_search.png files
to drawable-hdpi, drawable-xhdpi and drawable-
mdpi folders.
21. Structure of Action Bar Icon Pack
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
22. Modify Menu Resources
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
As with the standard Action Bar in Android 3.0 and later versions, action items are
added via the options menu. The difference with ActionBarCompat is that you need to
modify your Menu resource files so that any action item attributes come from
ActionBarCompat's XML namespace.
23. Now, you did it.
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com
Compile and run again.
Running on API 17
Running on API 7
24. To be continued
• In next tutorial, I will show you how to
1. Configure menu items;
2. Add menu items callback (how to interact
with user through Action Bar);
3. Something else
10/10/2013 Mobiletuts.me mobiletuts.me@gmail.com