blob: a66b7731da5d60c292c1aa18e06afca12a491e4d [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 Main50e990c2012-06-21 17:14:39 -0700195 </ul>
Joe Malinf0f5efb2012-10-27 11:16:19 -0700196 </li><!-- end getting started -->
Joe Malin45edbb72013-08-26 14:55:54 -0700197 <li class="nav-section">
198 <div class="nav-section-header">
199 <a href="<?cs var:toroot ?>training/building-content-sharing.html">
200 <span class="small">Building Apps with</span><br/>Content Sharing
201 </a>
202 </div>
203 <ul>
204 <li class="nav-section">
205 <div class="nav-section-header">
206 <a href="<?cs var:toroot ?>training/sharing/index.html"
207 description=
208 "How to take your app interaction to the next level by sharing
209 information with other apps, receive information back, and provide a simple and
210 scalable way to perform Share actions with user content."
211 >Sharing Simple Data</a>
212 </div>
213 <ul>
214 <li>
215 <a href="<?cs var:toroot ?>training/sharing/send.html">
216 Sending Simple Data to Other Apps
217 </a>
218 </li>
219 <li>
220 <a href="<?cs var:toroot ?>training/sharing/receive.html">
221 Receiving Simple Data from Other Apps
222 </a>
223 </li>
224 <li>
225 <a href="<?cs var:toroot ?>training/sharing/shareaction.html">
226 Adding an Easy Share Action
227 </a>
228 </li>
229 </ul>
230 </li>
231 <li class="nav-section">
232 <div class="nav-section-header">
233 <a href="<?cs var:toroot?>training/secure-file-sharing/index.html"
234 description=
235 "How to provide secure access to a file associated with your app using a content
236 URI and temporary access permissions."
237 >Sharing Files</a>
238 </div>
239 <ul>
240 <li>
241 <a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html">
242 Setting Up File Sharing
243 </a>
244 </li>
245 <li>
246 <a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html">
247 Sharing a File
248 </a>
249 </li>
250 <li>
251 <a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html">
252 Requesting a Shared File
253 </a>
254 </li>
255 <li>
256 <a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html">
257 Retrieving File Information
258 </a>
259 </li>
260 </ul>
261 </li>
262 <li class="nav-section">
263 <div class="nav-section-header">
264 <a href="<?cs var:toroot ?>training/beam-files/index.html"
265 description=
266 "How to transfer files between devices using the NFC Android Beam feature."
267 >Sharing Files with NFC</a>
268 </div>
269 <ul>
270 <li>
271 <a href="<?cs var:toroot ?>training/beam-files/send-files.html"
272 >Sending Files to Another Device</a>
273 </li>
274 <li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html"
275 >Receiving Files from Another Device</a></li>
276 </ul>
277 </li>
278 </ul>
279 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800280
281
Scott Main22cc2762012-11-07 16:35:16 -0800282
Scott Main50e990c2012-06-21 17:14:39 -0700283 <li class="nav-section">
284 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -0800285 <a href="<?cs var:toroot ?>training/building-multimedia.html">
286 <span class="small">Building Apps with</span><br/>Multimedia
287 </a>
288 </div>
289 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800290
Scott Main22cc2762012-11-07 16:35:16 -0800291 <li class="nav-section">
292 <div class="nav-section-header">
293 <a href="<?cs var:toroot ?>training/managing-audio/index.html"
294 description=
295 "How to respond to hardware audio key presses, request audio focus
296 when playing audio, and respond appropriately to changes in audio focus."
297 >Managing Audio Playback</a>
298 </div>
299 <ul>
300 <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
301 Controlling Your App's Volume and Playback
302 </a>
303 </li>
304 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
305 Managing Audio Focus
306 </a>
307 </li>
308 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
309 Dealing with Audio Output Hardware
310 </a>
311 </li>
312 </ul>
313 </li>
314
315 <li class="nav-section">
316 <div class="nav-section-header">
317 <a href="<?cs var:toroot ?>training/camera/index.html"
318 description=
319 "How to leverage existing camera apps on the user's device to capture
320 photos or control the camera hardware directly and build your own camera app."
321 >Capturing Photos</a>
322 </div>
323 <ul>
324 <li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
325 Taking Photos Simply
326 </a>
327 </li>
328 <li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
329 Recording Videos Simply
330 </a>
331 </li>
332 <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
333 Controlling the Camera
334 </a>
335 </li>
336 </ul>
337 </li>
338 </ul>
339 </li>
340 <!-- End multimedia -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800341
342
Scott Main22cc2762012-11-07 16:35:16 -0800343
344 <li class="nav-section">
345 <div class="nav-section-header">
346 <a href="<?cs var:toroot ?>training/building-graphics.html">
347 <span class="small">Building Apps with</span><br/>Graphics &amp; Animation
348 </a>
349 </div>
350 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800351
Scott Main22cc2762012-11-07 16:35:16 -0800352 <li class="nav-section">
353 <div class="nav-section-header">
354 <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html"
355 description=
356 "How to load and process bitmaps while keeping your user interface
357 responsive and avoid exceeding memory limits."
358 >Displaying Bitmaps Efficiently</a>
359 </div>
360 <ul>
361 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
362 Loading Large Bitmaps Efficiently
363 </a>
364 </li>
365 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html">
366 Processing Bitmaps Off the UI Thread
367 </a>
368 </li>
369 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html">
370 Caching Bitmaps
371 </a>
372 </li>
kmccormick75715422013-03-04 15:25:40 -0800373 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html">
374 Managing Bitmap Memory
375 </a>
376 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800377 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
378 Displaying Bitmaps in Your UI
379 </a></li>
380 </ul>
381 </li>
382
383 <li class="nav-section">
384 <div class="nav-section-header">
385 <a href="<?cs var:toroot?>training/graphics/opengl/index.html"
386 description=
387 "How to create OpenGL graphics within the Android app framework
388 and respond to touch input."
389 >Displaying Graphics with OpenGL ES</a>
390 </div>
391 <ul>
392 <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
393 Building an OpenGL ES Environment
394 </a>
395 </li>
396 <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
397 Defining Shapes
398 </a>
399 </li>
400 <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
401 Drawing Shapes
402 </a>
403 </li>
404 <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
405 Applying Projection and Camera Views
406 </a>
407 </li>
408 <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
409 Adding Motion
410 </a>
411 </li>
412 <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
413 Responding to Touch Events
414 </a>
415 </li>
416 </ul>
417 </li>
418 <li class="nav-section">
419 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html"
420 description=
421 "How to add transitional animations to your user interface.">
422 Adding Animations
423 </a></div>
424 <ul>
425 <li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
426 Crossfading Two Views
427 </a>
428 </li>
429 <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
430 Using ViewPager for Screen Slide
431 </a>
432 </li>
433 <li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
434 Displaying Card Flip Animations
435 </a>
436 </li>
437 <li><a href="<?cs var:toroot ?>training/animation/zoom.html">
438 Zooming a View
439 </a>
440 </li>
441 <li><a href="<?cs var:toroot ?>training/animation/layout.html">
442 Animating Layout Changes
443 </a>
444 </li>
445 </ul>
446 </li>
447 </ul>
448 </li>
449 <!-- End graphics and animation -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800450
Scott Main22cc2762012-11-07 16:35:16 -0800451
452 <li class="nav-section">
453 <div class="nav-section-header">
454 <a href="<?cs var:toroot ?>training/building-connectivity.html">
455 <span class="small">Building Apps with</span><br/>
456 Connectivity &amp; the Cloud
457 </a>
458 </div>
459 <ul>
460
Scott Main22cc2762012-11-07 16:35:16 -0800461 <li class="nav-section">
462 <div class="nav-section-header">
463 <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html"
464 description=
465 "How to find and connect to local devices using Network Service
Scott Mainf5e09702013-08-22 17:19:17 -0700466 Discovery and how to create peer-to-peer connections with Wi-Fi."
Scott Main22cc2762012-11-07 16:35:16 -0800467 >Connecting Devices Wirelessly</a>
468 </div>
469 <ul>
470 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
471 Using Network Service Discovery
472 </a>
473 </li>
474 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
Scott Mainf5e09702013-08-22 17:19:17 -0700475 Creating P2P Connections with Wi-Fi
Scott Main22cc2762012-11-07 16:35:16 -0800476 </a>
477 </li>
478 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
Scott Main2d006d22013-09-16 13:11:07 -0700479 Using Wi-Fi P2P for Service Discovery
Scott Main22cc2762012-11-07 16:35:16 -0800480 </a>
481 </li>
482 </ul>
483 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800484 <li class="nav-section">
485 <div class="nav-section-header">
486 <a href="<?cs var:toroot ?>training/basics/network-ops/index.html"
487 description=
488 "How to create a network connection, monitor the connection for changes
489 in connectivity, and perform transactions with XML data."
490 >Performing Network Operations</a>
491 </div>
492 <ul>
493 <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
494 Connecting to the Network
495 </a>
496 </li>
497 <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
498 Managing Network Usage
499 </a>
500 </li>
501 <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
502 Parsing XML Data
503 </a>
504 </li>
505 </ul>
506 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800507 <li class="nav-section">
508 <div class="nav-section-header">
509 <a href="<?cs var:toroot ?>training/efficient-downloads/index.html"
510 description=
511 "How to minimize your app's impact on the battery when performing downloads
512 and other network transactions."
513 >Transferring Data Without Draining the Battery</a>
514 </div>
515 <ul>
516 <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
517 Optimizing Downloads for Efficient Network Access
518 </a>
519 </li>
520 <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
521 Minimizing the Effect of Regular Updates
522 </a>
523 </li>
524 <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
525 Redundant Downloads are Redundant
526 </a>
527 </li>
528 <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
529 Modifying Patterns Based on the Connectivity Type
530 </a>
531 </li>
532 </ul>
533 </li>
534
535 <li class="nav-section">
536 <div class="nav-section-header">
537 <a href="<?cs var:toroot ?>training/cloudsync/index.html"
538 description=
539 "How to sync and back up app and user data to remote web services in the
540 cloud and how to restore the data back to multiple devices."
541 >Syncing to the Cloud</a>
542 </div>
543 <ul>
544 <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
545 Using the Backup API
546 </a>
547 </li>
548 <li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
549 Making the Most of Google Cloud Messaging
550 </a>
551 </li>
552 </ul>
kmccormick71baac12013-06-11 13:17:55 -0700553 <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html"
554 description=
555 "How to design a robust conflict resolution strategy for apps that save data to the cloud."
556 >Resolving Cloud Save Conflicts
557 </a>
Joe Malin2e1c7b72013-08-30 15:30:54 -0700558 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800559 </li>
Joe Maline9df5112013-06-07 13:38:00 -0700560 <li class="nav-section">
561 <div class="nav-section-header">
562 <a href="<?cs var:toroot ?>training/sync-adapters/index.html"
563 description="How to transfer data between the cloud and the device using the Android
564 sync adapter framework"
565 >Transferring Data Using Sync Adapters</a>
566 </div>
567 <ul>
568 <li>
569 <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html">
570 Creating a Stub Authenticator
571 </a>
572 </li>
573 <li>
574 <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html">
575 Creating a Stub Content Provider
576 </a>
577 </li>
578 <li>
579 <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html">
580 Creating a Sync Adapter
581 </a>
582 </li>
583 <li>
584 <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html">
585 Running a Sync Adapter
586 </a>
587 </li>
588 </ul>
589 </li>
590
Scott Main22cc2762012-11-07 16:35:16 -0800591 </ul>
592 </li>
593 <!-- End connectivity and cloud -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800594
595
Scott Main22cc2762012-11-07 16:35:16 -0800596
597 <li class="nav-section">
598 <div class="nav-section-header">
599 <a href="<?cs var:toroot ?>training/building-userinfo.html">
600 <span class="small">Building Apps with</span><br/>
601 User Info &amp; Location
602 </a>
603 </div>
604 <ul>
Joe Malin421435d2013-01-15 15:06:08 -0800605 <li class="nav-section">
606 <div class="nav-section-header">
607 <a href="<?cs var:toroot ?>training/contacts-provider/index.html"
608 description=
609 "How to use Android's central address book, the Contacts Provider, to
610 display contacts and their details and modify contact information.">
611 Accessing Contacts Data</a>
612 </div>
613 <ul>
614 <li>
615 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html">
616 Retrieving a List of Contacts
617 </a>
618 </li>
619 <li>
620 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html">
621 Retrieving Details for a Contact
622 </a>
623 </li>
624 <li>
625 <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html">
626 Modifying Contacts Using Intents
627 </a>
628 </li>
629 <li>
630 <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html">
631 Displaying the Quick Contact Badge
632 </a>
633 </li>
634 </ul>
635 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800636
637 <li class="nav-section">
638 <div class="nav-section-header">
Joe Malin3ddba7e2013-03-04 10:33:30 -0800639 <a href="<?cs var:toroot ?>training/location/index.html"
640 description="How to add location-aware features to your app by getting the user's current location.">
641 Making Your App Location-Aware
642 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800643 </div>
644 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800645 <li>
646 <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
647 Retrieving the Current Location
648 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800649 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800650 <li>
651 <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
652 Receiving Location Updates
653 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800654 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800655 <li>
656 <a href="<?cs var:toroot ?>training/location/display-address.html">
Scott Main22cc2762012-11-07 16:35:16 -0800657 Displaying a Location Address
658 </a>
659 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800660 <li><a href="<?cs var:toroot ?>training/location/geofencing.html">
661 Creating and Monitoring Geofences
662 </a>
663 </li>
664 <li><a href="<?cs var:toroot ?>training/location/activity-recognition.html">
665 Recognizing the User's Current Activity
666 </a>
667 </li>
Joe Malin72fdbc82013-07-26 17:26:52 -0700668 <li><a href="<?cs var:toroot ?>training/location/location-testing.html">
669 Testing Using Mock Locations
670 </a>
671 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800672 </ul>
673 </li>
674 </ul>
675 </li>
676 <!-- End privacy and location -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800677
678
Scott Main22cc2762012-11-07 16:35:16 -0800679
680 <li class="nav-section">
681 <div class="nav-section-header">
682 <a href="<?cs var:toroot ?>training/best-ux.html">
683 <span class="small">Best Practices for</span><br/>
684 User Experience &amp; UI
Scott Main50e990c2012-06-21 17:14:39 -0700685 </a>
686 </div>
687 <ul>
688
689 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800690 <div class="nav-section-header">
691 <a href="<?cs var:toroot ?>training/design-navigation/index.html"
692 description=
693 "How to plan your app's screen hierarchy and forms of navigation so users can
694 effectively and intuitively traverse your app content using various navigation
695 patterns."
696 >Designing Effective Navigation</a>
Scott Mainddab47b2012-10-02 17:48:11 -0700697 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700698 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800699 <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
700 Planning Screens and Their Relationships
701 </a>
702 </li>
703 <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
704 Planning for Multiple Touchscreen Sizes
705 </a>
706 </li>
707 <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
708 Providing Descendant and Lateral Navigation
709 </a>
710 </li>
711 <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
712 Providing Ancestral and Temporal Navigation
713 </a>
714 </li>
715 <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
716 Putting it All Together: Wireframing the Example App
717 </a>
718 </li>
719 </ul>
720 </li>
721
722 <li class="nav-section">
723 <div class="nav-section-header">
724 <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
725 description=
Scott Main7c840552013-03-26 18:53:01 -0700726 "How to implement various navigation patterns such as swipe views,
727 a navigation drawer, and up navigation."
Scott Main22cc2762012-11-07 16:35:16 -0800728 >Implementing Effective Navigation</a>
729 </div>
730 <ul>
731 <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
Scott Main7c840552013-03-26 18:53:01 -0700732 Creating Swipe Views with Tabs
733 </a>
734 </li>
735 <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
736 Creating a Navigation Drawer
Scott Main22cc2762012-11-07 16:35:16 -0800737 </a>
738 </li>
739 <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
Scott Main7c840552013-03-26 18:53:01 -0700740 Providing Up Navigation
Scott Main22cc2762012-11-07 16:35:16 -0800741 </a>
742 </li>
743 <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
Scott Main7c840552013-03-26 18:53:01 -0700744 Providing Proper Back Navigation
Scott Main22cc2762012-11-07 16:35:16 -0800745 </a>
746 </li>
747 <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
748 Implementing Descendant Navigation
749 </a>
750 </li>
751 </ul>
752 </li>
&& repo sync -j80aae0002012-10-04 16:34:23 -0700753
754 <li class="nav-section">
755 <div class="nav-section-header">
756 <a href="<?cs var:toroot ?>training/notify-user/index.html"
757 description=
Joe Malinf0f5efb2012-10-27 11:16:19 -0700758 "How to display messages called notifications outside of
&& repo sync -j80aae0002012-10-04 16:34:23 -0700759 your application's UI."
760 >Notifying the User</a>
761 </div>
762 <ul>
763 <li>
764 <a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
765 Building a Notification
766 </a>
767 </li>
768 <li>
769 <a href="<?cs var:toroot ?>training/notify-user/navigation.html">
770 Preserving Navigation when Starting an Activity
771 </a>
772 </li>
773 <li>
774 <a href="<?cs var:toroot ?>training/notify-user/managing.html">
775 Updating Notifications
776 </a>
777 </li>
778 <li>
779 <a href="<?cs var:toroot ?>training/notify-user/expanded.html">
780 Using Big View Styles
781 </a>
782 </li>
783 <li>
784 <a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
785 Displaying Progress in a Notification
786 </a>
787 </li>
788 </ul>
789 </li>
790
791 <li class="nav-section">
792 <div class="nav-section-header">
793 <a href="<?cs var:toroot ?>training/search/index.html"
794 description=
795 "How to properly add a search interface to your app and create a searchable database."
796 >Adding Search Functionality</a>
797 </div>
798 <ul>
799 <li><a href="<?cs var:toroot ?>training/search/setup.html">
800 Setting up the Search Interface
801 </a>
802 </li>
803 <li><a href="<?cs var:toroot ?>training/search/search.html">
804 Storing and Searching for Data
805 </a>
806 </li>
807 <li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
808 Remaining Backward Compatible
809 </a>
810 </li>
811 </ul>
812 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800813
814
Scott Main22cc2762012-11-07 16:35:16 -0800815 <li class="nav-section">
816 <div class="nav-section-header">
817 <a href="/training/multiscreen/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700818 zh-cn-lang="针对多种屏幕进行设计"
Scott Main22cc2762012-11-07 16:35:16 -0800819 ja-lang="複数画面のデザイン"
820 es-lang="Cómo diseñar aplicaciones para varias pantallas"
821 description=
822 "How to build a user interface that's flexible enough to
823 fit perfectly on any screen and how to create different interaction
824 patterns that are optimized for different screen sizes."
825 >Designing for Multiple Screens</a>
826 </div>
827 <ul>
828 <li><a href="/training/multiscreen/screensizes.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700829 zh-cn-lang="支持各种屏幕尺寸"
Scott Mainddab47b2012-10-02 17:48:11 -0700830 ko-lang="다양한 화면 크기 지원"
831 ja-lang="さまざまな画面サイズのサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700832 es-lang="Cómo admitir varios tamaños de pantalla"
Scott Main22cc2762012-11-07 16:35:16 -0800833 >Supporting Different Screen Sizes</a>
Scott Main50e990c2012-06-21 17:14:39 -0700834 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800835 <li><a href="/training/multiscreen/screendensities.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700836 zh-cn-lang="支持各种屏幕密度"
Scott Mainddab47b2012-10-02 17:48:11 -0700837 ja-lang="さまざまな画面密度のサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700838 es-lang="Cómo admitir varias densidades de pantalla"
Scott Mainddab47b2012-10-02 17:48:11 -0700839 >Supporting Different Screen Densities</a>
Scott Main50e990c2012-06-21 17:14:39 -0700840 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800841 <li><a href="/training/multiscreen/adaptui.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -0700842 zh-cn-lang="实施自适应用户界面流程"
Scott Mainddab47b2012-10-02 17:48:11 -0700843 ja-lang="順応性のある UI フローの実装"
Joe Malinf0f5efb2012-10-27 11:16:19 -0700844 es-lang="Cómo implementar interfaces de usuario adaptables"
Scott Mainddab47b2012-10-02 17:48:11 -0700845 >Implementing Adaptive UI Flows</a>
Scott Main50e990c2012-06-21 17:14:39 -0700846 </li>
847 </ul>
848 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700849
Scott Main50e990c2012-06-21 17:14:39 -0700850 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800851 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/tv/index.html"
852 description=
853 "How to optimize your app's user interface and user input for
854 the &quot;ten foot experience&quot; of a TV screen."
855 >Designing for TV</a>
856 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700857 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800858 <li><a href="<?cs var:toroot ?>training/tv/optimizing-layouts-tv.html">
859 Optimizing Layouts for TV
Scott Main50e990c2012-06-21 17:14:39 -0700860 </a>
861 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800862 <li><a href="<?cs var:toroot ?>training/tv/optimizing-navigation-tv.html">
863 Optimizing Navigation for TV
Scott Main50e990c2012-06-21 17:14:39 -0700864 </a>
865 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800866 <li><a href="<?cs var:toroot ?>training/tv/unsupported-features-tv.html">
867 Handling Features Not Supported on TV
Scott Main50e990c2012-06-21 17:14:39 -0700868 </a>
869 </li>
870 </ul>
871 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800872
Scott Main50e990c2012-06-21 17:14:39 -0700873 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800874 <div class="nav-section-header">
875 <a href="<?cs var:toroot ?>training/custom-views/index.html"
876 description=
877 "How to build custom UI widgets that are interactive and smooth."
878 >Creating Custom Views</a>
879 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700880 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800881 <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
882 Creating a Custom View Class
Scott Main50e990c2012-06-21 17:14:39 -0700883 </a>
884 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800885 <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
886 Implementing Custom Drawing
Scott Main50e990c2012-06-21 17:14:39 -0700887 </a>
888 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800889 <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
890 Making the View Interactive
891 </a>
892 </li>
893 <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
894 Optimizing the View
Scott Main50e990c2012-06-21 17:14:39 -0700895 </a>
896 </li>
897 </ul>
898 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700899
Scott Main50e990c2012-06-21 17:14:39 -0700900 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800901 <div class="nav-section-header">
902 <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
903 description=
904 "How to use UI components and other APIs from the more recent versions of Android
905 while remaining compatible with older versions of the platform."
906 >Creating Backward-Compatible UIs</a>
Scott Mainddab47b2012-10-02 17:48:11 -0700907 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700908 <ul>
Scott Main22cc2762012-11-07 16:35:16 -0800909 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
910 Abstracting the New APIs
911 </a>
912 </li>
913 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
914 Proxying to the New APIs
915 </a>
916 </li>
917 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
918 Creating an Implementation with Older APIs
919 </a>
920 </li>
921 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
922 Using the Version-Aware Component
923 </a>
924 </li>
925 </ul>
926 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800927
Scott Main22cc2762012-11-07 16:35:16 -0800928 <li class="nav-section">
929 <div class="nav-section-header">
930 <a href="<?cs var:toroot ?>training/accessibility/index.html"
931 description=
932 "How to make your app accessible to users with vision
933 impairment or other physical disabilities."
934 >Implementing Accessibility</a>
935 </div>
936 <ul>
937 <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
938 Developing Accessible Applications
939 </a>
940 </li>
941 <li><a href="<?cs var:toroot ?>training/accessibility/service.html">
942 Developing Accessibility Services
943 </a>
944 </li>
945 </ul>
946 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800947
Scott Main22cc2762012-11-07 16:35:16 -0800948 </ul>
949 </li>
950 <!-- End best UX and UI -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800951
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800952
&& repo sync -j8518edbf2012-11-30 16:28:27 -0800953 <li class="nav-section">
954 <div class="nav-section-header">
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800955 <a href="<?cs var:toroot ?>training/best-user-input.html">
&& repo sync -j8518edbf2012-11-30 16:28:27 -0800956 <span class="small">Best Practices for</span><br/>
957 User Input
958 </a>
959 </div>
960 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800961
&& repo sync -j8518edbf2012-11-30 16:28:27 -0800962 <li class="nav-section">
963 <div class="nav-section-header">
964 <a href="<?cs var:toroot ?>training/gestures/index.html"
965 description=
966 "How to write apps that allow users to interact with the touch screen via touch gestures."
967 >Using Touch Gestures</a>
968 </div>
969 <ul>
970 <li><a href="<?cs var:toroot ?>training/gestures/detector.html">
971 Detecting Common Gestures
972 </a>
973 </li>
974 <li><a href="<?cs var:toroot ?>training/gestures/movement.html">
975 Tracking Movement
976 </a>
977 </li>
978 <li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
979 Animating a Scroll Gesture
980 </a>
981 </li>
982 <li><a href="<?cs var:toroot ?>training/gestures/multi.html">
983 Handling Multi-Touch Gestures
984 </a>
985 </li>
986 <li><a href="<?cs var:toroot ?>training/gestures/scale.html">
987 Dragging and Scaling
988 </a>
989 </li>
990 <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
991 Managing Touch Events in a ViewGroup
992 </a>
993 </li>
994 </ul>
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800995 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800996
Scott Mainc8a6f8a2012-12-05 16:13:25 -0800997 <li class="nav-section">
998 <div class="nav-section-header">
999 <a href="<?cs var:toroot ?>training/keyboard-input/index.html"
1000 description=
1001 "How to specify the appearance and behaviors of soft input methods (such
1002 as on-screen keyboards) and how to optimize the experience with
1003 hardware keyboards."
1004 >Handling Keyboard Input</a>
1005 </div>
1006 <ul>
1007 <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html">
1008 Specifying the Input Method Type
1009 </a>
1010 </li>
1011 <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html">
1012 Handling Input Method Visibility
1013 </a>
1014 </li>
1015 <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html">
1016 Supporting Keyboard Navigation
1017 </a>
1018 </li>
1019 <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html">
1020 Handling Keyboard Actions
1021 </a>
1022 </li>
1023 </ul>
1024 </li>
1025 </ul>
Joe Malin421435d2013-01-15 15:06:08 -08001026 </li> <!-- end of User Input -->
Scott Main22cc2762012-11-07 16:35:16 -08001027
1028 <li class="nav-section">
1029 <div class="nav-section-header">
Katie McCormick7bdb3f62013-09-05 14:46:20 -07001030 <a href="<?cs var:toroot ?>training/best-background.html">
1031 <span class="small">Best Practices for</span><br/>
1032 Background Jobs
1033 </a>
1034 </div>
1035 <ul>
1036
1037 <li class="nav-section">
1038 <div class="nav-section-header">
1039 <a href="<?cs var:toroot ?>training/run-background-service/index.html"
1040 description=
1041 "How to improve UI performance and responsiveness by sending work to a
1042 Service running in the background"
1043 >Running in a Background Service</a>
1044 </div>
1045 <ul>
1046 <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
1047 Creating a Background Service
1048 </a>
1049 </li>
1050 <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
1051 Sending Work Requests to the Background Service
1052 </a>
1053 </li>
1054 <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
1055 Reporting Work Status
1056 </a>
1057 </li>
1058 </ul>
1059 </li>
1060
1061 <li class="nav-section">
1062 <div class="nav-section-header">
1063 <a href="<?cs var:toroot ?>training/load-data-background/index.html"
1064 description="How to use CursorLoader to query data without
1065 affecting UI responsiveness."
1066 >Loading Data in the Background</a>
1067 </div>
1068 <ul>
1069 <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
1070 Running a Query with a CursorLoader</a>
1071 </li>
1072 <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
1073 Handling the Results</a>
1074 </li>
1075 </ul>
1076 </li>
1077
1078 <li class="nav-section">
1079 <div class="nav-section-header">
1080 <a href="<?cs var:toroot ?>training/scheduling/index.html"
1081 description="How to use repeating alarms and wake locks
1082 to run background jobs."
1083 >Managing Device Awake State</a>
1084 </div>
1085 <ul>
1086 <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html">
1087 Keeping the Device Awake</a>
1088 </li>
1089 <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html">
1090 Scheduling Repeating Alarms</a>
1091 </li>
1092 </ul>
1093 </li>
1094 </ul>
1095 </li> <!-- end of Background Jobs -->
1096
1097 <li class="nav-section">
1098 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -08001099 <a href="<?cs var:toroot ?>training/best-performance.html">
1100 <span class="small">Best Practices for</span><br/>
1101 Performance
1102 </a>
1103 </div>
1104 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001105
Scott Main22cc2762012-11-07 16:35:16 -08001106 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001107 <a href="<?cs var:toroot ?>training/articles/perf-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001108 description=
1109 "How to optimize your app's performance in various ways to improve its
1110 responsiveness and battery efficiency."
1111 >Performance Tips</a>
1112 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001113
Scott Main22cc2762012-11-07 16:35:16 -08001114 <li class="nav-section">
1115 <div class="nav-section-header">
1116 <a href="<?cs var:toroot ?>training/improving-layouts/index.html"
1117 description=
1118 "How to identify problems in your app's layout performance and improve the UI
1119 responsiveness."
1120 >Improving Layout Performance</a>
1121 </div>
1122 <ul>
1123 <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
1124 Optimizing Layout Hierarchies
1125 </a>
1126 </li>
1127 <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
1128 Re-using Layouts with &lt;include/&gt;
1129 </a>
1130 </li>
1131 <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
1132 Loading Views On Demand
1133 </a>
1134 </li>
1135 <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
1136 Making ListView Scrolling Smooth
1137 </a>
1138 </li>
1139 </ul>
1140 </li>
Scott Main8ac78802012-12-14 11:39:03 -08001141
Joe Malinf0f5efb2012-10-27 11:16:19 -07001142 <li class="nav-section">
1143 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -08001144 <a href="/training/monitoring-device-state/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001145 zh-cn-lang="优化电池使用时间"
Scott Main22cc2762012-11-07 16:35:16 -08001146 ja-lang="電池消費量の最適化"
1147 es-lang="Cómo optimizar la duración de la batería"
1148 description=
1149 "How to minimize the amount of power your app requires by adapting to current
1150 power conditions and performing power-hungry tasks at proper intervals."
1151 >Optimizing Battery Life</a>
1152 </div>
1153 <ul>
1154 <li><a href="/training/monitoring-device-state/battery-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001155 zh-cn-lang="监控电池电量和充电状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001156 ja-lang="電池残量と充電状態の監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001157 es-lang="Cómo controlar el nivel de batería y el estado de carga"
Scott Mainddab47b2012-10-02 17:48:11 -07001158 >Monitoring the Battery Level and Charging State</a>
Scott Main50e990c2012-06-21 17:14:39 -07001159 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001160 <li><a href="/training/monitoring-device-state/docking-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001161 zh-cn-lang="确定和监控基座对接状态和类型"
Scott Mainddab47b2012-10-02 17:48:11 -07001162 ja-lang="ホルダーの装着状態とタイプの特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001163 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 -07001164 >Determining and Monitoring the Docking State and Type</a>
Scott Main50e990c2012-06-21 17:14:39 -07001165 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001166 <li><a href="/training/monitoring-device-state/connectivity-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001167 zh-cn-lang="确定和监控网络连接状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001168 ja-lang="接続状態の特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001169 es-lang="Cómo determinar y controlar el estado de la conectividad"
Scott Mainddab47b2012-10-02 17:48:11 -07001170 >Determining and Monitoring the Connectivity Status</a>
Scott Main50e990c2012-06-21 17:14:39 -07001171 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001172 <li><a href="/training/monitoring-device-state/manifest-receivers.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001173 zh-cn-lang="根据需要操作广播接收器"
Scott Mainddab47b2012-10-02 17:48:11 -07001174 ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001175 es-lang="Cómo manipular los receptores de emisión bajo demanda"
Scott Mainddab47b2012-10-02 17:48:11 -07001176 >Manipulating Broadcast Receivers On Demand</a>
Scott Main50e990c2012-06-21 17:14:39 -07001177 </li>
1178 </ul>
1179 </li>
Joe Malin8dd62752012-11-26 14:06:35 -08001180 <li class="nav-section">
1181 <div class="nav-section-header">
1182 <a href="<?cs var:toroot ?>training/multiple-threads/index.html"
1183 description=
1184 "How to improve the performance and scalability of long-running operations by
1185 dispatching work to multiple threads.">
1186 Sending Operations to Multiple Threads</a>
1187 </div>
1188 <ul>
1189 <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html">
1190 Specifying the Code to Run on a Thread
1191 </a>
1192 </li>
1193 <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html">
1194 Creating a Manager for Multiple Threads
1195 </a>
1196 </li>
1197 <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html">
1198 Running Code on a Thread Pool Thread
1199 </a>
1200 </li>
1201 <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html">
1202 Communicating with the UI Thread
1203 </a>
1204 </li>
1205 </ul>
1206 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001207
Scott Main22cc2762012-11-07 16:35:16 -08001208 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001209 <a href="<?cs var:toroot ?>training/articles/perf-anr.html"
Scott Main22cc2762012-11-07 16:35:16 -08001210 description=
1211 "How to keep your app responsive to user interaction so the UI does not lock-up and
1212 display an &quot;Application Not Responding&quot; dialog."
1213 >Keeping Your App Responsive</a>
Scott Main50e990c2012-06-21 17:14:39 -07001214 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001215
Scott Main22cc2762012-11-07 16:35:16 -08001216 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001217 <a href="<?cs var:toroot ?>training/articles/perf-jni.html"
Scott Main22cc2762012-11-07 16:35:16 -08001218 description=
1219 "How to efficiently use the Java Native Interface with the Android NDK."
1220 >JNI Tips</a>
1221 </li>
Dirk Doughertyd5894212012-11-28 18:53:10 -08001222 <li>
1223 <a href="<?cs var:toroot ?>training/articles/smp.html"
1224 description=
1225 "Tips for coding Android apps on symmetric multiprocessor systems."
1226 >SMP Primer for Android</a>
1227 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001228 </ul>
1229 </li> <!-- end of Performance -->
Joe Malin3ddba7e2013-03-04 10:33:30 -08001230
1231
Scott Main50e990c2012-06-21 17:14:39 -07001232
Scott Main22cc2762012-11-07 16:35:16 -08001233 <li class="nav-section">
1234 <div class="nav-section-header">
1235 <a href="<?cs var:toroot ?>training/best-security.html">
1236 <span class="small">Best Practices for</span><br/>
1237 Security &amp; Privacy
1238 </a>
1239 </div>
1240 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001241 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001242 <a href="<?cs var:toroot ?>training/articles/security-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001243 description=
1244 "How to perform various tasks and keep your app's data and your user's data secure."
1245 >Security Tips</a>
1246 </li>
Scott Main00158362013-01-17 16:58:50 -08001247
1248 <li>
1249 <a href="<?cs var:toroot ?>training/articles/security-ssl.html"
1250 description=
1251 "How to ensure that your app is secure when performing network transactions."
1252 >Security with HTTPS and SSL</a>
1253 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001254
Scott Main50e990c2012-06-21 17:14:39 -07001255 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001256 <div class="nav-section-header">
1257 <a href="<?cs var:toroot ?>training/enterprise/index.html"
1258 description=
1259 "How to implement device management policies for enterprise-oriented apps."
1260 >Developing for Enterprise</a>
Scott Main50e990c2012-06-21 17:14:39 -07001261 </div>
1262 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001263 <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
1264 Enhancing Security with Device Management Policies
Scott Main50e990c2012-06-21 17:14:39 -07001265 </a>
1266 </li>
1267 </ul>
1268 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001269 </ul>
1270 </li>
1271 <!-- End security and user info -->
Scott Main50e990c2012-06-21 17:14:39 -07001272
quddusc2ef39522013-06-21 16:49:46 -07001273 <li class="nav-section">
1274 <div class="nav-section-header">
1275 <a href="<?cs var:toroot ?>training/testing.html">
1276 <span class="small">Best Practices for</span><br/>
1277 Testing
1278 </a>
1279 </div>
1280 <ul>
1281 <li class="nav-section">
1282 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html"
1283 description="How to test Activities in your Android applications.">
1284 Testing Your Activity
1285 </a></div>
1286 <ul>
1287 <li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html">
1288 <span class="en">Setting Up Your Test Environment</span>
1289 </a>
1290 </li>
1291 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html">
1292 <span class="en">Creating and Running a Test Case</span>
1293 </a>
1294 </li>
1295 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html">
1296 <span class="en">Testing UI Components</span>
1297 </a>
1298 </li>
1299 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html">
1300 <span class="en">Creating Unit Tests</span>
1301 </a>
1302 </li>
1303 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html">
1304 <span class="en">Creating Functional Tests</span>
1305 </a>
1306 </li>
1307 </ul>
1308 </li>
1309 </ul>
1310 </li>
1311 <!-- End best Testing -->
Scott Main50e990c2012-06-21 17:14:39 -07001312
Scott Main22cc2762012-11-07 16:35:16 -08001313 <li class="nav-section">
1314 <div class="nav-section-header">
1315 <a href="<?cs var:toroot ?>training/distribute.html">
1316 <span class="small">Using Google Play to</span><br/>
1317 Distribute &amp; Monetize
1318 </a>
1319 </div>
1320 <ul>
Quddus Chong768dba62012-12-08 17:06:30 -08001321 <li class="nav-section">
1322 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
1323 description="How to sell in-app products from your application using In-app Billing.">
1324 Selling In-app Products
1325 </a></div>
1326 <ul>
1327 <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
1328 <span class="en">Preparing Your App</span>
1329 </a>
1330 </li>
1331 <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
1332 <span class="en">Establishing Products for Sale</span>
1333 </a>
1334 </li>
1335 <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
1336 <span class="en">Purchasing Products</span>
1337 </a>
1338 </li>
1339 <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
1340 <span class="en">Testing Your App</span>
1341 </a>
1342 </li>
1343 </ul>
1344 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001345
Scott Main50e990c2012-06-21 17:14:39 -07001346 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001347 <div class="nav-section-header">
1348 <a href="<?cs var:toroot ?>training/multiple-apks/index.html"
1349 description=
1350 "How to publish your app on Google Play with separate APKs that target
1351 different devices, while using a single app listing."
1352 >Maintaining Multiple APKs</a>
1353 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001354 <ul>
1355 <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
Scott Main22cc2762012-11-07 16:35:16 -08001356 Creating Multiple APKs for Different API Levels
Scott Main50e990c2012-06-21 17:14:39 -07001357 </a>
1358 </li>
1359 <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
Scott Main22cc2762012-11-07 16:35:16 -08001360 Creating Multiple APKs for Different Screen Sizes
Scott Main50e990c2012-06-21 17:14:39 -07001361 </a>
1362 </li>
1363 <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
Scott Main22cc2762012-11-07 16:35:16 -08001364 Creating Multiple APKs for Different GL Textures
Scott Main50e990c2012-06-21 17:14:39 -07001365 </a>
1366 </li>
1367 <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
Scott Main22cc2762012-11-07 16:35:16 -08001368 Creating Multiple APKs with 2+ Dimensions
Scott Main50e990c2012-06-21 17:14:39 -07001369 </a>
1370 </li>
1371 </ul>
1372 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001373 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001374 <div class="nav-section-header">
1375 <a href="<?cs var:toroot ?>training/monetization/index.html"
1376 description=
1377 "How to implement monetization strategies for your app without compromising
1378 the user experience."
1379 >Monetizing Your App</a>
1380 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001381 <ul>
1382 <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
Scott Main22cc2762012-11-07 16:35:16 -08001383 Advertising without Compromising User Experience
Scott Main50e990c2012-06-21 17:14:39 -07001384 </a>
1385 </li>
1386 </ul>
1387 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001388 </ul>
1389 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001390 <!-- End best Publishing -->
1391
Scott Main50e990c2012-06-21 17:14:39 -07001392</ul><!-- nav -->
Scott Main50e990c2012-06-21 17:14:39 -07001393<script type="text/javascript">
1394<!--
1395 buildToggleLists();
1396 changeNavLang(getLangPref());
1397//-->
1398</script>