blob: a3c9dacea0f2a2175828677d3de98bbc69c2d91c [file] [log] [blame]
Scott Main50e990c2012-06-21 17:14:39 -07001<ul id="nav">
2
3
4 <li class="nav-section">
5 <div class="nav-section-header">
6 <a href="<?cs var:toroot ?>training/index.html">
Scott Main22cc2762012-11-07 16:35:16 -08007 Getting Started
Scott Main50e990c2012-06-21 17:14:39 -07008 </a>
9 </div>
10
11 <ul>
12 <li class="nav-section">
13 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -080014 <a href="<?cs var:toroot ?>training/basics/firstapp/index.html"
15 description=
16 "After you've installed the Android SDK, start with this class
17 to learn the basics about Android app development."
18 >Building Your First App</a>
Scott Main50e990c2012-06-21 17:14:39 -070019 </div>
20 <ul>
21 <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html">
Scott Main22cc2762012-11-07 16:35:16 -080022 Creating an Android Project
Scott Main50e990c2012-06-21 17:14:39 -070023 </a>
24 </li>
25 <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html">
Scott Main22cc2762012-11-07 16:35:16 -080026 Running Your Application
Scott Main50e990c2012-06-21 17:14:39 -070027 </a>
28 </li>
29 <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html">
Scott Main22cc2762012-11-07 16:35:16 -080030 Building a Simple User Interface
Scott Main50e990c2012-06-21 17:14:39 -070031 </a>
32 </li>
33 <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html">
Scott Main22cc2762012-11-07 16:35:16 -080034 Starting Another Activity
Scott Main50e990c2012-06-21 17:14:39 -070035 </a>
36 </li>
37 </ul>
38 </li>
39
40 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -080041 <div class="nav-section-header">
Scott Maind0413012013-07-19 19:04:45 -070042 <a href="<?cs var:toroot ?>training/basics/actionbar/index.html"
43 description=
44 "The action bar is one of the most important design elements you can implement for your
45app's activities. Although first introduced with API level 11, you can use the Support Library to
46include the action bar on devices running Android 2.1 or higher."
47 >Adding the Action Bar</a>
48 </div>
49 <ul>
50 <li><a href="<?cs var:toroot ?>training/basics/actionbar/setting-up.html">
51 Setting Up the Action Bar
52 </a>
53 </li>
54 <li><a href="<?cs var:toroot ?>training/basics/actionbar/adding-buttons.html">
55 Adding Action Buttons
56 </a>
57 </li>
58 <li><a href="<?cs var:toroot ?>training/basics/actionbar/styling.html">
59 Styling the Action Bar
60 </a>
61 </li>
62 <li><a href="<?cs var:toroot ?>training/basics/actionbar/overlaying.html">
63 Overlaying the Action Bar
64 </a>
65 </li>
66 </ul>
67 </li>
68
69 <li class="nav-section">
70 <div class="nav-section-header">
Scott Mainf1513912013-08-22 18:11:01 -070071 <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html"
72 description=
73 "How to build your app with alternative resources that provide an
74 optimized user experience on multiple device form factors using a single APK."
75 >Supporting Different Devices</a>
76 </div>
77 <ul>
78 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html">
79 Supporting Different Languages
80 </a>
81 </li>
82 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html">
83 Supporting Different Screens
84 </a>
85 </li>
86 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html">
87 Supporting Different Platform Versions
88 </a>
89 </li>
90 </ul>
91 </li>
92
93 <li class="nav-section">
94 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -080095 <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
96 description=
97 "How Android activities live and die and how to create
98 a seamless user experience by implementing lifecycle callback methods."
99 >Managing the Activity Lifecycle</a>
100 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700101 <ul>
102 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html">
Scott Main22cc2762012-11-07 16:35:16 -0800103 Starting an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700104 </a>
105 </li>
106 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
Scott Main22cc2762012-11-07 16:35:16 -0800107 Pausing and Resuming an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700108 </a>
109 </li>
110 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html">
Scott Main22cc2762012-11-07 16:35:16 -0800111 Stopping and Restarting an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700112 </a>
113 </li>
114 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800115 Recreating an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700116 </a>
117 </li>
118 </ul>
119 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700120
Scott Main50e990c2012-06-21 17:14:39 -0700121 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800122 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -0800123 <a href="<?cs var:toroot ?>training/basics/fragments/index.html"
124 description=
125 "How to build a user interface for your app that is flexible enough
126 to present multiple UI components on large screens and a more constrained set of
127 UI components on smaller screens&mdash;essential for building a single APK for both
128 phones and tablets."
129 >Building a Dynamic UI with Fragments</a>
130 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700131 <ul>
Scott Main50e990c2012-06-21 17:14:39 -0700132 <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800133 Creating a Fragment
Scott Main50e990c2012-06-21 17:14:39 -0700134 </a>
135 </li>
136 <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html">
Scott Main22cc2762012-11-07 16:35:16 -0800137 Building a Flexible UI
Scott Main50e990c2012-06-21 17:14:39 -0700138 </a>
139 </li>
140 <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800141 Communicating with Other Fragments
Scott Main50e990c2012-06-21 17:14:39 -0700142 </a>
143 </li>
144 </ul>
145 </li>
146
147 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800148 <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html"
149 description=
150 "How to save data on the device, whether it's temporary files, downloaded
151 app assets, user media, structured data, or something else."
152 >Saving Data</a>
153 </div>
Scott Main11f03b42012-09-07 15:26:39 -0700154 <ul>
155 <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
Scott Main22cc2762012-11-07 16:35:16 -0800156 Saving Key-Value Sets
Scott Main11f03b42012-09-07 15:26:39 -0700157 </a>
158 </li>
159 <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
Scott Main22cc2762012-11-07 16:35:16 -0800160 Saving Files
Scott Main11f03b42012-09-07 15:26:39 -0700161 </a>
162 </li>
163 <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
Scott Main22cc2762012-11-07 16:35:16 -0800164 Saving Data in SQL Databases
Scott Main11f03b42012-09-07 15:26:39 -0700165 </a>
166 </li>
167 </ul>
168 </li>
169
170 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800171 <div class="nav-section-header">
172 <a href="<?cs var:toroot ?>training/basics/intents/index.html"
173 description=
174 "How to build a user experience that leverages other apps available
175 on the device to perform advanced user tasks, such as capture a photo or view
176 an address on a map."
177 >Interacting with Other Apps</a>
178 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700179 <ul>
180 <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html">
Scott Main22cc2762012-11-07 16:35:16 -0800181 Sending the User to Another App
Scott Main50e990c2012-06-21 17:14:39 -0700182 </a>
183 </li>
184 <li><a href="<?cs var:toroot ?>training/basics/intents/result.html">
Scott Main22cc2762012-11-07 16:35:16 -0800185 Getting a Result from the Activity
Scott Main50e990c2012-06-21 17:14:39 -0700186 </a>
187 </li>
188 <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html">
Scott Main22cc2762012-11-07 16:35:16 -0800189 Allowing Other Apps to Start Your Activity
Scott Main50e990c2012-06-21 17:14:39 -0700190 </a>
191 </li>
192 </ul>
193 </li>
194
Scott Main22cc2762012-11-07 16:35:16 -0800195 <li class="nav-section">
196 <div class="nav-section-header">
197 <a href="<?cs var:toroot ?>training/sharing/index.html"
198 description=
199 "How to take your app interaction to the next level by sharing
200 information with other apps, receive information back, and provide a simple and
201 scalable way to perform Share actions with user content."
202 >Sharing Content</a>
203 </div>
204 <ul>
205 <li><a href="<?cs var:toroot ?>training/sharing/send.html">
206 Sending Content to Other Apps
207 </a>
208 </li>
209 <li><a href="<?cs var:toroot ?>training/sharing/receive.html">
210 Receiving Content from Other Apps
211 </a>
212 </li>
213 <li><a href="<?cs var:toroot ?>training/sharing/shareaction.html">
214 Adding an Easy Share Action
215 </a>
216 </li>
217 </ul>
218 </li>
Scott Main50e990c2012-06-21 17:14:39 -0700219 </ul>
Joe Malinf0f5efb2012-10-27 11:16:19 -0700220 </li><!-- end getting started -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800221
222
223
Scott Main22cc2762012-11-07 16:35:16 -0800224
Scott Main50e990c2012-06-21 17:14:39 -0700225 <li class="nav-section">
226 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -0800227 <a href="<?cs var:toroot ?>training/building-multimedia.html">
228 <span class="small">Building Apps with</span><br/>Multimedia
229 </a>
230 </div>
231 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800232
Scott Main22cc2762012-11-07 16:35:16 -0800233 <li class="nav-section">
234 <div class="nav-section-header">
235 <a href="<?cs var:toroot ?>training/managing-audio/index.html"
236 description=
237 "How to respond to hardware audio key presses, request audio focus
238 when playing audio, and respond appropriately to changes in audio focus."
239 >Managing Audio Playback</a>
240 </div>
241 <ul>
242 <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
243 Controlling Your App's Volume and Playback
244 </a>
245 </li>
246 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
247 Managing Audio Focus
248 </a>
249 </li>
250 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
251 Dealing with Audio Output Hardware
252 </a>
253 </li>
254 </ul>
255 </li>
256
257 <li class="nav-section">
258 <div class="nav-section-header">
259 <a href="<?cs var:toroot ?>training/camera/index.html"
260 description=
261 "How to leverage existing camera apps on the user's device to capture
262 photos or control the camera hardware directly and build your own camera app."
263 >Capturing Photos</a>
264 </div>
265 <ul>
266 <li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
267 Taking Photos Simply
268 </a>
269 </li>
270 <li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
271 Recording Videos Simply
272 </a>
273 </li>
274 <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
275 Controlling the Camera
276 </a>
277 </li>
278 </ul>
279 </li>
280 </ul>
281 </li>
282 <!-- End multimedia -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800283
284
Scott Main22cc2762012-11-07 16:35:16 -0800285
286 <li class="nav-section">
287 <div class="nav-section-header">
288 <a href="<?cs var:toroot ?>training/building-graphics.html">
289 <span class="small">Building Apps with</span><br/>Graphics &amp; Animation
290 </a>
291 </div>
292 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800293
Scott Main22cc2762012-11-07 16:35:16 -0800294 <li class="nav-section">
295 <div class="nav-section-header">
296 <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html"
297 description=
298 "How to load and process bitmaps while keeping your user interface
299 responsive and avoid exceeding memory limits."
300 >Displaying Bitmaps Efficiently</a>
301 </div>
302 <ul>
303 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
304 Loading Large Bitmaps Efficiently
305 </a>
306 </li>
307 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html">
308 Processing Bitmaps Off the UI Thread
309 </a>
310 </li>
311 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html">
312 Caching Bitmaps
313 </a>
314 </li>
kmccormick75715422013-03-04 15:25:40 -0800315 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html">
316 Managing Bitmap Memory
317 </a>
318 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800319 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
320 Displaying Bitmaps in Your UI
321 </a></li>
322 </ul>
323 </li>
324
325 <li class="nav-section">
326 <div class="nav-section-header">
327 <a href="<?cs var:toroot?>training/graphics/opengl/index.html"
328 description=
329 "How to create OpenGL graphics within the Android app framework
330 and respond to touch input."
331 >Displaying Graphics with OpenGL ES</a>
332 </div>
333 <ul>
334 <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
335 Building an OpenGL ES Environment
336 </a>
337 </li>
338 <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
339 Defining Shapes
340 </a>
341 </li>
342 <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
343 Drawing Shapes
344 </a>
345 </li>
346 <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
347 Applying Projection and Camera Views
348 </a>
349 </li>
350 <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
351 Adding Motion
352 </a>
353 </li>
354 <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
355 Responding to Touch Events
356 </a>
357 </li>
358 </ul>
359 </li>
360 <li class="nav-section">
361 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html"
362 description=
363 "How to add transitional animations to your user interface.">
364 Adding Animations
365 </a></div>
366 <ul>
367 <li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
368 Crossfading Two Views
369 </a>
370 </li>
371 <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
372 Using ViewPager for Screen Slide
373 </a>
374 </li>
375 <li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
376 Displaying Card Flip Animations
377 </a>
378 </li>
379 <li><a href="<?cs var:toroot ?>training/animation/zoom.html">
380 Zooming a View
381 </a>
382 </li>
383 <li><a href="<?cs var:toroot ?>training/animation/layout.html">
384 Animating Layout Changes
385 </a>
386 </li>
387 </ul>
388 </li>
389 </ul>
390 </li>
391 <!-- End graphics and animation -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800392
Scott Main22cc2762012-11-07 16:35:16 -0800393
394 <li class="nav-section">
395 <div class="nav-section-header">
396 <a href="<?cs var:toroot ?>training/building-connectivity.html">
397 <span class="small">Building Apps with</span><br/>
398 Connectivity &amp; the Cloud
399 </a>
400 </div>
401 <ul>
402
Scott Main22cc2762012-11-07 16:35:16 -0800403 <li class="nav-section">
404 <div class="nav-section-header">
405 <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html"
406 description=
407 "How to find and connect to local devices using Network Service
Scott Mainf5e09702013-08-22 17:19:17 -0700408 Discovery and how to create peer-to-peer connections with Wi-Fi."
Scott Main22cc2762012-11-07 16:35:16 -0800409 >Connecting Devices Wirelessly</a>
410 </div>
411 <ul>
412 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
413 Using Network Service Discovery
414 </a>
415 </li>
416 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
Scott Mainf5e09702013-08-22 17:19:17 -0700417 Creating P2P Connections with Wi-Fi
Scott Main22cc2762012-11-07 16:35:16 -0800418 </a>
419 </li>
420 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
Scott Main2d006d22013-09-16 13:11:07 -0700421 Using Wi-Fi P2P for Service Discovery
Scott Main22cc2762012-11-07 16:35:16 -0800422 </a>
423 </li>
424 </ul>
425 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800426
Scott Main22cc2762012-11-07 16:35:16 -0800427 <li class="nav-section">
428 <div class="nav-section-header">
429 <a href="<?cs var:toroot ?>training/basics/network-ops/index.html"
430 description=
431 "How to create a network connection, monitor the connection for changes
432 in connectivity, and perform transactions with XML data."
433 >Performing Network Operations</a>
434 </div>
435 <ul>
436 <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
437 Connecting to the Network
438 </a>
439 </li>
440 <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
441 Managing Network Usage
442 </a>
443 </li>
444 <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
445 Parsing XML Data
446 </a>
447 </li>
448 </ul>
449 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800450 <li class="nav-section">
451 <div class="nav-section-header">
452 <a href="<?cs var:toroot ?>training/efficient-downloads/index.html"
453 description=
454 "How to minimize your app's impact on the battery when performing downloads
455 and other network transactions."
456 >Transferring Data Without Draining the Battery</a>
457 </div>
458 <ul>
459 <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
460 Optimizing Downloads for Efficient Network Access
461 </a>
462 </li>
463 <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
464 Minimizing the Effect of Regular Updates
465 </a>
466 </li>
467 <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
468 Redundant Downloads are Redundant
469 </a>
470 </li>
471 <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
472 Modifying Patterns Based on the Connectivity Type
473 </a>
474 </li>
475 </ul>
476 </li>
477
478 <li class="nav-section">
479 <div class="nav-section-header">
480 <a href="<?cs var:toroot ?>training/cloudsync/index.html"
481 description=
482 "How to sync and back up app and user data to remote web services in the
483 cloud and how to restore the data back to multiple devices."
484 >Syncing to the Cloud</a>
485 </div>
486 <ul>
487 <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
488 Using the Backup API
489 </a>
490 </li>
491 <li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
492 Making the Most of Google Cloud Messaging
493 </a>
494 </li>
495 </ul>
kmccormick71baac12013-06-11 13:17:55 -0700496 <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html"
497 description=
498 "How to design a robust conflict resolution strategy for apps that save data to the cloud."
499 >Resolving Cloud Save Conflicts
500 </a>
501 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800502 </li>
Joe Maline9df5112013-06-07 13:38:00 -0700503 <li class="nav-section">
504 <div class="nav-section-header">
505 <a href="<?cs var:toroot ?>training/sync-adapters/index.html"
506 description="How to transfer data between the cloud and the device using the Android
507 sync adapter framework"
508 >Transferring Data Using Sync Adapters</a>
509 </div>
510 <ul>
511 <li>
512 <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html">
513 Creating a Stub Authenticator
514 </a>
515 </li>
516 <li>
517 <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html">
518 Creating a Stub Content Provider
519 </a>
520 </li>
521 <li>
522 <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html">
523 Creating a Sync Adapter
524 </a>
525 </li>
526 <li>
527 <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html">
528 Running a Sync Adapter
529 </a>
530 </li>
531 </ul>
532 </li>
533
Scott Main22cc2762012-11-07 16:35:16 -0800534 </ul>
535 </li>
536 <!-- End connectivity and cloud -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800537
538
Scott Main22cc2762012-11-07 16:35:16 -0800539
540 <li class="nav-section">
541 <div class="nav-section-header">
542 <a href="<?cs var:toroot ?>training/building-userinfo.html">
543 <span class="small">Building Apps with</span><br/>
544 User Info &amp; Location
545 </a>
546 </div>
547 <ul>
Joe Malin421435d2013-01-15 15:06:08 -0800548 <li class="nav-section">
549 <div class="nav-section-header">
550 <a href="<?cs var:toroot ?>training/contacts-provider/index.html"
551 description=
552 "How to use Android's central address book, the Contacts Provider, to
553 display contacts and their details and modify contact information.">
554 Accessing Contacts Data</a>
555 </div>
556 <ul>
557 <li>
558 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html">
559 Retrieving a List of Contacts
560 </a>
561 </li>
562 <li>
563 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html">
564 Retrieving Details for a Contact
565 </a>
566 </li>
567 <li>
568 <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html">
569 Modifying Contacts Using Intents
570 </a>
571 </li>
572 <li>
573 <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html">
574 Displaying the Quick Contact Badge
575 </a>
576 </li>
577 </ul>
578 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800579 <li class="nav-section">
580 <div class="nav-section-header">
581 <a href="<?cs var:toroot ?>training/id-auth/index.html"
582 description=
583 "How to remember the user by account, authenticate the user, acquire user permission
584 for the user's online data, and create custom accounts on the device."
585 >Remembering Users</a>
586 </div>
587 <ul>
588 <li><a href="<?cs var:toroot ?>training/id-auth/identify.html">
589 Remembering Your User
590 </a>
591 </li>
592 <li><a href="<?cs var:toroot ?>training/id-auth/authenticate.html">
593 Authenticating to OAuth2 Services
594 </a>
595 </li>
596 <li><a href="<?cs var:toroot ?>training/id-auth/custom_auth.html">
597 Creating a Custom Account Type
598 </a>
599 </li>
600 </ul>
601 </li>
602
603 <li class="nav-section">
604 <div class="nav-section-header">
Joe Malin3ddba7e2013-03-04 10:33:30 -0800605 <a href="<?cs var:toroot ?>training/location/index.html"
606 description="How to add location-aware features to your app by getting the user's current location.">
607 Making Your App Location-Aware
608 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800609 </div>
610 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800611 <li>
612 <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
613 Retrieving the Current Location
614 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800615 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800616 <li>
617 <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
618 Receiving Location Updates
619 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800620 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800621 <li>
622 <a href="<?cs var:toroot ?>training/location/display-address.html">
Scott Main22cc2762012-11-07 16:35:16 -0800623 Displaying a Location Address
624 </a>
625 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800626 <li><a href="<?cs var:toroot ?>training/location/geofencing.html">
627 Creating and Monitoring Geofences
628 </a>
629 </li>
630 <li><a href="<?cs var:toroot ?>training/location/activity-recognition.html">
631 Recognizing the User's Current Activity
632 </a>
633 </li>
Joe Malin72fdbc82013-07-26 17:26:52 -0700634 <li><a href="<?cs var:toroot ?>training/location/location-testing.html">
635 Testing Using Mock Locations
636 </a>
637 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800638 </ul>
639 </li>
640 </ul>
641 </li>
642 <!-- End privacy and location -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800643
644
Scott Main22cc2762012-11-07 16:35:16 -0800645
646 <li class="nav-section">
647 <div class="nav-section-header">
648 <a href="<?cs var:toroot ?>training/best-ux.html">
649 <span class="small">Best Practices for</span><br/>
650 User Experience &amp; UI
Scott Main50e990c2012-06-21 17:14:39 -0700651 </a>
652 </div>
653 <ul>
654
655 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800656 <div class="nav-section-header">
657 <a href="<?cs var:toroot ?>training/design-navigation/index.html"
658 description=
659 "How to plan your app's screen hierarchy and forms of navigation so users can
660 effectively and intuitively traverse your app content using various navigation
661 patterns."
662 >Designing Effective Navigation</a>
Scott Mainddab47b2012-10-02 17:48:11 -0700663 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700664 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800665 <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
666 Planning Screens and Their Relationships
667 </a>
668 </li>
669 <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
670 Planning for Multiple Touchscreen Sizes
671 </a>
672 </li>
673 <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
674 Providing Descendant and Lateral Navigation
675 </a>
676 </li>
677 <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
678 Providing Ancestral and Temporal Navigation
679 </a>
680 </li>
681 <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
682 Putting it All Together: Wireframing the Example App
683 </a>
684 </li>
685 </ul>
686 </li>
687
688 <li class="nav-section">
689 <div class="nav-section-header">
690 <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
691 description=
Scott Main7c840552013-03-26 18:53:01 -0700692 "How to implement various navigation patterns such as swipe views,
693 a navigation drawer, and up navigation."
Scott Main22cc2762012-11-07 16:35:16 -0800694 >Implementing Effective Navigation</a>
695 </div>
696 <ul>
697 <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
Scott Main7c840552013-03-26 18:53:01 -0700698 Creating Swipe Views with Tabs
699 </a>
700 </li>
701 <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
702 Creating a Navigation Drawer
Scott Main22cc2762012-11-07 16:35:16 -0800703 </a>
704 </li>
705 <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
Scott Main7c840552013-03-26 18:53:01 -0700706 Providing Up Navigation
Scott Main22cc2762012-11-07 16:35:16 -0800707 </a>
708 </li>
709 <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
Scott Main7c840552013-03-26 18:53:01 -0700710 Providing Proper Back Navigation
Scott Main22cc2762012-11-07 16:35:16 -0800711 </a>
712 </li>
713 <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
714 Implementing Descendant Navigation
715 </a>
716 </li>
717 </ul>
718 </li>
&& repo sync -j80aae0002012-10-04 16:34:23 -0700719
720 <li class="nav-section">
721 <div class="nav-section-header">
722 <a href="<?cs var:toroot ?>training/notify-user/index.html"
723 description=
Joe Malinf0f5efb2012-10-27 11:16:19 -0700724 "How to display messages called notifications outside of
&& repo sync -j80aae0002012-10-04 16:34:23 -0700725 your application's UI."
726 >Notifying the User</a>
727 </div>
728 <ul>
729 <li>
730 <a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
731 Building a Notification
732 </a>
733 </li>
734 <li>
735 <a href="<?cs var:toroot ?>training/notify-user/navigation.html">
736 Preserving Navigation when Starting an Activity
737 </a>
738 </li>
739 <li>
740 <a href="<?cs var:toroot ?>training/notify-user/managing.html">
741 Updating Notifications
742 </a>
743 </li>
744 <li>
745 <a href="<?cs var:toroot ?>training/notify-user/expanded.html">
746 Using Big View Styles
747 </a>
748 </li>
749 <li>
750 <a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
751 Displaying Progress in a Notification
752 </a>
753 </li>
754 </ul>
755 </li>
756
757 <li class="nav-section">
758 <div class="nav-section-header">
759 <a href="<?cs var:toroot ?>training/search/index.html"
760 description=
761 "How to properly add a search interface to your app and create a searchable database."
762 >Adding Search Functionality</a>
763 </div>
764 <ul>
765 <li><a href="<?cs var:toroot ?>training/search/setup.html">
766 Setting up the Search Interface
767 </a>
768 </li>
769 <li><a href="<?cs var:toroot ?>training/search/search.html">
770 Storing and Searching for Data
771 </a>
772 </li>
773 <li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
774 Remaining Backward Compatible
775 </a>
776 </li>
777 </ul>
778 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800779
780
Scott Main22cc2762012-11-07 16:35:16 -0800781 <li class="nav-section">
782 <div class="nav-section-header">
783 <a href="/training/multiscreen/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700784 zh-cn-lang="针对多种屏幕进行设计"
Scott Main22cc2762012-11-07 16:35:16 -0800785 ja-lang="複数画面のデザイン"
786 es-lang="Cómo diseñar aplicaciones para varias pantallas"
787 description=
788 "How to build a user interface that's flexible enough to
789 fit perfectly on any screen and how to create different interaction
790 patterns that are optimized for different screen sizes."
791 >Designing for Multiple Screens</a>
792 </div>
793 <ul>
794 <li><a href="/training/multiscreen/screensizes.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700795 zh-cn-lang="支持各种屏幕尺寸"
Scott Mainddab47b2012-10-02 17:48:11 -0700796 ko-lang="다양한 화면 크기 지원"
797 ja-lang="さまざまな画面サイズのサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700798 es-lang="Cómo admitir varios tamaños de pantalla"
Scott Main22cc2762012-11-07 16:35:16 -0800799 >Supporting Different Screen Sizes</a>
Scott Main50e990c2012-06-21 17:14:39 -0700800 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800801 <li><a href="/training/multiscreen/screendensities.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700802 zh-cn-lang="支持各种屏幕密度"
Scott Mainddab47b2012-10-02 17:48:11 -0700803 ja-lang="さまざまな画面密度のサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700804 es-lang="Cómo admitir varias densidades de pantalla"
Scott Mainddab47b2012-10-02 17:48:11 -0700805 >Supporting Different Screen Densities</a>
Scott Main50e990c2012-06-21 17:14:39 -0700806 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800807 <li><a href="/training/multiscreen/adaptui.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700808 zh-cn-lang="实施自适应用户界面流程"
Scott Mainddab47b2012-10-02 17:48:11 -0700809 ja-lang="順応性のある UI フローの実装"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700810 es-lang="Cómo implementar interfaces de usuario adaptables"
Scott Mainddab47b2012-10-02 17:48:11 -0700811 >Implementing Adaptive UI Flows</a>
Scott Main50e990c2012-06-21 17:14:39 -0700812 </li>
813 </ul>
814 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700815
Scott Main50e990c2012-06-21 17:14:39 -0700816 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800817 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/tv/index.html"
818 description=
819 "How to optimize your app's user interface and user input for
820 the &quot;ten foot experience&quot; of a TV screen."
821 >Designing for TV</a>
822 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700823 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800824 <li><a href="<?cs var:toroot ?>training/tv/optimizing-layouts-tv.html">
825 Optimizing Layouts for TV
Scott Main50e990c2012-06-21 17:14:39 -0700826 </a>
827 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800828 <li><a href="<?cs var:toroot ?>training/tv/optimizing-navigation-tv.html">
829 Optimizing Navigation for TV
Scott Main50e990c2012-06-21 17:14:39 -0700830 </a>
831 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800832 <li><a href="<?cs var:toroot ?>training/tv/unsupported-features-tv.html">
833 Handling Features Not Supported on TV
Scott Main50e990c2012-06-21 17:14:39 -0700834 </a>
835 </li>
836 </ul>
837 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800838
Scott Main50e990c2012-06-21 17:14:39 -0700839 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800840 <div class="nav-section-header">
841 <a href="<?cs var:toroot ?>training/custom-views/index.html"
842 description=
843 "How to build custom UI widgets that are interactive and smooth."
844 >Creating Custom Views</a>
845 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700846 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800847 <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
848 Creating a Custom View Class
Scott Main50e990c2012-06-21 17:14:39 -0700849 </a>
850 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800851 <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
852 Implementing Custom Drawing
Scott Main50e990c2012-06-21 17:14:39 -0700853 </a>
854 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800855 <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
856 Making the View Interactive
857 </a>
858 </li>
859 <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
860 Optimizing the View
Scott Main50e990c2012-06-21 17:14:39 -0700861 </a>
862 </li>
863 </ul>
864 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700865
Scott Main50e990c2012-06-21 17:14:39 -0700866 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800867 <div class="nav-section-header">
868 <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
869 description=
870 "How to use UI components and other APIs from the more recent versions of Android
871 while remaining compatible with older versions of the platform."
872 >Creating Backward-Compatible UIs</a>
Scott Mainddab47b2012-10-02 17:48:11 -0700873 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700874 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800875 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
876 Abstracting the New APIs
877 </a>
878 </li>
879 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
880 Proxying to the New APIs
881 </a>
882 </li>
883 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
884 Creating an Implementation with Older APIs
885 </a>
886 </li>
887 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
888 Using the Version-Aware Component
889 </a>
890 </li>
891 </ul>
892 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800893
Scott Main22cc2762012-11-07 16:35:16 -0800894 <li class="nav-section">
895 <div class="nav-section-header">
896 <a href="<?cs var:toroot ?>training/accessibility/index.html"
897 description=
898 "How to make your app accessible to users with vision
899 impairment or other physical disabilities."
900 >Implementing Accessibility</a>
901 </div>
902 <ul>
903 <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
904 Developing Accessible Applications
905 </a>
906 </li>
907 <li><a href="<?cs var:toroot ?>training/accessibility/service.html">
908 Developing Accessibility Services
909 </a>
910 </li>
911 </ul>
912 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800913
Scott Main22cc2762012-11-07 16:35:16 -0800914 </ul>
915 </li>
916 <!-- End best UX and UI -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800917
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800918
&& repo sync -j8518edbf2012-11-30 16:28:27 -0800919 <li class="nav-section">
920 <div class="nav-section-header">
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800921 <a href="<?cs var:toroot ?>training/best-user-input.html">
&& repo sync -j8518edbf2012-11-30 16:28:27 -0800922 <span class="small">Best Practices for</span><br/>
923 User Input
924 </a>
925 </div>
926 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800927
&& repo sync -j8518edbf2012-11-30 16:28:27 -0800928 <li class="nav-section">
929 <div class="nav-section-header">
930 <a href="<?cs var:toroot ?>training/gestures/index.html"
931 description=
932 "How to write apps that allow users to interact with the touch screen via touch gestures."
933 >Using Touch Gestures</a>
934 </div>
935 <ul>
936 <li><a href="<?cs var:toroot ?>training/gestures/detector.html">
937 Detecting Common Gestures
938 </a>
939 </li>
940 <li><a href="<?cs var:toroot ?>training/gestures/movement.html">
941 Tracking Movement
942 </a>
943 </li>
944 <li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
945 Animating a Scroll Gesture
946 </a>
947 </li>
948 <li><a href="<?cs var:toroot ?>training/gestures/multi.html">
949 Handling Multi-Touch Gestures
950 </a>
951 </li>
952 <li><a href="<?cs var:toroot ?>training/gestures/scale.html">
953 Dragging and Scaling
954 </a>
955 </li>
956 <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
957 Managing Touch Events in a ViewGroup
958 </a>
959 </li>
960 </ul>
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800961 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800962
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800963 <li class="nav-section">
964 <div class="nav-section-header">
965 <a href="<?cs var:toroot ?>training/keyboard-input/index.html"
966 description=
967 "How to specify the appearance and behaviors of soft input methods (such
968 as on-screen keyboards) and how to optimize the experience with
969 hardware keyboards."
970 >Handling Keyboard Input</a>
971 </div>
972 <ul>
973 <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html">
974 Specifying the Input Method Type
975 </a>
976 </li>
977 <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html">
978 Handling Input Method Visibility
979 </a>
980 </li>
981 <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html">
982 Supporting Keyboard Navigation
983 </a>
984 </li>
985 <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html">
986 Handling Keyboard Actions
987 </a>
988 </li>
989 </ul>
990 </li>
991 </ul>
Joe Malin421435d2013-01-15 15:06:08 -0800992 </li> <!-- end of User Input -->
Scott Main22cc2762012-11-07 16:35:16 -0800993
994 <li class="nav-section">
995 <div class="nav-section-header">
Katie McCormick7bdb3f62013-09-05 14:46:20 -0700996 <a href="<?cs var:toroot ?>training/best-background.html">
997 <span class="small">Best Practices for</span><br/>
998 Background Jobs
999 </a>
1000 </div>
1001 <ul>
1002
1003 <li class="nav-section">
1004 <div class="nav-section-header">
1005 <a href="<?cs var:toroot ?>training/run-background-service/index.html"
1006 description=
1007 "How to improve UI performance and responsiveness by sending work to a
1008 Service running in the background"
1009 >Running in a Background Service</a>
1010 </div>
1011 <ul>
1012 <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
1013 Creating a Background Service
1014 </a>
1015 </li>
1016 <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
1017 Sending Work Requests to the Background Service
1018 </a>
1019 </li>
1020 <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
1021 Reporting Work Status
1022 </a>
1023 </li>
1024 </ul>
1025 </li>
1026
1027 <li class="nav-section">
1028 <div class="nav-section-header">
1029 <a href="<?cs var:toroot ?>training/load-data-background/index.html"
1030 description="How to use CursorLoader to query data without
1031 affecting UI responsiveness."
1032 >Loading Data in the Background</a>
1033 </div>
1034 <ul>
1035 <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
1036 Running a Query with a CursorLoader</a>
1037 </li>
1038 <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
1039 Handling the Results</a>
1040 </li>
1041 </ul>
1042 </li>
1043
1044 <li class="nav-section">
1045 <div class="nav-section-header">
1046 <a href="<?cs var:toroot ?>training/scheduling/index.html"
1047 description="How to use repeating alarms and wake locks
1048 to run background jobs."
1049 >Managing Device Awake State</a>
1050 </div>
1051 <ul>
1052 <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html">
1053 Keeping the Device Awake</a>
1054 </li>
1055 <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html">
1056 Scheduling Repeating Alarms</a>
1057 </li>
1058 </ul>
1059 </li>
1060 </ul>
1061 </li> <!-- end of Background Jobs -->
1062
1063 <li class="nav-section">
1064 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -08001065 <a href="<?cs var:toroot ?>training/best-performance.html">
1066 <span class="small">Best Practices for</span><br/>
1067 Performance
1068 </a>
1069 </div>
1070 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001071
Scott Main22cc2762012-11-07 16:35:16 -08001072 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001073 <a href="<?cs var:toroot ?>training/articles/perf-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001074 description=
1075 "How to optimize your app's performance in various ways to improve its
1076 responsiveness and battery efficiency."
1077 >Performance Tips</a>
1078 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001079
Scott Main22cc2762012-11-07 16:35:16 -08001080 <li class="nav-section">
1081 <div class="nav-section-header">
1082 <a href="<?cs var:toroot ?>training/improving-layouts/index.html"
1083 description=
1084 "How to identify problems in your app's layout performance and improve the UI
1085 responsiveness."
1086 >Improving Layout Performance</a>
1087 </div>
1088 <ul>
1089 <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
1090 Optimizing Layout Hierarchies
1091 </a>
1092 </li>
1093 <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
1094 Re-using Layouts with &lt;include/&gt;
1095 </a>
1096 </li>
1097 <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
1098 Loading Views On Demand
1099 </a>
1100 </li>
1101 <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
1102 Making ListView Scrolling Smooth
1103 </a>
1104 </li>
1105 </ul>
1106 </li>
Scott Main8ac78802012-12-14 11:39:03 -08001107
Joe Malinf0f5efb2012-10-27 11:16:19 -07001108 <li class="nav-section">
1109 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -08001110 <a href="/training/monitoring-device-state/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001111 zh-cn-lang="优化电池使用时间"
Scott Main22cc2762012-11-07 16:35:16 -08001112 ja-lang="電池消費量の最適化"
1113 es-lang="Cómo optimizar la duración de la batería"
1114 description=
1115 "How to minimize the amount of power your app requires by adapting to current
1116 power conditions and performing power-hungry tasks at proper intervals."
1117 >Optimizing Battery Life</a>
1118 </div>
1119 <ul>
1120 <li><a href="/training/monitoring-device-state/battery-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001121 zh-cn-lang="监控电池电量和充电状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001122 ja-lang="電池残量と充電状態の監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001123 es-lang="Cómo controlar el nivel de batería y el estado de carga"
Scott Mainddab47b2012-10-02 17:48:11 -07001124 >Monitoring the Battery Level and Charging State</a>
Scott Main50e990c2012-06-21 17:14:39 -07001125 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001126 <li><a href="/training/monitoring-device-state/docking-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001127 zh-cn-lang="确定和监控基座对接状态和类型"
Scott Mainddab47b2012-10-02 17:48:11 -07001128 ja-lang="ホルダーの装着状態とタイプの特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001129 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 -07001130 >Determining and Monitoring the Docking State and Type</a>
Scott Main50e990c2012-06-21 17:14:39 -07001131 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001132 <li><a href="/training/monitoring-device-state/connectivity-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001133 zh-cn-lang="确定和监控网络连接状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001134 ja-lang="接続状態の特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001135 es-lang="Cómo determinar y controlar el estado de la conectividad"
Scott Mainddab47b2012-10-02 17:48:11 -07001136 >Determining and Monitoring the Connectivity Status</a>
Scott Main50e990c2012-06-21 17:14:39 -07001137 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001138 <li><a href="/training/monitoring-device-state/manifest-receivers.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001139 zh-cn-lang="根据需要操作广播接收器"
Scott Mainddab47b2012-10-02 17:48:11 -07001140 ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001141 es-lang="Cómo manipular los receptores de emisión bajo demanda"
Scott Mainddab47b2012-10-02 17:48:11 -07001142 >Manipulating Broadcast Receivers On Demand</a>
Scott Main50e990c2012-06-21 17:14:39 -07001143 </li>
1144 </ul>
1145 </li>
Joe Malin8dd62752012-11-26 14:06:35 -08001146 <li class="nav-section">
1147 <div class="nav-section-header">
1148 <a href="<?cs var:toroot ?>training/multiple-threads/index.html"
1149 description=
1150 "How to improve the performance and scalability of long-running operations by
1151 dispatching work to multiple threads.">
1152 Sending Operations to Multiple Threads</a>
1153 </div>
1154 <ul>
1155 <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html">
1156 Specifying the Code to Run on a Thread
1157 </a>
1158 </li>
1159 <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html">
1160 Creating a Manager for Multiple Threads
1161 </a>
1162 </li>
1163 <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html">
1164 Running Code on a Thread Pool Thread
1165 </a>
1166 </li>
1167 <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html">
1168 Communicating with the UI Thread
1169 </a>
1170 </li>
1171 </ul>
1172 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001173
Scott Main22cc2762012-11-07 16:35:16 -08001174 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001175 <a href="<?cs var:toroot ?>training/articles/perf-anr.html"
Scott Main22cc2762012-11-07 16:35:16 -08001176 description=
1177 "How to keep your app responsive to user interaction so the UI does not lock-up and
1178 display an &quot;Application Not Responding&quot; dialog."
1179 >Keeping Your App Responsive</a>
Scott Main50e990c2012-06-21 17:14:39 -07001180 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001181
Scott Main22cc2762012-11-07 16:35:16 -08001182 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001183 <a href="<?cs var:toroot ?>training/articles/perf-jni.html"
Scott Main22cc2762012-11-07 16:35:16 -08001184 description=
1185 "How to efficiently use the Java Native Interface with the Android NDK."
1186 >JNI Tips</a>
1187 </li>
Dirk Doughertyd5894212012-11-28 18:53:10 -08001188 <li>
1189 <a href="<?cs var:toroot ?>training/articles/smp.html"
1190 description=
1191 "Tips for coding Android apps on symmetric multiprocessor systems."
1192 >SMP Primer for Android</a>
1193 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001194 </ul>
1195 </li> <!-- end of Performance -->
Joe Malin3ddba7e2013-03-04 10:33:30 -08001196
1197
Scott Main50e990c2012-06-21 17:14:39 -07001198
Scott Main22cc2762012-11-07 16:35:16 -08001199 <li class="nav-section">
1200 <div class="nav-section-header">
1201 <a href="<?cs var:toroot ?>training/best-security.html">
1202 <span class="small">Best Practices for</span><br/>
1203 Security &amp; Privacy
1204 </a>
1205 </div>
1206 <ul>
1207
1208 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001209 <a href="<?cs var:toroot ?>training/articles/security-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001210 description=
1211 "How to perform various tasks and keep your app's data and your user's data secure."
1212 >Security Tips</a>
1213 </li>
Scott Main00158362013-01-17 16:58:50 -08001214
1215 <li>
1216 <a href="<?cs var:toroot ?>training/articles/security-ssl.html"
1217 description=
1218 "How to ensure that your app is secure when performing network transactions."
1219 >Security with HTTPS and SSL</a>
1220 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001221
Scott Main50e990c2012-06-21 17:14:39 -07001222 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001223 <div class="nav-section-header">
1224 <a href="<?cs var:toroot ?>training/enterprise/index.html"
1225 description=
1226 "How to implement device management policies for enterprise-oriented apps."
1227 >Developing for Enterprise</a>
Scott Main50e990c2012-06-21 17:14:39 -07001228 </div>
1229 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001230 <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
1231 Enhancing Security with Device Management Policies
Scott Main50e990c2012-06-21 17:14:39 -07001232 </a>
1233 </li>
1234 </ul>
1235 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001236 </ul>
1237 </li>
1238 <!-- End security and user info -->
Scott Main50e990c2012-06-21 17:14:39 -07001239
quddusc2ef39522013-06-21 16:49:46 -07001240 <li class="nav-section">
1241 <div class="nav-section-header">
1242 <a href="<?cs var:toroot ?>training/testing.html">
1243 <span class="small">Best Practices for</span><br/>
1244 Testing
1245 </a>
1246 </div>
1247 <ul>
1248 <li class="nav-section">
1249 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html"
1250 description="How to test Activities in your Android applications.">
1251 Testing Your Activity
1252 </a></div>
1253 <ul>
1254 <li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html">
1255 <span class="en">Setting Up Your Test Environment</span>
1256 </a>
1257 </li>
1258 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html">
1259 <span class="en">Creating and Running a Test Case</span>
1260 </a>
1261 </li>
1262 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html">
1263 <span class="en">Testing UI Components</span>
1264 </a>
1265 </li>
1266 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html">
1267 <span class="en">Creating Unit Tests</span>
1268 </a>
1269 </li>
1270 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html">
1271 <span class="en">Creating Functional Tests</span>
1272 </a>
1273 </li>
1274 </ul>
1275 </li>
1276 </ul>
1277 </li>
1278 <!-- End best Testing -->
Scott Main50e990c2012-06-21 17:14:39 -07001279
Scott Main22cc2762012-11-07 16:35:16 -08001280 <li class="nav-section">
1281 <div class="nav-section-header">
1282 <a href="<?cs var:toroot ?>training/distribute.html">
1283 <span class="small">Using Google Play to</span><br/>
1284 Distribute &amp; Monetize
1285 </a>
1286 </div>
1287 <ul>
Quddus Chong768dba62012-12-08 17:06:30 -08001288 <li class="nav-section">
1289 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
1290 description="How to sell in-app products from your application using In-app Billing.">
1291 Selling In-app Products
1292 </a></div>
1293 <ul>
1294 <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
1295 <span class="en">Preparing Your App</span>
1296 </a>
1297 </li>
1298 <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
1299 <span class="en">Establishing Products for Sale</span>
1300 </a>
1301 </li>
1302 <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
1303 <span class="en">Purchasing Products</span>
1304 </a>
1305 </li>
1306 <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
1307 <span class="en">Testing Your App</span>
1308 </a>
1309 </li>
1310 </ul>
1311 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001312
Scott Main50e990c2012-06-21 17:14:39 -07001313 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001314 <div class="nav-section-header">
1315 <a href="<?cs var:toroot ?>training/multiple-apks/index.html"
1316 description=
1317 "How to publish your app on Google Play with separate APKs that target
1318 different devices, while using a single app listing."
1319 >Maintaining Multiple APKs</a>
1320 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001321 <ul>
1322 <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
Scott Main22cc2762012-11-07 16:35:16 -08001323 Creating Multiple APKs for Different API Levels
Scott Main50e990c2012-06-21 17:14:39 -07001324 </a>
1325 </li>
1326 <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
Scott Main22cc2762012-11-07 16:35:16 -08001327 Creating Multiple APKs for Different Screen Sizes
Scott Main50e990c2012-06-21 17:14:39 -07001328 </a>
1329 </li>
1330 <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
Scott Main22cc2762012-11-07 16:35:16 -08001331 Creating Multiple APKs for Different GL Textures
Scott Main50e990c2012-06-21 17:14:39 -07001332 </a>
1333 </li>
1334 <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
Scott Main22cc2762012-11-07 16:35:16 -08001335 Creating Multiple APKs with 2+ Dimensions
Scott Main50e990c2012-06-21 17:14:39 -07001336 </a>
1337 </li>
1338 </ul>
1339 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001340 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001341 <div class="nav-section-header">
1342 <a href="<?cs var:toroot ?>training/monetization/index.html"
1343 description=
1344 "How to implement monetization strategies for your app without compromising
1345 the user experience."
1346 >Monetizing Your App</a>
1347 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001348 <ul>
1349 <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
Scott Main22cc2762012-11-07 16:35:16 -08001350 Advertising without Compromising User Experience
Scott Main50e990c2012-06-21 17:14:39 -07001351 </a>
1352 </li>
1353 </ul>
1354 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001355 </ul>
1356 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001357 <!-- End best Publishing -->
1358
Scott Main50e990c2012-06-21 17:14:39 -07001359</ul><!-- nav -->
Scott Main50e990c2012-06-21 17:14:39 -07001360<script type="text/javascript">
1361<!--
1362 buildToggleLists();
1363 changeNavLang(getLangPref());
1364//-->
1365</script>