2012-06-21 17:14:39 -07:00
|
|
|
<ul id="nav">
|
|
|
|
|
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/index.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Getting Started
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
2012-11-07 16:35:16 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/basics/firstapp/index.html"
|
|
|
|
description=
|
|
|
|
"After you've installed the Android SDK, start with this class
|
|
|
|
to learn the basics about Android app development."
|
|
|
|
>Building Your First App</a>
|
2012-06-21 17:14:39 -07:00
|
|
|
</div>
|
2012-04-02 12:56:42 -07:00
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Creating an Android Project
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Running Your Application
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Building a Simple User Interface
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Starting Another Activity
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2013-07-19 19:04:45 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/basics/actionbar/index.html"
|
|
|
|
description=
|
|
|
|
"The action bar is one of the most important design elements you can implement for your
|
|
|
|
app's activities. Although first introduced with API level 11, you can use the Support Library to
|
|
|
|
include the action bar on devices running Android 2.1 or higher."
|
|
|
|
>Adding the Action Bar</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/actionbar/setting-up.html">
|
|
|
|
Setting Up the Action Bar
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/actionbar/adding-buttons.html">
|
|
|
|
Adding Action Buttons
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/actionbar/styling.html">
|
|
|
|
Styling the Action Bar
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/actionbar/overlaying.html">
|
|
|
|
Overlaying the Action Bar
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
2013-08-22 18:11:01 -07:00
|
|
|
<a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html"
|
2012-11-07 16:35:16 -08:00
|
|
|
description=
|
2013-08-22 18:11:01 -07:00
|
|
|
"How to build your app with alternative resources that provide an
|
|
|
|
optimized user experience on multiple device form factors using a single APK."
|
|
|
|
>Supporting Different Devices</a>
|
2012-11-07 16:35:16 -08:00
|
|
|
</div>
|
2012-04-02 12:56:42 -07:00
|
|
|
<ul>
|
2013-08-22 18:11:01 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html">
|
|
|
|
Supporting Different Languages
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-08-22 18:11:01 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html">
|
|
|
|
Supporting Different Screens
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-08-22 18:11:01 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html">
|
|
|
|
Supporting Different Platform Versions
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-10-20 12:41:40 -07:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
2013-08-22 18:11:01 -07:00
|
|
|
<a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
|
2012-11-07 16:35:16 -08:00
|
|
|
description=
|
2013-08-22 18:11:01 -07:00
|
|
|
"How Android activities live and die and how to create
|
|
|
|
a seamless user experience by implementing lifecycle callback methods."
|
|
|
|
>Managing the Activity Lifecycle</a>
|
2012-11-07 16:35:16 -08:00
|
|
|
</div>
|
2012-04-02 12:56:42 -07:00
|
|
|
<ul>
|
2013-08-22 18:11:01 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html">
|
|
|
|
Starting an Activity
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-08-22 18:11:01 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
|
|
|
|
Pausing and Resuming an Activity
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-08-22 18:11:01 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html">
|
|
|
|
Stopping and Restarting an Activity
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html">
|
|
|
|
Recreating an Activity
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-10-20 12:41:40 -07:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/basics/fragments/index.html"
|
|
|
|
description=
|
|
|
|
"How to build a user interface for your app that is flexible enough
|
|
|
|
to present multiple UI components on large screens and a more constrained set of
|
|
|
|
UI components on smaller screens—essential for building a single APK for both
|
|
|
|
phones and tablets."
|
|
|
|
>Building a Dynamic UI with Fragments</a>
|
|
|
|
</div>
|
2012-04-19 19:18:44 -07:00
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Creating a Fragment
|
2012-04-19 19:18:44 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Building a Flexible UI
|
2012-04-19 19:18:44 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Communicating with Other Fragments
|
2012-04-19 19:18:44 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-04-02 12:56:42 -07:00
|
|
|
|
2012-09-07 15:26:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html"
|
|
|
|
description=
|
|
|
|
"How to save data on the device, whether it's temporary files, downloaded
|
|
|
|
app assets, user media, structured data, or something else."
|
|
|
|
>Saving Data</a>
|
|
|
|
</div>
|
2012-09-07 15:26:39 -07:00
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Saving Key-Value Sets
|
2012-09-07 15:26:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Saving Files
|
2012-09-07 15:26:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Saving Data in SQL Databases
|
2012-09-07 15:26:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/basics/intents/index.html"
|
|
|
|
description=
|
|
|
|
"How to build a user experience that leverages other apps available
|
|
|
|
on the device to perform advanced user tasks, such as capture a photo or view
|
|
|
|
an address on a map."
|
|
|
|
>Interacting with Other Apps</a>
|
|
|
|
</div>
|
2012-04-02 12:56:42 -07:00
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/intents/sending.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Sending the User to Another App
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/intents/result.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Getting a Result from the Activity
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/intents/filters.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Allowing Other Apps to Start Your Activity
|
2012-04-02 12:56:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2013-08-26 14:55:54 -07:00
|
|
|
</ul>
|
|
|
|
</li><!-- end getting started -->
|
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
2013-08-26 14:55:54 -07:00
|
|
|
<a href="<?cs var:toroot ?>training/building-content-sharing.html">
|
|
|
|
<span class="small">Building Apps with</span><br/>Content Sharing
|
|
|
|
</a>
|
2012-11-07 16:35:16 -08:00
|
|
|
</div>
|
2012-04-02 12:56:42 -07:00
|
|
|
<ul>
|
2013-08-26 14:55:54 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/sharing/index.html"
|
|
|
|
description=
|
|
|
|
"How to take your app interaction to the next level by sharing
|
|
|
|
information with other apps, receive information back, and provide a simple and
|
|
|
|
scalable way to perform Share actions with user content."
|
|
|
|
>Sharing Simple Data</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/sharing/send.html">
|
|
|
|
Sending Simple Data to Other Apps
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/sharing/receive.html">
|
|
|
|
Receiving Simple Data from Other Apps
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/sharing/shareaction.html">
|
|
|
|
Adding an Easy Share Action
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot?>training/secure-file-sharing/index.html"
|
|
|
|
description=
|
|
|
|
"How to provide secure access to a file associated with your app using a content
|
|
|
|
URI and temporary access permissions."
|
|
|
|
>Sharing Files</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html">
|
|
|
|
Setting Up File Sharing
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html">
|
|
|
|
Sharing a File
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html">
|
|
|
|
Requesting a Shared File
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html">
|
|
|
|
Retrieving File Information
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/beam-files/index.html"
|
|
|
|
description=
|
|
|
|
"How to transfer files between devices using the NFC Android Beam feature."
|
|
|
|
>Sharing Files with NFC</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/beam-files/send-files.html"
|
|
|
|
>Sending Files to Another Device</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html"
|
|
|
|
>Receiving Files from Another Device</a></li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-04-02 12:56:42 -07:00
|
|
|
</ul>
|
2013-08-26 14:55:54 -07:00
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/building-multimedia.html">
|
|
|
|
<span class="small">Building Apps with</span><br/>Multimedia
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/managing-audio/index.html"
|
|
|
|
description=
|
|
|
|
"How to respond to hardware audio key presses, request audio focus
|
|
|
|
when playing audio, and respond appropriately to changes in audio focus."
|
|
|
|
>Managing Audio Playback</a>
|
|
|
|
</div>
|
2012-06-21 17:14:39 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
|
|
|
|
Controlling Your App's Volume and Playback
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
|
|
|
|
Managing Audio Focus
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
|
|
|
|
Dealing with Audio Output Hardware
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-10-20 12:41:40 -07:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/camera/index.html"
|
|
|
|
description=
|
|
|
|
"How to leverage existing camera apps on the user's device to capture
|
|
|
|
photos or control the camera hardware directly and build your own camera app."
|
|
|
|
>Capturing Photos</a>
|
|
|
|
</div>
|
2012-06-21 17:14:39 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
|
|
|
|
Taking Photos Simply
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
|
|
|
|
Recording Videos Simply
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
|
|
|
|
Controlling the Camera
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2013-10-29 01:55:12 -07:00
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/printing/index.html"
|
|
|
|
description=
|
|
|
|
"How to print photos, HTML documents, and custom documents from your app."
|
|
|
|
>Printing Content</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/printing/photos.html">
|
|
|
|
Photos
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/printing/html-docs.html">
|
|
|
|
HTML Documents
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/printing/custom-docs.html">
|
|
|
|
Custom Documents
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<!-- End multimedia -->
|
2013-03-04 10:33:30 -08:00
|
|
|
|
|
|
|
|
2012-04-02 12:56:42 -07:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/building-graphics.html">
|
|
|
|
<span class="small">Building Apps with</span><br/>Graphics & Animation
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html"
|
|
|
|
description=
|
|
|
|
"How to load and process bitmaps while keeping your user interface
|
|
|
|
responsive and avoid exceeding memory limits."
|
|
|
|
>Displaying Bitmaps Efficiently</a>
|
|
|
|
</div>
|
2012-06-21 17:14:39 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
|
|
|
|
Loading Large Bitmaps Efficiently
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html">
|
|
|
|
Processing Bitmaps Off the UI Thread
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html">
|
|
|
|
Caching Bitmaps
|
2012-06-20 17:19:42 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-03-04 15:25:40 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html">
|
|
|
|
Managing Bitmap Memory
|
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
|
|
|
|
Displaying Bitmaps in Your UI
|
|
|
|
</a></li>
|
2012-06-21 17:14:39 -07:00
|
|
|
</ul>
|
|
|
|
</li>
|
2012-10-20 12:41:40 -07:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot?>training/graphics/opengl/index.html"
|
|
|
|
description=
|
|
|
|
"How to create OpenGL graphics within the Android app framework
|
|
|
|
and respond to touch input."
|
|
|
|
>Displaying Graphics with OpenGL ES</a>
|
2012-10-02 17:48:11 -07:00
|
|
|
</div>
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
|
|
|
|
Building an OpenGL ES Environment
|
|
|
|
</a>
|
2012-10-02 17:48:11 -07:00
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
|
|
|
|
Defining Shapes
|
|
|
|
</a>
|
2011-12-15 15:40:25 -08:00
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
|
|
|
|
Drawing Shapes
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
|
|
|
|
Applying Projection and Camera Views
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
|
|
|
|
Adding Motion
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
|
|
|
|
Responding to Touch Events
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html"
|
|
|
|
description=
|
|
|
|
"How to add transitional animations to your user interface.">
|
|
|
|
Adding Animations
|
2012-10-03 14:20:26 -07:00
|
|
|
</a></div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Crossfading Two Views
|
2012-10-03 14:20:26 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Using ViewPager for Screen Slide
|
2012-10-03 14:20:26 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Displaying Card Flip Animations
|
2012-10-03 14:20:26 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/animation/zoom.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Zooming a View
|
2012-10-03 14:20:26 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/animation/layout.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
Animating Layout Changes
|
2012-10-03 14:20:26 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<!-- End graphics and animation -->
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/building-connectivity.html">
|
|
|
|
<span class="small">Building Apps with</span><br/>
|
|
|
|
Connectivity & the Cloud
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html"
|
|
|
|
description=
|
|
|
|
"How to find and connect to local devices using Network Service
|
2013-08-22 17:19:17 -07:00
|
|
|
Discovery and how to create peer-to-peer connections with Wi-Fi."
|
2012-11-07 16:35:16 -08:00
|
|
|
>Connecting Devices Wirelessly</a>
|
|
|
|
</div>
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
|
|
|
|
Using Network Service Discovery
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
|
2013-08-22 17:19:17 -07:00
|
|
|
Creating P2P Connections with Wi-Fi
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
|
2013-09-16 13:11:07 -07:00
|
|
|
Using Wi-Fi P2P for Service Discovery
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/basics/network-ops/index.html"
|
|
|
|
description=
|
|
|
|
"How to create a network connection, monitor the connection for changes
|
|
|
|
in connectivity, and perform transactions with XML data."
|
|
|
|
>Performing Network Operations</a>
|
2012-10-02 17:48:11 -07:00
|
|
|
</div>
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
|
|
|
|
Connecting to the Network
|
|
|
|
</a>
|
2012-10-02 17:48:11 -07:00
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
|
|
|
|
Managing Network Usage
|
|
|
|
</a>
|
2012-10-02 17:48:11 -07:00
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
|
|
|
|
Parsing XML Data
|
|
|
|
</a>
|
2011-12-15 15:40:25 -08:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/efficient-downloads/index.html"
|
|
|
|
description=
|
|
|
|
"How to minimize your app's impact on the battery when performing downloads
|
|
|
|
and other network transactions."
|
|
|
|
>Transferring Data Without Draining the Battery</a>
|
|
|
|
</div>
|
2012-03-14 09:27:11 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
|
|
|
|
Optimizing Downloads for Efficient Network Access
|
2012-03-14 09:27:11 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
|
|
|
|
Minimizing the Effect of Regular Updates
|
2012-03-14 09:27:11 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
|
|
|
|
Redundant Downloads are Redundant
|
2012-04-16 13:13:09 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
|
|
|
|
Modifying Patterns Based on the Connectivity Type
|
2012-04-16 13:13:09 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/cloudsync/index.html"
|
|
|
|
description=
|
|
|
|
"How to sync and back up app and user data to remote web services in the
|
|
|
|
cloud and how to restore the data back to multiple devices."
|
|
|
|
>Syncing to the Cloud</a>
|
2012-03-14 16:24:25 -07:00
|
|
|
</div>
|
2012-02-03 11:00:47 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
|
|
|
|
Using the Backup API
|
2012-02-03 11:00:47 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
|
|
|
|
Making the Most of Google Cloud Messaging
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
2013-06-11 13:17:55 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html"
|
|
|
|
description=
|
|
|
|
"How to design a robust conflict resolution strategy for apps that save data to the cloud."
|
|
|
|
>Resolving Cloud Save Conflicts
|
|
|
|
</a>
|
2013-08-30 15:30:54 -07:00
|
|
|
</li>
|
2011-12-15 15:40:25 -08:00
|
|
|
</li>
|
2013-06-07 13:38:00 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/sync-adapters/index.html"
|
|
|
|
description="How to transfer data between the cloud and the device using the Android
|
|
|
|
sync adapter framework"
|
|
|
|
>Transferring Data Using Sync Adapters</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html">
|
|
|
|
Creating a Stub Authenticator
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html">
|
|
|
|
Creating a Stub Content Provider
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html">
|
|
|
|
Creating a Sync Adapter
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html">
|
|
|
|
Running a Sync Adapter
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<!-- End connectivity and cloud -->
|
2013-03-04 10:33:30 -08:00
|
|
|
|
|
|
|
|
2011-12-15 16:47:26 -08:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/building-userinfo.html">
|
|
|
|
<span class="small">Building Apps with</span><br/>
|
|
|
|
User Info & Location
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
2013-01-15 15:06:08 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/contacts-provider/index.html"
|
|
|
|
description=
|
|
|
|
"How to use Android's central address book, the Contacts Provider, to
|
|
|
|
display contacts and their details and modify contact information.">
|
|
|
|
Accessing Contacts Data</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html">
|
|
|
|
Retrieving a List of Contacts
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html">
|
|
|
|
Retrieving Details for a Contact
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html">
|
|
|
|
Modifying Contacts Using Intents
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html">
|
|
|
|
Displaying the Quick Contact Badge
|
|
|
|
</a>
|
2011-12-15 19:52:33 -08:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2011-12-15 16:47:26 -08:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
2013-03-04 10:33:30 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/location/index.html"
|
|
|
|
description="How to add location-aware features to your app by getting the user's current location.">
|
|
|
|
Making Your App Location-Aware
|
|
|
|
</a>
|
2012-11-07 16:35:16 -08:00
|
|
|
</div>
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2013-03-04 10:33:30 -08:00
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/location/retrieve-current.html">
|
|
|
|
Retrieving the Current Location
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
|
|
|
|
Receiving Location Updates
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/location/display-address.html">
|
|
|
|
Displaying a Location Address
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/location/geofencing.html">
|
|
|
|
Creating and Monitoring Geofences
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/location/activity-recognition.html">
|
|
|
|
Recognizing the User's Current Activity
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2013-07-26 17:26:52 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/location/location-testing.html">
|
|
|
|
Testing Using Mock Locations
|
|
|
|
</a>
|
|
|
|
</li>
|
2011-12-15 15:40:25 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<!-- End privacy and location -->
|
2013-03-04 10:33:30 -08:00
|
|
|
|
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/best-ux.html">
|
|
|
|
<span class="small">Best Practices for</span><br/>
|
2013-12-09 18:02:48 -08:00
|
|
|
Interaction & Engagement
|
2012-11-07 16:35:16 -08:00
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
2012-10-20 12:41:40 -07:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/design-navigation/index.html"
|
|
|
|
description=
|
|
|
|
"How to plan your app's screen hierarchy and forms of navigation so users can
|
|
|
|
effectively and intuitively traverse your app content using various navigation
|
|
|
|
patterns."
|
|
|
|
>Designing Effective Navigation</a>
|
|
|
|
</div>
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
|
|
|
|
Planning Screens and Their Relationships
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
|
|
|
|
Planning for Multiple Touchscreen Sizes
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
|
|
|
|
Providing Descendant and Lateral Navigation
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
|
|
|
|
Providing Ancestral and Temporal Navigation
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
|
|
|
|
Putting it All Together: Wireframing the Example App
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-10-20 12:41:40 -07:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
|
|
|
|
description=
|
2013-03-26 18:53:01 -07:00
|
|
|
"How to implement various navigation patterns such as swipe views,
|
|
|
|
a navigation drawer, and up navigation."
|
2012-11-07 16:35:16 -08:00
|
|
|
>Implementing Effective Navigation</a>
|
|
|
|
</div>
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
|
2013-03-26 18:53:01 -07:00
|
|
|
Creating Swipe Views with Tabs
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
|
|
|
|
Creating a Navigation Drawer
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
|
2013-03-26 18:53:01 -07:00
|
|
|
Providing Up Navigation
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
|
2013-03-26 18:53:01 -07:00
|
|
|
Providing Proper Back Navigation
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
|
|
|
|
Implementing Descendant Navigation
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-10-04 16:34:23 -07:00
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/notify-user/index.html"
|
|
|
|
description=
|
2012-10-27 11:16:19 -07:00
|
|
|
"How to display messages called notifications outside of
|
2012-10-04 16:34:23 -07:00
|
|
|
your application's UI."
|
|
|
|
>Notifying the User</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
|
|
|
|
Building a Notification
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/notify-user/navigation.html">
|
|
|
|
Preserving Navigation when Starting an Activity
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/notify-user/managing.html">
|
|
|
|
Updating Notifications
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/notify-user/expanded.html">
|
|
|
|
Using Big View Styles
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
|
|
|
|
Displaying Progress in a Notification
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/search/index.html"
|
|
|
|
description=
|
|
|
|
"How to properly add a search interface to your app and create a searchable database."
|
|
|
|
>Adding Search Functionality</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/search/setup.html">
|
|
|
|
Setting up the Search Interface
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/search/search.html">
|
|
|
|
Storing and Searching for Data
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
|
|
|
|
Remaining Backward Compatible
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2013-12-09 18:02:48 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/app-indexing/index.html"
|
|
|
|
description=
|
|
|
|
"How to enable deep linking and indexing of your application
|
|
|
|
content so that users can open this content directly from their mobile search
|
|
|
|
results."
|
2013-12-19 16:59:17 -08:00
|
|
|
>Making Your App Content Searchable by Google</a>
|
2013-12-09 18:02:48 -08:00
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html">
|
|
|
|
Enabling Deep Links for App Content
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html">
|
|
|
|
Specifying App Content for Indexing
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<!-- End Interaction and Engagement -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/best-ui.html">
|
|
|
|
<span class="small">Best Practices for</span><br/>
|
|
|
|
User Interface
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
2013-12-17 14:59:05 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/multiscreen/index.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="针对多种屏幕进行设计"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="複数画面のデザイン"
|
|
|
|
es-lang="Cómo diseñar aplicaciones para varias pantallas"
|
|
|
|
description=
|
|
|
|
"How to build a user interface that's flexible enough to
|
|
|
|
fit perfectly on any screen and how to create different interaction
|
|
|
|
patterns that are optimized for different screen sizes."
|
|
|
|
>Designing for Multiple Screens</a>
|
|
|
|
</div>
|
2012-03-28 17:55:24 -07:00
|
|
|
<ul>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="支持各种屏幕尺寸"
|
2012-11-07 16:35:16 -08:00
|
|
|
ko-lang="다양한 화면 크기 지원"
|
|
|
|
ja-lang="さまざまな画面サイズのサポート"
|
2012-10-27 11:16:19 -07:00
|
|
|
es-lang="Cómo admitir varios tamaños de pantalla"
|
2012-11-07 16:35:16 -08:00
|
|
|
>Supporting Different Screen Sizes</a>
|
2012-03-28 17:55:24 -07:00
|
|
|
</li>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="支持各种屏幕密度"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="さまざまな画面密度のサポート"
|
2012-10-27 11:16:19 -07:00
|
|
|
es-lang="Cómo admitir varias densidades de pantalla"
|
2012-11-07 16:35:16 -08:00
|
|
|
>Supporting Different Screen Densities</a>
|
2012-03-28 17:55:24 -07:00
|
|
|
</li>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="实施自适应用户界面流程"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="順応性のある UI フローの実装"
|
2012-10-27 11:16:19 -07:00
|
|
|
es-lang="Cómo implementar interfaces de usuario adaptables"
|
2012-11-07 16:35:16 -08:00
|
|
|
>Implementing Adaptive UI Flows</a>
|
2012-03-28 17:55:24 -07:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header"><a href="<?cs var:toroot ?>training/tv/index.html"
|
|
|
|
description=
|
|
|
|
"How to optimize your app's user interface and user input for
|
|
|
|
the "ten foot experience" of a TV screen."
|
|
|
|
>Designing for TV</a>
|
|
|
|
</div>
|
2011-12-15 15:40:25 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/tv/optimizing-layouts-tv.html">
|
|
|
|
Optimizing Layouts for TV
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/tv/optimizing-navigation-tv.html">
|
|
|
|
Optimizing Navigation for TV
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/tv/unsupported-features-tv.html">
|
|
|
|
Handling Features Not Supported on TV
|
2011-12-15 15:40:25 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/custom-views/index.html"
|
|
|
|
description=
|
|
|
|
"How to build custom UI widgets that are interactive and smooth."
|
|
|
|
>Creating Custom Views</a>
|
|
|
|
</div>
|
2011-12-15 16:47:26 -08:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
|
|
|
|
Creating a Custom View Class
|
2011-12-15 16:47:26 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
|
|
|
|
Implementing Custom Drawing
|
2011-12-15 16:47:26 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
|
|
|
|
Making the View Interactive
|
2011-12-15 16:47:26 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
|
|
|
|
Optimizing the View
|
2011-12-15 16:47:26 -08:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
2012-03-12 21:48:47 -07:00
|
|
|
</li>
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
|
|
|
|
description=
|
|
|
|
"How to use UI components and other APIs from the more recent versions of Android
|
|
|
|
while remaining compatible with older versions of the platform."
|
|
|
|
>Creating Backward-Compatible UIs</a>
|
|
|
|
</div>
|
2012-03-12 21:48:47 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
|
|
|
|
Abstracting the New APIs
|
2012-03-12 21:48:47 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
|
|
|
|
Proxying to the New APIs
|
2012-03-12 21:48:47 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
|
|
|
|
Creating an Implementation with Older APIs
|
2012-03-12 21:48:47 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
|
|
|
|
Using the Version-Aware Component
|
2012-03-12 21:48:47 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/accessibility/index.html"
|
|
|
|
description=
|
|
|
|
"How to make your app accessible to users with vision
|
|
|
|
impairment or other physical disabilities."
|
|
|
|
>Implementing Accessibility</a>
|
2012-03-25 20:58:12 -07:00
|
|
|
</div>
|
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
|
|
|
|
Developing Accessible Applications
|
2012-03-25 20:58:12 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/accessibility/service.html">
|
|
|
|
Developing Accessibility Services
|
2012-03-25 20:58:12 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
2011-12-15 16:47:26 -08:00
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2013-09-27 15:52:14 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/system-ui/index.html"
|
|
|
|
description=
|
|
|
|
"How to hide and show status and navigation bars across different versions of Android,
|
|
|
|
while managing the display of other screen components."
|
|
|
|
>Managing the System UI</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/system-ui/dim.html">
|
|
|
|
Dimming the System Bars
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/system-ui/status.html">
|
|
|
|
Hiding the Status Bar
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/system-ui/navigation.html">
|
|
|
|
Hiding the Navigation Bar
|
|
|
|
</a>
|
|
|
|
</li>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/system-ui/immersive.html">
|
2013-11-05 13:35:15 -08:00
|
|
|
Using Immersive Full-Screen Mode
|
|
|
|
</a>
|
|
|
|
</li>
|
2013-09-27 15:52:14 -07:00
|
|
|
<li><a href="<?cs var:toroot ?>training/system-ui/visibility.html">
|
|
|
|
Responding to UI Visibility Changes
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
2013-12-09 18:02:48 -08:00
|
|
|
<!-- End User Interface -->
|
|
|
|
|
|
|
|
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-12-05 16:13:25 -08:00
|
|
|
|
2012-11-30 16:28:27 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
2012-12-05 16:13:25 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/best-user-input.html">
|
2012-11-30 16:28:27 -08:00
|
|
|
<span class="small">Best Practices for</span><br/>
|
|
|
|
User Input
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-11-30 16:28:27 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/gestures/index.html"
|
|
|
|
description=
|
|
|
|
"How to write apps that allow users to interact with the touch screen via touch gestures."
|
|
|
|
>Using Touch Gestures</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/gestures/detector.html">
|
|
|
|
Detecting Common Gestures
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/gestures/movement.html">
|
|
|
|
Tracking Movement
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
|
|
|
|
Animating a Scroll Gesture
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/gestures/multi.html">
|
|
|
|
Handling Multi-Touch Gestures
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/gestures/scale.html">
|
|
|
|
Dragging and Scaling
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
|
|
|
|
Managing Touch Events in a ViewGroup
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
2012-12-05 16:13:25 -08:00
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-12-05 16:13:25 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/keyboard-input/index.html"
|
|
|
|
description=
|
|
|
|
"How to specify the appearance and behaviors of soft input methods (such
|
|
|
|
as on-screen keyboards) and how to optimize the experience with
|
|
|
|
hardware keyboards."
|
|
|
|
>Handling Keyboard Input</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/keyboard-input/style.html">
|
|
|
|
Specifying the Input Method Type
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html">
|
|
|
|
Handling Input Method Visibility
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html">
|
|
|
|
Supporting Keyboard Navigation
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html">
|
|
|
|
Handling Keyboard Actions
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
</ul>
|
2013-01-15 15:06:08 -08:00
|
|
|
</li> <!-- end of User Input -->
|
2012-10-20 12:41:40 -07:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
2013-09-05 14:46:20 -07:00
|
|
|
<a href="<?cs var:toroot ?>training/best-background.html">
|
2012-11-07 16:35:16 -08:00
|
|
|
<span class="small">Best Practices for</span><br/>
|
2013-09-05 14:46:20 -07:00
|
|
|
Background Jobs
|
2012-11-07 16:35:16 -08:00
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-10-27 11:16:19 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/run-background-service/index.html"
|
|
|
|
description=
|
|
|
|
"How to improve UI performance and responsiveness by sending work to a
|
2012-12-14 11:39:03 -08:00
|
|
|
Service running in the background"
|
|
|
|
>Running in a Background Service</a>
|
2012-10-27 11:16:19 -07:00
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
|
|
|
|
Creating a Background Service
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
|
|
|
|
Sending Work Requests to the Background Service
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
|
|
|
|
Reporting Work Status
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-12-14 11:39:03 -08:00
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/load-data-background/index.html"
|
|
|
|
description="How to use CursorLoader to query data without
|
|
|
|
affecting UI responsiveness."
|
|
|
|
>Loading Data in the Background</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
|
|
|
|
Running a Query with a CursorLoader</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
|
|
|
|
Handling the Results</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2013-09-05 14:46:20 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/scheduling/index.html"
|
|
|
|
description="How to use repeating alarms and wake locks
|
|
|
|
to run background jobs."
|
|
|
|
>Managing Device Awake State</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html">
|
|
|
|
Keeping the Device Awake</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/scheduling/alarms.html">
|
|
|
|
Scheduling Repeating Alarms</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li> <!-- end of Background Jobs -->
|
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/best-performance.html">
|
|
|
|
<span class="small">Best Practices for</span><br/>
|
|
|
|
Performance
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
|
2013-09-19 17:45:40 -07:00
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/articles/memory.html"
|
|
|
|
description=
|
|
|
|
"How to keep your app's memory footprint small in order to improve performance
|
|
|
|
on a variety of mobile devices."
|
|
|
|
>Managing Your App's Memory</a>
|
|
|
|
</li>
|
|
|
|
|
2013-09-05 14:46:20 -07:00
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/articles/perf-tips.html"
|
|
|
|
description=
|
|
|
|
"How to optimize your app's performance in various ways to improve its
|
|
|
|
responsiveness and battery efficiency."
|
|
|
|
>Performance Tips</a>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/improving-layouts/index.html"
|
|
|
|
description=
|
|
|
|
"How to identify problems in your app's layout performance and improve the UI
|
|
|
|
responsiveness."
|
|
|
|
>Improving Layout Performance</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
|
|
|
|
Optimizing Layout Hierarchies
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
|
|
|
|
Re-using Layouts with <include/>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
|
|
|
|
Loading Views On Demand
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
|
|
|
|
Making ListView Scrolling Smooth
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
2013-12-17 14:59:05 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/monitoring-device-state/index.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="优化电池使用时间"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="電池消費量の最適化"
|
|
|
|
es-lang="Cómo optimizar la duración de la batería"
|
|
|
|
description=
|
|
|
|
"How to minimize the amount of power your app requires by adapting to current
|
|
|
|
power conditions and performing power-hungry tasks at proper intervals."
|
|
|
|
>Optimizing Battery Life</a>
|
|
|
|
</div>
|
2012-03-06 18:13:07 -08:00
|
|
|
<ul>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="监控电池电量和充电状态"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="電池残量と充電状態の監視"
|
2012-10-27 11:16:19 -07:00
|
|
|
es-lang="Cómo controlar el nivel de batería y el estado de carga"
|
2012-11-07 16:35:16 -08:00
|
|
|
>Monitoring the Battery Level and Charging State</a>
|
2012-03-06 18:13:07 -08:00
|
|
|
</li>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="确定和监控基座对接状态和类型"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="ホルダーの装着状態とタイプの特定と監視"
|
2012-10-27 11:16:19 -07:00
|
|
|
es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"
|
2012-11-07 16:35:16 -08:00
|
|
|
>Determining and Monitoring the Docking State and Type</a>
|
|
|
|
</li>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="确定和监控网络连接状态"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="接続状態の特定と監視"
|
2012-10-27 11:16:19 -07:00
|
|
|
es-lang="Cómo determinar y controlar el estado de la conectividad"
|
2012-11-07 16:35:16 -08:00
|
|
|
>Determining and Monitoring the Connectivity Status</a>
|
|
|
|
</li>
|
2013-12-17 14:59:05 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html"
|
2013-05-04 10:54:52 -07:00
|
|
|
zh-cn-lang="根据需要操作广播接收器"
|
2012-11-07 16:35:16 -08:00
|
|
|
ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
|
2012-10-27 11:16:19 -07:00
|
|
|
es-lang="Cómo manipular los receptores de emisión bajo demanda"
|
2012-11-07 16:35:16 -08:00
|
|
|
>Manipulating Broadcast Receivers On Demand</a>
|
2012-03-06 18:13:07 -08:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-11-26 14:06:35 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/multiple-threads/index.html"
|
|
|
|
description=
|
|
|
|
"How to improve the performance and scalability of long-running operations by
|
|
|
|
dispatching work to multiple threads.">
|
|
|
|
Sending Operations to Multiple Threads</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html">
|
|
|
|
Specifying the Code to Run on a Thread
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html">
|
|
|
|
Creating a Manager for Multiple Threads
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html">
|
|
|
|
Running Code on a Thread Pool Thread
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html">
|
|
|
|
Communicating with the UI Thread
|
|
|
|
</a>
|
|
|
|
</li>
|
2012-03-06 18:13:07 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li>
|
2012-11-16 08:54:27 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/articles/perf-anr.html"
|
2012-11-07 16:35:16 -08:00
|
|
|
description=
|
|
|
|
"How to keep your app responsive to user interaction so the UI does not lock-up and
|
|
|
|
display an "Application Not Responding" dialog."
|
|
|
|
>Keeping Your App Responsive</a>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li>
|
2012-11-16 08:54:27 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/articles/perf-jni.html"
|
2012-11-07 16:35:16 -08:00
|
|
|
description=
|
|
|
|
"How to efficiently use the Java Native Interface with the Android NDK."
|
|
|
|
>JNI Tips</a>
|
|
|
|
</li>
|
2012-11-28 18:53:10 -08:00
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/articles/smp.html"
|
|
|
|
description=
|
|
|
|
"Tips for coding Android apps on symmetric multiprocessor systems."
|
|
|
|
>SMP Primer for Android</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
</ul>
|
|
|
|
</li> <!-- end of Performance -->
|
2013-03-04 10:33:30 -08:00
|
|
|
|
|
|
|
|
2012-03-06 18:13:07 -08:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/best-security.html">
|
|
|
|
<span class="small">Best Practices for</span><br/>
|
|
|
|
Security & Privacy
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li>
|
2012-11-16 08:54:27 -08:00
|
|
|
<a href="<?cs var:toroot ?>training/articles/security-tips.html"
|
2012-11-07 16:35:16 -08:00
|
|
|
description=
|
|
|
|
"How to perform various tasks and keep your app's data and your user's data secure."
|
|
|
|
>Security Tips</a>
|
|
|
|
</li>
|
2013-01-17 16:58:50 -08:00
|
|
|
|
|
|
|
<li>
|
|
|
|
<a href="<?cs var:toroot ?>training/articles/security-ssl.html"
|
|
|
|
description=
|
|
|
|
"How to ensure that your app is secure when performing network transactions."
|
|
|
|
>Security with HTTPS and SSL</a>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/enterprise/index.html"
|
|
|
|
description=
|
|
|
|
"How to implement device management policies for enterprise-oriented apps."
|
|
|
|
>Developing for Enterprise</a>
|
|
|
|
</div>
|
2012-06-21 17:14:39 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
|
|
|
|
Enhancing Security with Device Management Policies
|
2012-06-21 17:14:39 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2010-04-16 15:57:34 -07:00
|
|
|
</ul>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<!-- End security and user info -->
|
2009-12-10 15:54:54 -08:00
|
|
|
|
2013-06-21 16:49:46 -07:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/testing.html">
|
|
|
|
<span class="small">Best Practices for</span><br/>
|
|
|
|
Testing
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html"
|
|
|
|
description="How to test Activities in your Android applications.">
|
|
|
|
Testing Your Activity
|
|
|
|
</a></div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html">
|
|
|
|
<span class="en">Setting Up Your Test Environment</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html">
|
|
|
|
<span class="en">Creating and Running a Test Case</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html">
|
|
|
|
<span class="en">Testing UI Components</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html">
|
|
|
|
<span class="en">Creating Unit Tests</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html">
|
|
|
|
<span class="en">Creating Functional Tests</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
<!-- End best Testing -->
|
2012-06-21 17:14:39 -07:00
|
|
|
|
2012-11-07 16:35:16 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/distribute.html">
|
|
|
|
<span class="small">Using Google Play to</span><br/>
|
|
|
|
Distribute & Monetize
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<ul>
|
2012-12-08 17:06:30 -08:00
|
|
|
<li class="nav-section">
|
|
|
|
<div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
|
|
|
|
description="How to sell in-app products from your application using In-app Billing.">
|
|
|
|
Selling In-app Products
|
|
|
|
</a></div>
|
|
|
|
<ul>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
|
|
|
|
<span class="en">Preparing Your App</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
|
|
|
|
<span class="en">Establishing Products for Sale</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
|
|
|
|
<span class="en">Purchasing Products</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
|
|
|
|
<span class="en">Testing Your App</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2013-03-04 10:33:30 -08:00
|
|
|
|
2012-06-13 10:57:22 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/multiple-apks/index.html"
|
|
|
|
description=
|
|
|
|
"How to publish your app on Google Play with separate APKs that target
|
|
|
|
different devices, while using a single app listing."
|
|
|
|
>Maintaining Multiple APKs</a>
|
|
|
|
</div>
|
2012-06-13 10:57:22 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
|
|
|
|
Creating Multiple APKs for Different API Levels
|
2012-06-13 10:57:22 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
|
|
|
|
Creating Multiple APKs for Different Screen Sizes
|
2012-06-13 10:57:22 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
|
|
|
|
Creating Multiple APKs for Different GL Textures
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
|
|
|
|
Creating Multiple APKs with 2+ Dimensions
|
2012-06-13 10:57:22 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2012-10-20 12:41:40 -07:00
|
|
|
<li class="nav-section">
|
2012-11-07 16:35:16 -08:00
|
|
|
<div class="nav-section-header">
|
|
|
|
<a href="<?cs var:toroot ?>training/monetization/index.html"
|
|
|
|
description=
|
|
|
|
"How to implement monetization strategies for your app without compromising
|
|
|
|
the user experience."
|
|
|
|
>Monetizing Your App</a>
|
|
|
|
</div>
|
2012-10-20 12:41:40 -07:00
|
|
|
<ul>
|
2012-11-07 16:35:16 -08:00
|
|
|
<li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
|
|
|
|
Advertising without Compromising User Experience
|
2012-10-20 12:41:40 -07:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</li>
|
2009-12-10 16:25:06 -08:00
|
|
|
</ul>
|
|
|
|
</li>
|
2012-11-07 16:35:16 -08:00
|
|
|
<!-- End best Publishing -->
|
|
|
|
|
2012-06-21 17:14:39 -07:00
|
|
|
</ul><!-- nav -->
|
2009-12-10 16:25:06 -08:00
|
|
|
<script type="text/javascript">
|
|
|
|
<!--
|
|
|
|
buildToggleLists();
|
|
|
|
changeNavLang(getLangPref());
|
|
|
|
//-->
|
|
|
|
</script>
|