blob: 0616b62f01b6996c101d41f1c447d526e0d1fe6a [file] [log] [blame]
Scott Main50e990c2012-06-21 17:14:39 -07001<ul id="nav">
Scott Main50e990c2012-06-21 17:14:39 -07002 <li class="nav-section">
3 <div class="nav-section-header">
4 <a href="<?cs var:toroot ?>training/index.html">
Scott Main22cc2762012-11-07 16:35:16 -08005 Getting Started
Scott Main50e990c2012-06-21 17:14:39 -07006 </a>
7 </div>
8
9 <ul>
10 <li class="nav-section">
11 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -080012 <a href="<?cs var:toroot ?>training/basics/firstapp/index.html"
13 description=
14 "After you've installed the Android SDK, start with this class
15 to learn the basics about Android app development."
16 >Building Your First App</a>
Scott Main50e990c2012-06-21 17:14:39 -070017 </div>
18 <ul>
19 <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html">
Scott Main22cc2762012-11-07 16:35:16 -080020 Creating an Android Project
Scott Main50e990c2012-06-21 17:14:39 -070021 </a>
22 </li>
23 <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html">
Scott Main22cc2762012-11-07 16:35:16 -080024 Running Your Application
Scott Main50e990c2012-06-21 17:14:39 -070025 </a>
26 </li>
27 <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html">
Scott Main22cc2762012-11-07 16:35:16 -080028 Building a Simple User Interface
Scott Main50e990c2012-06-21 17:14:39 -070029 </a>
30 </li>
31 <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html">
Scott Main22cc2762012-11-07 16:35:16 -080032 Starting Another Activity
Scott Main50e990c2012-06-21 17:14:39 -070033 </a>
34 </li>
35 </ul>
36 </li>
37
38 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -080039 <div class="nav-section-header">
Scott Maind0413012013-07-19 19:04:45 -070040 <a href="<?cs var:toroot ?>training/basics/actionbar/index.html"
41 description=
42 "The action bar is one of the most important design elements you can implement for your
43app's activities. Although first introduced with API level 11, you can use the Support Library to
44include the action bar on devices running Android 2.1 or higher."
45 >Adding the Action Bar</a>
46 </div>
47 <ul>
48 <li><a href="<?cs var:toroot ?>training/basics/actionbar/setting-up.html">
49 Setting Up the Action Bar
50 </a>
51 </li>
52 <li><a href="<?cs var:toroot ?>training/basics/actionbar/adding-buttons.html">
53 Adding Action Buttons
54 </a>
55 </li>
56 <li><a href="<?cs var:toroot ?>training/basics/actionbar/styling.html">
57 Styling the Action Bar
58 </a>
59 </li>
60 <li><a href="<?cs var:toroot ?>training/basics/actionbar/overlaying.html">
61 Overlaying the Action Bar
62 </a>
63 </li>
64 </ul>
65 </li>
66
67 <li class="nav-section">
68 <div class="nav-section-header">
Scott Mainf1513912013-08-22 18:11:01 -070069 <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html"
70 description=
71 "How to build your app with alternative resources that provide an
72 optimized user experience on multiple device form factors using a single APK."
73 >Supporting Different Devices</a>
74 </div>
75 <ul>
76 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html">
77 Supporting Different Languages
78 </a>
79 </li>
80 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html">
81 Supporting Different Screens
82 </a>
83 </li>
84 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html">
85 Supporting Different Platform Versions
86 </a>
87 </li>
88 </ul>
89 </li>
90
91 <li class="nav-section">
92 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -080093 <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
94 description=
95 "How Android activities live and die and how to create
96 a seamless user experience by implementing lifecycle callback methods."
97 >Managing the Activity Lifecycle</a>
98 </div>
Scott Main50e990c2012-06-21 17:14:39 -070099 <ul>
100 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html">
Scott Main22cc2762012-11-07 16:35:16 -0800101 Starting an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700102 </a>
103 </li>
104 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
Scott Main22cc2762012-11-07 16:35:16 -0800105 Pausing and Resuming an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700106 </a>
107 </li>
108 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html">
Scott Main22cc2762012-11-07 16:35:16 -0800109 Stopping and Restarting an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700110 </a>
111 </li>
112 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800113 Recreating an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700114 </a>
115 </li>
116 </ul>
117 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700118
Scott Main50e990c2012-06-21 17:14:39 -0700119 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800120 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -0800121 <a href="<?cs var:toroot ?>training/basics/fragments/index.html"
122 description=
123 "How to build a user interface for your app that is flexible enough
124 to present multiple UI components on large screens and a more constrained set of
125 UI components on smaller screens&mdash;essential for building a single APK for both
126 phones and tablets."
127 >Building a Dynamic UI with Fragments</a>
128 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700129 <ul>
Scott Main50e990c2012-06-21 17:14:39 -0700130 <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800131 Creating a Fragment
Scott Main50e990c2012-06-21 17:14:39 -0700132 </a>
133 </li>
134 <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html">
Scott Main22cc2762012-11-07 16:35:16 -0800135 Building a Flexible UI
Scott Main50e990c2012-06-21 17:14:39 -0700136 </a>
137 </li>
138 <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800139 Communicating with Other Fragments
Scott Main50e990c2012-06-21 17:14:39 -0700140 </a>
141 </li>
142 </ul>
143 </li>
144
145 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800146 <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html"
147 description=
148 "How to save data on the device, whether it's temporary files, downloaded
149 app assets, user media, structured data, or something else."
150 >Saving Data</a>
151 </div>
Scott Main11f03b42012-09-07 15:26:39 -0700152 <ul>
153 <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
Scott Main22cc2762012-11-07 16:35:16 -0800154 Saving Key-Value Sets
Scott Main11f03b42012-09-07 15:26:39 -0700155 </a>
156 </li>
157 <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
Scott Main22cc2762012-11-07 16:35:16 -0800158 Saving Files
Scott Main11f03b42012-09-07 15:26:39 -0700159 </a>
160 </li>
161 <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
Scott Main22cc2762012-11-07 16:35:16 -0800162 Saving Data in SQL Databases
Scott Main11f03b42012-09-07 15:26:39 -0700163 </a>
164 </li>
165 </ul>
166 </li>
167
168 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800169 <div class="nav-section-header">
170 <a href="<?cs var:toroot ?>training/basics/intents/index.html"
171 description=
172 "How to build a user experience that leverages other apps available
173 on the device to perform advanced user tasks, such as capture a photo or view
174 an address on a map."
175 >Interacting with Other Apps</a>
176 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700177 <ul>
178 <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html">
Scott Main22cc2762012-11-07 16:35:16 -0800179 Sending the User to Another App
Scott Main50e990c2012-06-21 17:14:39 -0700180 </a>
181 </li>
182 <li><a href="<?cs var:toroot ?>training/basics/intents/result.html">
Scott Main22cc2762012-11-07 16:35:16 -0800183 Getting a Result from the Activity
Scott Main50e990c2012-06-21 17:14:39 -0700184 </a>
185 </li>
186 <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html">
Scott Main22cc2762012-11-07 16:35:16 -0800187 Allowing Other Apps to Start Your Activity
Scott Main50e990c2012-06-21 17:14:39 -0700188 </a>
189 </li>
190 </ul>
191 </li>
192
Scott Main50e990c2012-06-21 17:14:39 -0700193 </ul>
Joe Malinf0f5efb2012-10-27 11:16:19 -0700194 </li><!-- end getting started -->
Joe Malin45edbb72013-08-26 14:55:54 -0700195 <li class="nav-section">
196 <div class="nav-section-header">
197 <a href="<?cs var:toroot ?>training/building-content-sharing.html">
198 <span class="small">Building Apps with</span><br/>Content Sharing
199 </a>
200 </div>
201 <ul>
202 <li class="nav-section">
203 <div class="nav-section-header">
204 <a href="<?cs var:toroot ?>training/sharing/index.html"
205 description=
206 "How to take your app interaction to the next level by sharing
207 information with other apps, receive information back, and provide a simple and
208 scalable way to perform Share actions with user content."
209 >Sharing Simple Data</a>
210 </div>
211 <ul>
212 <li>
213 <a href="<?cs var:toroot ?>training/sharing/send.html">
214 Sending Simple Data to Other Apps
215 </a>
216 </li>
217 <li>
218 <a href="<?cs var:toroot ?>training/sharing/receive.html">
219 Receiving Simple Data from Other Apps
220 </a>
221 </li>
222 <li>
223 <a href="<?cs var:toroot ?>training/sharing/shareaction.html">
224 Adding an Easy Share Action
225 </a>
226 </li>
227 </ul>
228 </li>
229 <li class="nav-section">
230 <div class="nav-section-header">
231 <a href="<?cs var:toroot?>training/secure-file-sharing/index.html"
232 description=
233 "How to provide secure access to a file associated with your app using a content
234 URI and temporary access permissions."
235 >Sharing Files</a>
236 </div>
237 <ul>
238 <li>
239 <a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html">
240 Setting Up File Sharing
241 </a>
242 </li>
243 <li>
244 <a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html">
245 Sharing a File
246 </a>
247 </li>
248 <li>
249 <a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html">
250 Requesting a Shared File
251 </a>
252 </li>
253 <li>
254 <a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html">
255 Retrieving File Information
256 </a>
257 </li>
258 </ul>
259 </li>
260 <li class="nav-section">
261 <div class="nav-section-header">
262 <a href="<?cs var:toroot ?>training/beam-files/index.html"
263 description=
264 "How to transfer files between devices using the NFC Android Beam feature."
265 >Sharing Files with NFC</a>
266 </div>
267 <ul>
268 <li>
269 <a href="<?cs var:toroot ?>training/beam-files/send-files.html"
270 >Sending Files to Another Device</a>
271 </li>
272 <li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html"
273 >Receiving Files from Another Device</a></li>
274 </ul>
275 </li>
276 </ul>
277 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800278
279
Scott Main22cc2762012-11-07 16:35:16 -0800280
Scott Main50e990c2012-06-21 17:14:39 -0700281 <li class="nav-section">
282 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -0800283 <a href="<?cs var:toroot ?>training/building-multimedia.html">
284 <span class="small">Building Apps with</span><br/>Multimedia
285 </a>
286 </div>
287 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800288
Scott Main22cc2762012-11-07 16:35:16 -0800289 <li class="nav-section">
290 <div class="nav-section-header">
291 <a href="<?cs var:toroot ?>training/managing-audio/index.html"
292 description=
293 "How to respond to hardware audio key presses, request audio focus
294 when playing audio, and respond appropriately to changes in audio focus."
295 >Managing Audio Playback</a>
296 </div>
297 <ul>
298 <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
299 Controlling Your App's Volume and Playback
300 </a>
301 </li>
302 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
303 Managing Audio Focus
304 </a>
305 </li>
306 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
307 Dealing with Audio Output Hardware
308 </a>
309 </li>
310 </ul>
311 </li>
312
313 <li class="nav-section">
314 <div class="nav-section-header">
315 <a href="<?cs var:toroot ?>training/camera/index.html"
316 description=
317 "How to leverage existing camera apps on the user's device to capture
318 photos or control the camera hardware directly and build your own camera app."
319 >Capturing Photos</a>
320 </div>
321 <ul>
322 <li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
323 Taking Photos Simply
324 </a>
325 </li>
326 <li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
327 Recording Videos Simply
328 </a>
329 </li>
330 <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
331 Controlling the Camera
332 </a>
333 </li>
334 </ul>
335 </li>
Joe Fernandez84fe6172013-10-29 01:55:12 -0700336
337 <li class="nav-section">
338 <div class="nav-section-header">
339 <a href="<?cs var:toroot ?>training/printing/index.html"
340 description=
341 "How to print photos, HTML documents, and custom documents from your app."
342 >Printing Content</a>
343 </div>
344 <ul>
345 <li><a href="<?cs var:toroot ?>training/printing/photos.html">
346 Photos
347 </a>
348 </li>
349 <li><a href="<?cs var:toroot ?>training/printing/html-docs.html">
350 HTML Documents
351 </a>
352 </li>
353 <li><a href="<?cs var:toroot ?>training/printing/custom-docs.html">
354 Custom Documents
355 </a>
356 </li>
357 </ul>
358 </li>
359
Scott Main22cc2762012-11-07 16:35:16 -0800360 </ul>
361 </li>
362 <!-- End multimedia -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800363
364
Scott Main22cc2762012-11-07 16:35:16 -0800365
366 <li class="nav-section">
367 <div class="nav-section-header">
368 <a href="<?cs var:toroot ?>training/building-graphics.html">
369 <span class="small">Building Apps with</span><br/>Graphics &amp; Animation
370 </a>
371 </div>
372 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800373
Scott Main22cc2762012-11-07 16:35:16 -0800374 <li class="nav-section">
375 <div class="nav-section-header">
376 <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html"
377 description=
378 "How to load and process bitmaps while keeping your user interface
379 responsive and avoid exceeding memory limits."
380 >Displaying Bitmaps Efficiently</a>
381 </div>
382 <ul>
383 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
384 Loading Large Bitmaps Efficiently
385 </a>
386 </li>
387 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html">
388 Processing Bitmaps Off the UI Thread
389 </a>
390 </li>
391 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html">
392 Caching Bitmaps
393 </a>
394 </li>
kmccormick75715422013-03-04 15:25:40 -0800395 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html">
396 Managing Bitmap Memory
397 </a>
398 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800399 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
400 Displaying Bitmaps in Your UI
401 </a></li>
402 </ul>
403 </li>
404
405 <li class="nav-section">
406 <div class="nav-section-header">
407 <a href="<?cs var:toroot?>training/graphics/opengl/index.html"
408 description=
409 "How to create OpenGL graphics within the Android app framework
410 and respond to touch input."
411 >Displaying Graphics with OpenGL ES</a>
412 </div>
413 <ul>
414 <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
415 Building an OpenGL ES Environment
416 </a>
417 </li>
418 <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
419 Defining Shapes
420 </a>
421 </li>
422 <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
423 Drawing Shapes
424 </a>
425 </li>
426 <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
427 Applying Projection and Camera Views
428 </a>
429 </li>
430 <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
431 Adding Motion
432 </a>
433 </li>
434 <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
435 Responding to Touch Events
436 </a>
437 </li>
438 </ul>
439 </li>
440 <li class="nav-section">
441 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html"
442 description=
443 "How to add transitional animations to your user interface.">
444 Adding Animations
445 </a></div>
446 <ul>
447 <li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
448 Crossfading Two Views
449 </a>
450 </li>
451 <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
452 Using ViewPager for Screen Slide
453 </a>
454 </li>
455 <li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
456 Displaying Card Flip Animations
457 </a>
458 </li>
459 <li><a href="<?cs var:toroot ?>training/animation/zoom.html">
460 Zooming a View
461 </a>
462 </li>
463 <li><a href="<?cs var:toroot ?>training/animation/layout.html">
464 Animating Layout Changes
465 </a>
466 </li>
467 </ul>
468 </li>
469 </ul>
470 </li>
471 <!-- End graphics and animation -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800472
Scott Main22cc2762012-11-07 16:35:16 -0800473
474 <li class="nav-section">
475 <div class="nav-section-header">
476 <a href="<?cs var:toroot ?>training/building-connectivity.html">
477 <span class="small">Building Apps with</span><br/>
478 Connectivity &amp; the Cloud
479 </a>
480 </div>
481 <ul>
482
Scott Main22cc2762012-11-07 16:35:16 -0800483 <li class="nav-section">
484 <div class="nav-section-header">
485 <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html"
486 description=
487 "How to find and connect to local devices using Network Service
Scott Mainf5e09702013-08-22 17:19:17 -0700488 Discovery and how to create peer-to-peer connections with Wi-Fi."
Scott Main22cc2762012-11-07 16:35:16 -0800489 >Connecting Devices Wirelessly</a>
490 </div>
491 <ul>
492 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
493 Using Network Service Discovery
494 </a>
495 </li>
496 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
Scott Mainf5e09702013-08-22 17:19:17 -0700497 Creating P2P Connections with Wi-Fi
Scott Main22cc2762012-11-07 16:35:16 -0800498 </a>
499 </li>
500 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
Scott Main2d006d22013-09-16 13:11:07 -0700501 Using Wi-Fi P2P for Service Discovery
Scott Main22cc2762012-11-07 16:35:16 -0800502 </a>
503 </li>
504 </ul>
505 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800506 <li class="nav-section">
507 <div class="nav-section-header">
508 <a href="<?cs var:toroot ?>training/basics/network-ops/index.html"
509 description=
510 "How to create a network connection, monitor the connection for changes
511 in connectivity, and perform transactions with XML data."
512 >Performing Network Operations</a>
513 </div>
514 <ul>
515 <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
516 Connecting to the Network
517 </a>
518 </li>
519 <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
520 Managing Network Usage
521 </a>
522 </li>
523 <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
524 Parsing XML Data
525 </a>
526 </li>
527 </ul>
528 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800529 <li class="nav-section">
530 <div class="nav-section-header">
531 <a href="<?cs var:toroot ?>training/efficient-downloads/index.html"
532 description=
533 "How to minimize your app's impact on the battery when performing downloads
534 and other network transactions."
535 >Transferring Data Without Draining the Battery</a>
536 </div>
537 <ul>
538 <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
539 Optimizing Downloads for Efficient Network Access
540 </a>
541 </li>
542 <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
543 Minimizing the Effect of Regular Updates
544 </a>
545 </li>
546 <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
547 Redundant Downloads are Redundant
548 </a>
549 </li>
550 <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
551 Modifying Patterns Based on the Connectivity Type
552 </a>
553 </li>
554 </ul>
555 </li>
556
557 <li class="nav-section">
558 <div class="nav-section-header">
559 <a href="<?cs var:toroot ?>training/cloudsync/index.html"
560 description=
561 "How to sync and back up app and user data to remote web services in the
562 cloud and how to restore the data back to multiple devices."
563 >Syncing to the Cloud</a>
564 </div>
565 <ul>
566 <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
567 Using the Backup API
568 </a>
569 </li>
570 <li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
571 Making the Most of Google Cloud Messaging
572 </a>
573 </li>
574 </ul>
kmccormick71baac12013-06-11 13:17:55 -0700575 <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html"
576 description=
577 "How to design a robust conflict resolution strategy for apps that save data to the cloud."
578 >Resolving Cloud Save Conflicts
579 </a>
Joe Malin2e1c7b72013-08-30 15:30:54 -0700580 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800581 </li>
Joe Maline9df5112013-06-07 13:38:00 -0700582 <li class="nav-section">
583 <div class="nav-section-header">
584 <a href="<?cs var:toroot ?>training/sync-adapters/index.html"
585 description="How to transfer data between the cloud and the device using the Android
586 sync adapter framework"
587 >Transferring Data Using Sync Adapters</a>
588 </div>
589 <ul>
590 <li>
591 <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html">
592 Creating a Stub Authenticator
593 </a>
594 </li>
595 <li>
596 <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html">
597 Creating a Stub Content Provider
598 </a>
599 </li>
600 <li>
601 <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html">
602 Creating a Sync Adapter
603 </a>
604 </li>
605 <li>
606 <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html">
607 Running a Sync Adapter
608 </a>
609 </li>
610 </ul>
611 </li>
612
Scott Main22cc2762012-11-07 16:35:16 -0800613 </ul>
614 </li>
615 <!-- End connectivity and cloud -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800616
617
Scott Main22cc2762012-11-07 16:35:16 -0800618
619 <li class="nav-section">
620 <div class="nav-section-header">
621 <a href="<?cs var:toroot ?>training/building-userinfo.html">
622 <span class="small">Building Apps with</span><br/>
623 User Info &amp; Location
624 </a>
625 </div>
626 <ul>
Joe Malin421435d2013-01-15 15:06:08 -0800627 <li class="nav-section">
628 <div class="nav-section-header">
629 <a href="<?cs var:toroot ?>training/contacts-provider/index.html"
630 description=
631 "How to use Android's central address book, the Contacts Provider, to
632 display contacts and their details and modify contact information.">
633 Accessing Contacts Data</a>
634 </div>
635 <ul>
636 <li>
637 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html">
638 Retrieving a List of Contacts
639 </a>
640 </li>
641 <li>
642 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html">
643 Retrieving Details for a Contact
644 </a>
645 </li>
646 <li>
647 <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html">
648 Modifying Contacts Using Intents
649 </a>
650 </li>
651 <li>
652 <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html">
653 Displaying the Quick Contact Badge
654 </a>
655 </li>
656 </ul>
657 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800658
659 <li class="nav-section">
660 <div class="nav-section-header">
Joe Malin3ddba7e2013-03-04 10:33:30 -0800661 <a href="<?cs var:toroot ?>training/location/index.html"
662 description="How to add location-aware features to your app by getting the user's current location.">
663 Making Your App Location-Aware
664 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800665 </div>
666 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800667 <li>
668 <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
669 Retrieving the Current Location
670 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800671 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800672 <li>
673 <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
674 Receiving Location Updates
675 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800676 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800677 <li>
678 <a href="<?cs var:toroot ?>training/location/display-address.html">
Scott Main22cc2762012-11-07 16:35:16 -0800679 Displaying a Location Address
680 </a>
681 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800682 <li><a href="<?cs var:toroot ?>training/location/geofencing.html">
683 Creating and Monitoring Geofences
684 </a>
685 </li>
686 <li><a href="<?cs var:toroot ?>training/location/activity-recognition.html">
687 Recognizing the User's Current Activity
688 </a>
689 </li>
Joe Malin72fdbc82013-07-26 17:26:52 -0700690 <li><a href="<?cs var:toroot ?>training/location/location-testing.html">
691 Testing Using Mock Locations
692 </a>
693 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800694 </ul>
695 </li>
696 </ul>
697 </li>
698 <!-- End privacy and location -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800699
700
Scott Main22cc2762012-11-07 16:35:16 -0800701
702 <li class="nav-section">
703 <div class="nav-section-header">
704 <a href="<?cs var:toroot ?>training/best-ux.html">
705 <span class="small">Best Practices for</span><br/>
Scott Main81428982013-12-09 18:02:48 -0800706 Interaction &amp; Engagement
Scott Main50e990c2012-06-21 17:14:39 -0700707 </a>
708 </div>
709 <ul>
710
711 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800712 <div class="nav-section-header">
713 <a href="<?cs var:toroot ?>training/design-navigation/index.html"
714 description=
715 "How to plan your app's screen hierarchy and forms of navigation so users can
716 effectively and intuitively traverse your app content using various navigation
717 patterns."
718 >Designing Effective Navigation</a>
Scott Mainddab47b2012-10-02 17:48:11 -0700719 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700720 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800721 <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
722 Planning Screens and Their Relationships
723 </a>
724 </li>
725 <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
726 Planning for Multiple Touchscreen Sizes
727 </a>
728 </li>
729 <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
730 Providing Descendant and Lateral Navigation
731 </a>
732 </li>
733 <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
734 Providing Ancestral and Temporal Navigation
735 </a>
736 </li>
737 <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
738 Putting it All Together: Wireframing the Example App
739 </a>
740 </li>
741 </ul>
742 </li>
743
744 <li class="nav-section">
745 <div class="nav-section-header">
746 <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
747 description=
Scott Main7c840552013-03-26 18:53:01 -0700748 "How to implement various navigation patterns such as swipe views,
749 a navigation drawer, and up navigation."
Scott Main22cc2762012-11-07 16:35:16 -0800750 >Implementing Effective Navigation</a>
751 </div>
752 <ul>
753 <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
Scott Main7c840552013-03-26 18:53:01 -0700754 Creating Swipe Views with Tabs
755 </a>
756 </li>
757 <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
758 Creating a Navigation Drawer
Scott Main22cc2762012-11-07 16:35:16 -0800759 </a>
760 </li>
761 <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
Scott Main7c840552013-03-26 18:53:01 -0700762 Providing Up Navigation
Scott Main22cc2762012-11-07 16:35:16 -0800763 </a>
764 </li>
765 <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
Scott Main7c840552013-03-26 18:53:01 -0700766 Providing Proper Back Navigation
Scott Main22cc2762012-11-07 16:35:16 -0800767 </a>
768 </li>
769 <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
770 Implementing Descendant Navigation
771 </a>
772 </li>
773 </ul>
774 </li>
&& repo sync -j80aae0002012-10-04 16:34:23 -0700775
776 <li class="nav-section">
777 <div class="nav-section-header">
778 <a href="<?cs var:toroot ?>training/notify-user/index.html"
779 description=
Joe Malinf0f5efb2012-10-27 11:16:19 -0700780 "How to display messages called notifications outside of
&& repo sync -j80aae0002012-10-04 16:34:23 -0700781 your application's UI."
782 >Notifying the User</a>
783 </div>
784 <ul>
785 <li>
786 <a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
787 Building a Notification
788 </a>
789 </li>
790 <li>
791 <a href="<?cs var:toroot ?>training/notify-user/navigation.html">
792 Preserving Navigation when Starting an Activity
793 </a>
794 </li>
795 <li>
796 <a href="<?cs var:toroot ?>training/notify-user/managing.html">
797 Updating Notifications
798 </a>
799 </li>
800 <li>
801 <a href="<?cs var:toroot ?>training/notify-user/expanded.html">
802 Using Big View Styles
803 </a>
804 </li>
805 <li>
806 <a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
807 Displaying Progress in a Notification
808 </a>
809 </li>
810 </ul>
811 </li>
812
813 <li class="nav-section">
814 <div class="nav-section-header">
815 <a href="<?cs var:toroot ?>training/search/index.html"
816 description=
817 "How to properly add a search interface to your app and create a searchable database."
818 >Adding Search Functionality</a>
819 </div>
820 <ul>
821 <li><a href="<?cs var:toroot ?>training/search/setup.html">
822 Setting up the Search Interface
823 </a>
824 </li>
825 <li><a href="<?cs var:toroot ?>training/search/search.html">
826 Storing and Searching for Data
827 </a>
828 </li>
829 <li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
830 Remaining Backward Compatible
831 </a>
832 </li>
833 </ul>
834 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800835
Scott Main81428982013-12-09 18:02:48 -0800836 <li class="nav-section">
837 <div class="nav-section-header">
838 <a href="<?cs var:toroot ?>training/app-indexing/index.html"
839 description=
840 "How to enable deep linking and indexing of your application
841content so that users can open this content directly from their mobile search
842results."
quddusc240aca32013-12-19 16:59:17 -0800843 >Making Your App Content Searchable by Google</a>
Scott Main81428982013-12-09 18:02:48 -0800844 </div>
845 <ul>
846 <li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html">
847 Enabling Deep Links for App Content
848 </a>
849 </li>
850 <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html">
851 Specifying App Content for Indexing
852 </a>
853 </li>
854 </ul>
855 </li>
856 </ul>
857 </li>
858 <!-- End Interaction and Engagement -->
859
860
861
862
863 <li class="nav-section">
864 <div class="nav-section-header">
865 <a href="<?cs var:toroot ?>training/best-ui.html">
866 <span class="small">Best Practices for</span><br/>
867 User Interface
868 </a>
869 </div>
870 <ul>
871
Joe Malin3ddba7e2013-03-04 10:33:30 -0800872
Scott Main22cc2762012-11-07 16:35:16 -0800873 <li class="nav-section">
874 <div class="nav-section-header">
Scott Main5b50239c2013-12-17 14:59:05 -0800875 <a href="<?cs var:toroot ?>training/multiscreen/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700876 zh-cn-lang="针对多种屏幕进行设计"
Scott Main22cc2762012-11-07 16:35:16 -0800877 ja-lang="複数画面のデザイン"
878 es-lang="Cómo diseñar aplicaciones para varias pantallas"
879 description=
880 "How to build a user interface that's flexible enough to
881 fit perfectly on any screen and how to create different interaction
882 patterns that are optimized for different screen sizes."
883 >Designing for Multiple Screens</a>
884 </div>
885 <ul>
Scott Main5b50239c2013-12-17 14:59:05 -0800886 <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700887 zh-cn-lang="支持各种屏幕尺寸"
Scott Mainddab47b2012-10-02 17:48:11 -0700888 ko-lang="다양한 화면 크기 지원"
889 ja-lang="さまざまな画面サイズのサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700890 es-lang="Cómo admitir varios tamaños de pantalla"
Scott Main22cc2762012-11-07 16:35:16 -0800891 >Supporting Different Screen Sizes</a>
Scott Main50e990c2012-06-21 17:14:39 -0700892 </li>
Scott Main5b50239c2013-12-17 14:59:05 -0800893 <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700894 zh-cn-lang="支持各种屏幕密度"
Scott Mainddab47b2012-10-02 17:48:11 -0700895 ja-lang="さまざまな画面密度のサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700896 es-lang="Cómo admitir varias densidades de pantalla"
Scott Mainddab47b2012-10-02 17:48:11 -0700897 >Supporting Different Screen Densities</a>
Scott Main50e990c2012-06-21 17:14:39 -0700898 </li>
Scott Main5b50239c2013-12-17 14:59:05 -0800899 <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700900 zh-cn-lang="实施自适应用户界面流程"
Scott Mainddab47b2012-10-02 17:48:11 -0700901 ja-lang="順応性のある UI フローの実装"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700902 es-lang="Cómo implementar interfaces de usuario adaptables"
Scott Mainddab47b2012-10-02 17:48:11 -0700903 >Implementing Adaptive UI Flows</a>
Scott Main50e990c2012-06-21 17:14:39 -0700904 </li>
905 </ul>
906 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700907
Scott Main50e990c2012-06-21 17:14:39 -0700908 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800909 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/tv/index.html"
910 description=
911 "How to optimize your app's user interface and user input for
912 the &quot;ten foot experience&quot; of a TV screen."
913 >Designing for TV</a>
914 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700915 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800916 <li><a href="<?cs var:toroot ?>training/tv/optimizing-layouts-tv.html">
917 Optimizing Layouts for TV
Scott Main50e990c2012-06-21 17:14:39 -0700918 </a>
919 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800920 <li><a href="<?cs var:toroot ?>training/tv/optimizing-navigation-tv.html">
921 Optimizing Navigation for TV
Scott Main50e990c2012-06-21 17:14:39 -0700922 </a>
923 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800924 <li><a href="<?cs var:toroot ?>training/tv/unsupported-features-tv.html">
925 Handling Features Not Supported on TV
Scott Main50e990c2012-06-21 17:14:39 -0700926 </a>
927 </li>
928 </ul>
929 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800930
Scott Main50e990c2012-06-21 17:14:39 -0700931 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800932 <div class="nav-section-header">
933 <a href="<?cs var:toroot ?>training/custom-views/index.html"
934 description=
935 "How to build custom UI widgets that are interactive and smooth."
936 >Creating Custom Views</a>
937 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700938 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800939 <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
940 Creating a Custom View Class
Scott Main50e990c2012-06-21 17:14:39 -0700941 </a>
942 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800943 <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
944 Implementing Custom Drawing
Scott Main50e990c2012-06-21 17:14:39 -0700945 </a>
946 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800947 <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
948 Making the View Interactive
949 </a>
950 </li>
951 <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
952 Optimizing the View
Scott Main50e990c2012-06-21 17:14:39 -0700953 </a>
954 </li>
955 </ul>
956 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700957
Scott Main50e990c2012-06-21 17:14:39 -0700958 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800959 <div class="nav-section-header">
960 <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
961 description=
962 "How to use UI components and other APIs from the more recent versions of Android
963 while remaining compatible with older versions of the platform."
964 >Creating Backward-Compatible UIs</a>
Scott Mainddab47b2012-10-02 17:48:11 -0700965 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700966 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800967 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
968 Abstracting the New APIs
969 </a>
970 </li>
971 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
972 Proxying to the New APIs
973 </a>
974 </li>
975 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
976 Creating an Implementation with Older APIs
977 </a>
978 </li>
979 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
980 Using the Version-Aware Component
981 </a>
982 </li>
983 </ul>
984 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800985
Scott Main22cc2762012-11-07 16:35:16 -0800986 <li class="nav-section">
987 <div class="nav-section-header">
988 <a href="<?cs var:toroot ?>training/accessibility/index.html"
989 description=
990 "How to make your app accessible to users with vision
991 impairment or other physical disabilities."
992 >Implementing Accessibility</a>
993 </div>
994 <ul>
995 <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
996 Developing Accessible Applications
997 </a>
998 </li>
999 <li><a href="<?cs var:toroot ?>training/accessibility/service.html">
1000 Developing Accessibility Services
1001 </a>
1002 </li>
1003 </ul>
1004 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001005
Katie McCormickcfd30472013-09-27 15:52:14 -07001006 <li class="nav-section">
1007 <div class="nav-section-header">
1008 <a href="<?cs var:toroot ?>training/system-ui/index.html"
1009 description=
1010 "How to hide and show status and navigation bars across different versions of Android,
1011 while managing the display of other screen components."
1012 >Managing the System UI</a>
1013 </div>
1014 <ul>
1015 <li><a href="<?cs var:toroot ?>training/system-ui/dim.html">
1016 Dimming the System Bars
1017 </a>
1018 </li>
1019 <li><a href="<?cs var:toroot ?>training/system-ui/status.html">
1020 Hiding the Status Bar
1021 </a>
1022 </li>
1023 <li><a href="<?cs var:toroot ?>training/system-ui/navigation.html">
1024 Hiding the Navigation Bar
1025 </a>
1026 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001027 <li><a href="<?cs var:toroot ?>training/system-ui/immersive.html">
Katie McCormick467f5db2013-11-05 13:35:15 -08001028 Using Immersive Full-Screen Mode
1029 </a>
1030 </li>
Katie McCormickcfd30472013-09-27 15:52:14 -07001031 <li><a href="<?cs var:toroot ?>training/system-ui/visibility.html">
1032 Responding to UI Visibility Changes
1033 </a>
1034 </li>
1035 </ul>
1036 </li>
1037
Scott Main22cc2762012-11-07 16:35:16 -08001038 </ul>
1039 </li>
Scott Main81428982013-12-09 18:02:48 -08001040 <!-- End User Interface -->
1041
1042
Joe Malin3ddba7e2013-03-04 10:33:30 -08001043
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001044
&& repo sync -j8518edbf2012-11-30 16:28:27 -08001045 <li class="nav-section">
1046 <div class="nav-section-header">
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001047 <a href="<?cs var:toroot ?>training/best-user-input.html">
&& repo sync -j8518edbf2012-11-30 16:28:27 -08001048 <span class="small">Best Practices for</span><br/>
1049 User Input
1050 </a>
1051 </div>
1052 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001053
&& repo sync -j8518edbf2012-11-30 16:28:27 -08001054 <li class="nav-section">
1055 <div class="nav-section-header">
1056 <a href="<?cs var:toroot ?>training/gestures/index.html"
1057 description=
1058 "How to write apps that allow users to interact with the touch screen via touch gestures."
1059 >Using Touch Gestures</a>
1060 </div>
1061 <ul>
1062 <li><a href="<?cs var:toroot ?>training/gestures/detector.html">
1063 Detecting Common Gestures
1064 </a>
1065 </li>
1066 <li><a href="<?cs var:toroot ?>training/gestures/movement.html">
1067 Tracking Movement
1068 </a>
1069 </li>
1070 <li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
1071 Animating a Scroll Gesture
1072 </a>
1073 </li>
1074 <li><a href="<?cs var:toroot ?>training/gestures/multi.html">
1075 Handling Multi-Touch Gestures
1076 </a>
1077 </li>
1078 <li><a href="<?cs var:toroot ?>training/gestures/scale.html">
1079 Dragging and Scaling
1080 </a>
1081 </li>
1082 <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
1083 Managing Touch Events in a ViewGroup
1084 </a>
1085 </li>
1086 </ul>
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001087 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001088
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001089 <li class="nav-section">
1090 <div class="nav-section-header">
1091 <a href="<?cs var:toroot ?>training/keyboard-input/index.html"
1092 description=
1093 "How to specify the appearance and behaviors of soft input methods (such
1094 as on-screen keyboards) and how to optimize the experience with
1095 hardware keyboards."
1096 >Handling Keyboard Input</a>
1097 </div>
1098 <ul>
1099 <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html">
1100 Specifying the Input Method Type
1101 </a>
1102 </li>
1103 <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html">
1104 Handling Input Method Visibility
1105 </a>
1106 </li>
1107 <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html">
1108 Supporting Keyboard Navigation
1109 </a>
1110 </li>
1111 <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html">
1112 Handling Keyboard Actions
1113 </a>
1114 </li>
1115 </ul>
1116 </li>
quddusc1dff7462013-07-01 16:57:26 -07001117
1118 <li class="nav-section">
1119 <div class="nav-section-header">
1120 <a href="<?cs var:toroot ?>training/game-controllers/index.html"
1121 description=
1122 "How to write apps that support game controllers."
1123 >Supporting Game Controllers</a>
1124 </div>
1125 <ul>
1126 <li><a href="<?cs var:toroot ?>training/game-controllers/controller-input.html">
1127 Handling Controller Actions
1128 </a>
1129 </li>
1130 <li><a href="<?cs var:toroot ?>training/game-controllers/compatibility.html">
1131 Supporting Controllers Across Android Versions
1132 </a>
1133 </li>
1134 <li><a href="<?cs var:toroot ?>training/game-controllers/multiple-controllers.html">
1135 Supporting Multiple Game Controllers
1136 </a>
1137 </li>
1138 </ul>
1139 </li>
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001140 </ul>
Joe Malin421435d2013-01-15 15:06:08 -08001141 </li> <!-- end of User Input -->
Scott Main22cc2762012-11-07 16:35:16 -08001142
1143 <li class="nav-section">
1144 <div class="nav-section-header">
Katie McCormick7bdb3f62013-09-05 14:46:20 -07001145 <a href="<?cs var:toroot ?>training/best-background.html">
1146 <span class="small">Best Practices for</span><br/>
1147 Background Jobs
1148 </a>
1149 </div>
1150 <ul>
1151
1152 <li class="nav-section">
1153 <div class="nav-section-header">
1154 <a href="<?cs var:toroot ?>training/run-background-service/index.html"
1155 description=
1156 "How to improve UI performance and responsiveness by sending work to a
1157 Service running in the background"
1158 >Running in a Background Service</a>
1159 </div>
1160 <ul>
1161 <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
1162 Creating a Background Service
1163 </a>
1164 </li>
1165 <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
1166 Sending Work Requests to the Background Service
1167 </a>
1168 </li>
1169 <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
1170 Reporting Work Status
1171 </a>
1172 </li>
1173 </ul>
1174 </li>
1175
1176 <li class="nav-section">
1177 <div class="nav-section-header">
1178 <a href="<?cs var:toroot ?>training/load-data-background/index.html"
1179 description="How to use CursorLoader to query data without
1180 affecting UI responsiveness."
1181 >Loading Data in the Background</a>
1182 </div>
1183 <ul>
1184 <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
1185 Running a Query with a CursorLoader</a>
1186 </li>
1187 <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
1188 Handling the Results</a>
1189 </li>
1190 </ul>
1191 </li>
1192
1193 <li class="nav-section">
1194 <div class="nav-section-header">
1195 <a href="<?cs var:toroot ?>training/scheduling/index.html"
1196 description="How to use repeating alarms and wake locks
1197 to run background jobs."
1198 >Managing Device Awake State</a>
1199 </div>
1200 <ul>
1201 <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html">
1202 Keeping the Device Awake</a>
1203 </li>
1204 <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html">
1205 Scheduling Repeating Alarms</a>
1206 </li>
1207 </ul>
1208 </li>
1209 </ul>
1210 </li> <!-- end of Background Jobs -->
1211
1212 <li class="nav-section">
1213 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -08001214 <a href="<?cs var:toroot ?>training/best-performance.html">
1215 <span class="small">Best Practices for</span><br/>
1216 Performance
1217 </a>
1218 </div>
1219 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001220
Scott Main22cc2762012-11-07 16:35:16 -08001221 <li>
Scott Maina3f0e012013-09-19 17:45:40 -07001222 <a href="<?cs var:toroot ?>training/articles/memory.html"
1223 description=
1224 "How to keep your app's memory footprint small in order to improve performance
1225 on a variety of mobile devices."
1226 >Managing Your App's Memory</a>
1227 </li>
1228
1229 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001230 <a href="<?cs var:toroot ?>training/articles/perf-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001231 description=
1232 "How to optimize your app's performance in various ways to improve its
1233 responsiveness and battery efficiency."
1234 >Performance Tips</a>
1235 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001236
Scott Main22cc2762012-11-07 16:35:16 -08001237 <li class="nav-section">
1238 <div class="nav-section-header">
1239 <a href="<?cs var:toroot ?>training/improving-layouts/index.html"
1240 description=
1241 "How to identify problems in your app's layout performance and improve the UI
1242 responsiveness."
1243 >Improving Layout Performance</a>
1244 </div>
1245 <ul>
1246 <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
1247 Optimizing Layout Hierarchies
1248 </a>
1249 </li>
1250 <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
1251 Re-using Layouts with &lt;include/&gt;
1252 </a>
1253 </li>
1254 <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
1255 Loading Views On Demand
1256 </a>
1257 </li>
1258 <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
1259 Making ListView Scrolling Smooth
1260 </a>
1261 </li>
1262 </ul>
1263 </li>
Scott Main8ac78802012-12-14 11:39:03 -08001264
Joe Malinf0f5efb2012-10-27 11:16:19 -07001265 <li class="nav-section">
1266 <div class="nav-section-header">
Scott Main5b50239c2013-12-17 14:59:05 -08001267 <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001268 zh-cn-lang="优化电池使用时间"
Scott Main22cc2762012-11-07 16:35:16 -08001269 ja-lang="電池消費量の最適化"
1270 es-lang="Cómo optimizar la duración de la batería"
1271 description=
1272 "How to minimize the amount of power your app requires by adapting to current
1273 power conditions and performing power-hungry tasks at proper intervals."
1274 >Optimizing Battery Life</a>
1275 </div>
1276 <ul>
Scott Main5b50239c2013-12-17 14:59:05 -08001277 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001278 zh-cn-lang="监控电池电量和充电状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001279 ja-lang="電池残量と充電状態の監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001280 es-lang="Cómo controlar el nivel de batería y el estado de carga"
Scott Mainddab47b2012-10-02 17:48:11 -07001281 >Monitoring the Battery Level and Charging State</a>
Scott Main50e990c2012-06-21 17:14:39 -07001282 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001283 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001284 zh-cn-lang="确定和监控基座对接状态和类型"
Scott Mainddab47b2012-10-02 17:48:11 -07001285 ja-lang="ホルダーの装着状態とタイプの特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001286 es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"
Scott Mainddab47b2012-10-02 17:48:11 -07001287 >Determining and Monitoring the Docking State and Type</a>
Scott Main50e990c2012-06-21 17:14:39 -07001288 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001289 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001290 zh-cn-lang="确定和监控网络连接状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001291 ja-lang="接続状態の特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001292 es-lang="Cómo determinar y controlar el estado de la conectividad"
Scott Mainddab47b2012-10-02 17:48:11 -07001293 >Determining and Monitoring the Connectivity Status</a>
Scott Main50e990c2012-06-21 17:14:39 -07001294 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001295 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001296 zh-cn-lang="根据需要操作广播接收器"
Scott Mainddab47b2012-10-02 17:48:11 -07001297 ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001298 es-lang="Cómo manipular los receptores de emisión bajo demanda"
Scott Mainddab47b2012-10-02 17:48:11 -07001299 >Manipulating Broadcast Receivers On Demand</a>
Scott Main50e990c2012-06-21 17:14:39 -07001300 </li>
1301 </ul>
1302 </li>
Joe Malin8dd62752012-11-26 14:06:35 -08001303 <li class="nav-section">
1304 <div class="nav-section-header">
1305 <a href="<?cs var:toroot ?>training/multiple-threads/index.html"
1306 description=
1307 "How to improve the performance and scalability of long-running operations by
1308 dispatching work to multiple threads.">
1309 Sending Operations to Multiple Threads</a>
1310 </div>
1311 <ul>
1312 <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html">
1313 Specifying the Code to Run on a Thread
1314 </a>
1315 </li>
1316 <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html">
1317 Creating a Manager for Multiple Threads
1318 </a>
1319 </li>
1320 <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html">
1321 Running Code on a Thread Pool Thread
1322 </a>
1323 </li>
1324 <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html">
1325 Communicating with the UI Thread
1326 </a>
1327 </li>
1328 </ul>
1329 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001330
Scott Main22cc2762012-11-07 16:35:16 -08001331 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001332 <a href="<?cs var:toroot ?>training/articles/perf-anr.html"
Scott Main22cc2762012-11-07 16:35:16 -08001333 description=
1334 "How to keep your app responsive to user interaction so the UI does not lock-up and
1335 display an &quot;Application Not Responding&quot; dialog."
1336 >Keeping Your App Responsive</a>
Scott Main50e990c2012-06-21 17:14:39 -07001337 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001338
Scott Main22cc2762012-11-07 16:35:16 -08001339 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001340 <a href="<?cs var:toroot ?>training/articles/perf-jni.html"
Scott Main22cc2762012-11-07 16:35:16 -08001341 description=
1342 "How to efficiently use the Java Native Interface with the Android NDK."
1343 >JNI Tips</a>
1344 </li>
Dirk Doughertyd5894212012-11-28 18:53:10 -08001345 <li>
1346 <a href="<?cs var:toroot ?>training/articles/smp.html"
1347 description=
1348 "Tips for coding Android apps on symmetric multiprocessor systems."
1349 >SMP Primer for Android</a>
1350 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001351 </ul>
1352 </li> <!-- end of Performance -->
Joe Malin3ddba7e2013-03-04 10:33:30 -08001353
1354
Scott Main50e990c2012-06-21 17:14:39 -07001355
Scott Main22cc2762012-11-07 16:35:16 -08001356 <li class="nav-section">
1357 <div class="nav-section-header">
1358 <a href="<?cs var:toroot ?>training/best-security.html">
1359 <span class="small">Best Practices for</span><br/>
1360 Security &amp; Privacy
1361 </a>
1362 </div>
1363 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001364 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001365 <a href="<?cs var:toroot ?>training/articles/security-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001366 description=
1367 "How to perform various tasks and keep your app's data and your user's data secure."
1368 >Security Tips</a>
1369 </li>
Scott Main00158362013-01-17 16:58:50 -08001370
1371 <li>
1372 <a href="<?cs var:toroot ?>training/articles/security-ssl.html"
1373 description=
1374 "How to ensure that your app is secure when performing network transactions."
1375 >Security with HTTPS and SSL</a>
1376 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001377
Scott Main50e990c2012-06-21 17:14:39 -07001378 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001379 <div class="nav-section-header">
1380 <a href="<?cs var:toroot ?>training/enterprise/index.html"
1381 description=
1382 "How to implement device management policies for enterprise-oriented apps."
1383 >Developing for Enterprise</a>
Scott Main50e990c2012-06-21 17:14:39 -07001384 </div>
1385 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001386 <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
1387 Enhancing Security with Device Management Policies
Scott Main50e990c2012-06-21 17:14:39 -07001388 </a>
1389 </li>
1390 </ul>
1391 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001392 </ul>
1393 </li>
1394 <!-- End security and user info -->
Scott Main50e990c2012-06-21 17:14:39 -07001395
quddusc2ef39522013-06-21 16:49:46 -07001396 <li class="nav-section">
1397 <div class="nav-section-header">
1398 <a href="<?cs var:toroot ?>training/testing.html">
1399 <span class="small">Best Practices for</span><br/>
1400 Testing
1401 </a>
1402 </div>
1403 <ul>
1404 <li class="nav-section">
1405 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html"
1406 description="How to test Activities in your Android applications.">
1407 Testing Your Activity
1408 </a></div>
1409 <ul>
1410 <li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html">
1411 <span class="en">Setting Up Your Test Environment</span>
1412 </a>
1413 </li>
1414 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html">
1415 <span class="en">Creating and Running a Test Case</span>
1416 </a>
1417 </li>
1418 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html">
1419 <span class="en">Testing UI Components</span>
1420 </a>
1421 </li>
1422 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html">
1423 <span class="en">Creating Unit Tests</span>
1424 </a>
1425 </li>
1426 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html">
1427 <span class="en">Creating Functional Tests</span>
1428 </a>
1429 </li>
1430 </ul>
1431 </li>
1432 </ul>
1433 </li>
1434 <!-- End best Testing -->
Scott Main50e990c2012-06-21 17:14:39 -07001435
Scott Main22cc2762012-11-07 16:35:16 -08001436 <li class="nav-section">
1437 <div class="nav-section-header">
1438 <a href="<?cs var:toroot ?>training/distribute.html">
1439 <span class="small">Using Google Play to</span><br/>
1440 Distribute &amp; Monetize
1441 </a>
1442 </div>
1443 <ul>
Quddus Chong768dba62012-12-08 17:06:30 -08001444 <li class="nav-section">
1445 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
1446 description="How to sell in-app products from your application using In-app Billing.">
1447 Selling In-app Products
1448 </a></div>
1449 <ul>
1450 <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
1451 <span class="en">Preparing Your App</span>
1452 </a>
1453 </li>
1454 <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
1455 <span class="en">Establishing Products for Sale</span>
1456 </a>
1457 </li>
1458 <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
1459 <span class="en">Purchasing Products</span>
1460 </a>
1461 </li>
1462 <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
1463 <span class="en">Testing Your App</span>
1464 </a>
1465 </li>
1466 </ul>
1467 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001468
Scott Main50e990c2012-06-21 17:14:39 -07001469 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001470 <div class="nav-section-header">
1471 <a href="<?cs var:toroot ?>training/multiple-apks/index.html"
1472 description=
1473 "How to publish your app on Google Play with separate APKs that target
1474 different devices, while using a single app listing."
1475 >Maintaining Multiple APKs</a>
1476 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001477 <ul>
1478 <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
Scott Main22cc2762012-11-07 16:35:16 -08001479 Creating Multiple APKs for Different API Levels
Scott Main50e990c2012-06-21 17:14:39 -07001480 </a>
1481 </li>
1482 <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
Scott Main22cc2762012-11-07 16:35:16 -08001483 Creating Multiple APKs for Different Screen Sizes
Scott Main50e990c2012-06-21 17:14:39 -07001484 </a>
1485 </li>
1486 <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
Scott Main22cc2762012-11-07 16:35:16 -08001487 Creating Multiple APKs for Different GL Textures
Scott Main50e990c2012-06-21 17:14:39 -07001488 </a>
1489 </li>
1490 <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
Scott Main22cc2762012-11-07 16:35:16 -08001491 Creating Multiple APKs with 2+ Dimensions
Scott Main50e990c2012-06-21 17:14:39 -07001492 </a>
1493 </li>
1494 </ul>
1495 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001496 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001497 <div class="nav-section-header">
1498 <a href="<?cs var:toroot ?>training/monetization/index.html"
1499 description=
1500 "How to implement monetization strategies for your app without compromising
1501 the user experience."
1502 >Monetizing Your App</a>
1503 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001504 <ul>
1505 <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
Scott Main22cc2762012-11-07 16:35:16 -08001506 Advertising without Compromising User Experience
Scott Main50e990c2012-06-21 17:14:39 -07001507 </a>
1508 </li>
1509 </ul>
1510 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001511 </ul>
1512 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001513 <!-- End best Publishing -->
1514
Scott Main50e990c2012-06-21 17:14:39 -07001515</ul><!-- nav -->
Scott Main50e990c2012-06-21 17:14:39 -07001516<script type="text/javascript">
1517<!--
1518 buildToggleLists();
1519 changeNavLang(getLangPref());
1520//-->
1521</script>