blob: cdc1574e8281e4cadacb5ac7ed2ae83543e79548 [file] [log] [blame]
<ul id="nav">
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/index.html">
Getting Started
</a>
</div>
<ul>
<li class="nav-section">
<div class="nav-section-header">
<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>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html">
Creating an Android Project
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html">
Running Your Application
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html">
Building a Simple User Interface
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html">
Starting Another Activity
</a>
</li>
</ul>
</li>
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
description=
"How Android activities live and die and how to create
a seamless user experience by implementing lifecycle callback methods."
>Managing the Activity Lifecycle</a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html">
Starting an Activity
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
Pausing and Resuming an Activity
</a>
</li>
<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
</a>
</li>
</ul>
</li>
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html"
description=
"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>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html">
Supporting Different Languages
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html">
Supporting Different Screens
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html">
Supporting Different Platform Versions
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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&mdash;essential for building a single APK for both
phones and tablets."
>Building a Dynamic UI with Fragments</a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/fragments/support-lib.html">
Using the Support Library
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
Creating a Fragment
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html">
Building a Flexible UI
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
Communicating with Other Fragments
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
Saving Key-Value Sets
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
Saving Files
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
Saving Data in SQL Databases
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/intents/sending.html">
Sending the User to Another App
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/intents/result.html">
Getting a Result from the Activity
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/intents/filters.html">
Allowing Other Apps to Start Your Activity
</a>
</li>
</ul>
</li>
<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 Content</a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/sharing/send.html">
Sending Content to Other Apps
</a>
</li>
<li><a href="<?cs var:toroot ?>training/sharing/receive.html">
Receiving Content from Other Apps
</a>
</li>
<li><a href="<?cs var:toroot ?>training/sharing/shareaction.html">
Adding an Easy Share Action
</a>
</li>
</ul>
</li>
</ul>
</li><!-- end getting started -->
<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>
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
Controlling Your App's Volume and Playback
</a>
</li>
<li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
Managing Audio Focus
</a>
</li>
<li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
Dealing with Audio Output Hardware
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
Taking Photos Simply
</a>
</li>
<li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
Recording Videos Simply
</a>
</li>
<li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
Controlling the Camera
</a>
</li>
</ul>
</li>
</ul>
</li>
<!-- End multimedia -->
<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 &amp; Animation
</a>
</div>
<ul>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
Loading Large Bitmaps Efficiently
</a>
</li>
<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
</a>
</li>
<li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
Displaying Bitmaps in Your UI
</a></li>
</ul>
</li>
<li class="nav-section">
<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>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
Building an OpenGL ES Environment
</a>
</li>
<li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
Defining Shapes
</a>
</li>
<li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
Drawing Shapes
</a>
</li>
<li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
Applying Projection and Camera Views
</a>
</li>
<li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
Adding Motion
</a>
</li>
<li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
Responding to Touch Events
</a>
</li>
</ul>
</li>
<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
</a></div>
<ul>
<li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
Crossfading Two Views
</a>
</li>
<li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
Using ViewPager for Screen Slide
</a>
</li>
<li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
Displaying Card Flip Animations
</a>
</li>
<li><a href="<?cs var:toroot ?>training/animation/zoom.html">
Zooming a View
</a>
</li>
<li><a href="<?cs var:toroot ?>training/animation/layout.html">
Animating Layout Changes
</a>
</li>
</ul>
</li>
</ul>
</li>
<!-- End graphics and animation -->
<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 &amp; the Cloud
</a>
</div>
<ul>
<li class="nav-section">
<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
Discovery and Wi-Fi Direct in order to create peer-to-peer connections."
>Connecting Devices Wirelessly</a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
Using Network Service Discovery
</a>
</li>
<li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
Connecting with Wi-Fi Direct
</a>
</li>
<li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
Using Wi-Fi Direct for Service Discovery
</a>
</li>
</ul>
</li>
<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>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
Connecting to the Network
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
Managing Network Usage
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
Parsing XML Data
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
Optimizing Downloads for Efficient Network Access
</a>
</li>
<li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
Minimizing the Effect of Regular Updates
</a>
</li>
<li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
Redundant Downloads are Redundant
</a>
</li>
<li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
Modifying Patterns Based on the Connectivity Type
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
Using the Backup API
</a>
</li>
<li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
Making the Most of Google Cloud Messaging
</a>
</li>
</ul>
</li>
</ul>
</li>
<!-- End connectivity and cloud -->
<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 &amp; Location
</a>
</div>
<ul>
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/id-auth/index.html"
description=
"How to remember the user by account, authenticate the user, acquire user permission
for the user's online data, and create custom accounts on the device."
>Remembering Users</a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/id-auth/identify.html">
Remembering Your User
</a>
</li>
<li><a href="<?cs var:toroot ?>training/id-auth/authenticate.html">
Authenticating to OAuth2 Services
</a>
</li>
<li><a href="<?cs var:toroot ?>training/id-auth/custom_auth.html">
Creating a Custom Account Type
</a>
</li>
</ul>
</li>
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/basics/location/index.html"
description=
"How to add location-aware features to your app by aqcuiring the user's current
location."
>Making Your App Location Aware</a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/basics/location/locationmanager.html">
Using the Location Manager
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/location/currentlocation.html">
Obtaining the Current Location
</a>
</li>
<li><a href="<?cs var:toroot ?>training/basics/location/geocoding.html">
Displaying a Location Address
</a>
</li>
</ul>
</li>
</ul>
</li>
<!-- End privacy and location -->
<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/>
User Experience &amp; UI
</a>
</div>
<ul>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
Planning Screens and Their Relationships
</a>
</li>
<li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
Planning for Multiple Touchscreen Sizes
</a>
</li>
<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
</a>
</li>
</ul>
</li>
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
description=
"How to implement various navigation patterns such as swipe views and up navigation."
>Implementing Effective Navigation</a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
Implementing Lateral Navigation
</a>
</li>
<li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
Implementing Ancestral Navigation
</a>
</li>
<li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
Implementing Temporal Navigation
</a>
</li>
<li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
Implementing Descendant Navigation
</a>
</li>
</ul>
</li>
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/notify-user/index.html"
description=
"How to display messages called notifications outside of
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>
<li class="nav-section">
<div class="nav-section-header">
<a href="/training/multiscreen/index.html"
zh-CN-lang="针对多种屏幕进行设计"
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>
<ul>
<li><a href="/training/multiscreen/screensizes.html"
zh-CN-lang="支持各种屏幕尺寸"
ko-lang="다양한 화면 크기 지원"
ja-lang="さまざまな画面サイズのサポート"
es-lang="Cómo admitir varios tamaños de pantalla"
>Supporting Different Screen Sizes</a>
</li>
<li><a href="/training/multiscreen/screendensities.html"
zh-CN-lang="支持各种屏幕密度"
ja-lang="さまざまな画面密度のサポート"
es-lang="Cómo admitir varias densidades de pantalla"
>Supporting Different Screen Densities</a>
</li>
<li><a href="/training/multiscreen/adaptui.html"
zh-CN-lang="实施自适应用户界面流程"
ja-lang="順応性のある UI フローの実装"
es-lang="Cómo implementar interfaces de usuario adaptables"
>Implementing Adaptive UI Flows</a>
</li>
</ul>
</li>
<li class="nav-section">
<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 &quot;ten foot experience&quot; of a TV screen."
>Designing for TV</a>
</div>
<ul>
<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
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
Creating a Custom View Class
</a>
</li>
<li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
Implementing Custom Drawing
</a>
</li>
<li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
Making the View Interactive
</a>
</li>
<li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
Optimizing the View
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
Abstracting the New APIs
</a>
</li>
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
Proxying to the New APIs
</a>
</li>
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
Creating an Implementation with Older APIs
</a>
</li>
<li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
Using the Version-Aware Component
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
</div>
<ul>
<li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
Developing Accessible Applications
</a>
</li>
<li><a href="<?cs var:toroot ?>training/accessibility/service.html">
Developing Accessibility Services
</a>
</li>
</ul>
</li>
</ul>
</li>
<!-- End best UX and UI -->
<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/>
User Input
</a>
</div>
<ul>
<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>
</li>
</ul>
</li> <!-- end of User Input -->
<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>
<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 &lt;include/&gt;
</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>
<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
Service running in the background"
>Running in a Background Service</a>
</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>
<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>
<li class="nav-section">
<div class="nav-section-header">
<a href="/training/monitoring-device-state/index.html"
zh-CN-lang="优化电池使用时间"
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>
<ul>
<li><a href="/training/monitoring-device-state/battery-monitoring.html"
zh-CN-lang="监控电池电量和充电状态"
ja-lang="電池残量と充電状態の監視"
es-lang="Cómo controlar el nivel de batería y el estado de carga"
>Monitoring the Battery Level and Charging State</a>
</li>
<li><a href="/training/monitoring-device-state/docking-monitoring.html"
zh-CN-lang="确定和监控基座对接状态和类型"
ja-lang="ホルダーの装着状態とタイプの特定と監視"
es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"
>Determining and Monitoring the Docking State and Type</a>
</li>
<li><a href="/training/monitoring-device-state/connectivity-monitoring.html"
zh-CN-lang="确定和监控网络连接状态"
ja-lang="接続状態の特定と監視"
es-lang="Cómo determinar y controlar el estado de la conectividad"
>Determining and Monitoring the Connectivity Status</a>
</li>
<li><a href="/training/monitoring-device-state/manifest-receivers.html"
zh-CN-lang="根据需要操作广播接收器"
ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
es-lang="Cómo manipular los receptores de emisión bajo demanda"
>Manipulating Broadcast Receivers On Demand</a>
</li>
</ul>
</li>
<li>
<a href="<?cs var:toroot ?>training/articles/perf-anr.html"
description=
"How to keep your app responsive to user interaction so the UI does not lock-up and
display an &quot;Application Not Responding&quot; dialog."
>Keeping Your App Responsive</a>
</li>
<li>
<a href="<?cs var:toroot ?>training/articles/perf-jni.html"
description=
"How to efficiently use the Java Native Interface with the Android NDK."
>JNI Tips</a>
</li>
<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>
</ul>
</li> <!-- end of Performance -->
<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 &amp; Privacy
</a>
</div>
<ul>
<li>
<a href="<?cs var:toroot ?>training/articles/security-tips.html"
description=
"How to perform various tasks and keep your app's data and your user's data secure."
>Security Tips</a>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
Enhancing Security with Device Management Policies
</a>
</li>
</ul>
</li>
</ul>
</li>
<!-- End security and user info -->
<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 &amp; Monetize
</a>
</div>
<ul>
<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>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
Creating Multiple APKs for Different API Levels
</a>
</li>
<li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
Creating Multiple APKs for Different Screen Sizes
</a>
</li>
<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
</a>
</li>
</ul>
</li>
<li class="nav-section">
<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>
<ul>
<li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
Advertising without Compromising User Experience
</a>
</li>
</ul>
</li>
</ul>
</li>
<!-- End best Publishing -->
</ul><!-- nav -->
<script type="text/javascript">
<!--
buildToggleLists();
changeNavLang(getLangPref());
//-->
</script>