blob: 862663eefa1c61083d3832457eabbcaaf0001246 [file] [log] [blame]
Scott Main50e990c2012-06-21 17:14:39 -07001<ul id="nav">
Scott Main50e990c2012-06-21 17:14:39 -07002 <li class="nav-section">
3 <div class="nav-section-header">
4 <a href="<?cs var:toroot ?>training/index.html">
Scott Main22cc2762012-11-07 16:35:16 -08005 Getting Started
Scott Main50e990c2012-06-21 17:14:39 -07006 </a>
7 </div>
8
9 <ul>
10 <li class="nav-section">
11 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -080012 <a href="<?cs var:toroot ?>training/basics/firstapp/index.html"
13 description=
14 "After you've installed the Android SDK, start with this class
15 to learn the basics about Android app development."
16 >Building Your First App</a>
Scott Main50e990c2012-06-21 17:14:39 -070017 </div>
18 <ul>
19 <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html">
Scott Main22cc2762012-11-07 16:35:16 -080020 Creating an Android Project
Scott Main50e990c2012-06-21 17:14:39 -070021 </a>
22 </li>
23 <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html">
Scott Main22cc2762012-11-07 16:35:16 -080024 Running Your Application
Scott Main50e990c2012-06-21 17:14:39 -070025 </a>
26 </li>
27 <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html">
Scott Main22cc2762012-11-07 16:35:16 -080028 Building a Simple User Interface
Scott Main50e990c2012-06-21 17:14:39 -070029 </a>
30 </li>
31 <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html">
Scott Main22cc2762012-11-07 16:35:16 -080032 Starting Another Activity
Scott Main50e990c2012-06-21 17:14:39 -070033 </a>
34 </li>
35 </ul>
36 </li>
37
38 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -080039 <div class="nav-section-header">
Scott Maind0413012013-07-19 19:04:45 -070040 <a href="<?cs var:toroot ?>training/basics/actionbar/index.html"
41 description=
42 "The action bar is one of the most important design elements you can implement for your
43app's activities. Although first introduced with API level 11, you can use the Support Library to
44include the action bar on devices running Android 2.1 or higher."
45 >Adding the Action Bar</a>
46 </div>
47 <ul>
48 <li><a href="<?cs var:toroot ?>training/basics/actionbar/setting-up.html">
49 Setting Up the Action Bar
50 </a>
51 </li>
52 <li><a href="<?cs var:toroot ?>training/basics/actionbar/adding-buttons.html">
53 Adding Action Buttons
54 </a>
55 </li>
56 <li><a href="<?cs var:toroot ?>training/basics/actionbar/styling.html">
57 Styling the Action Bar
58 </a>
59 </li>
60 <li><a href="<?cs var:toroot ?>training/basics/actionbar/overlaying.html">
61 Overlaying the Action Bar
62 </a>
63 </li>
64 </ul>
65 </li>
66
67 <li class="nav-section">
68 <div class="nav-section-header">
Scott Mainf1513912013-08-22 18:11:01 -070069 <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html"
70 description=
71 "How to build your app with alternative resources that provide an
72 optimized user experience on multiple device form factors using a single APK."
73 >Supporting Different Devices</a>
74 </div>
75 <ul>
76 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html">
77 Supporting Different Languages
78 </a>
79 </li>
80 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html">
81 Supporting Different Screens
82 </a>
83 </li>
84 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html">
85 Supporting Different Platform Versions
86 </a>
87 </li>
88 </ul>
89 </li>
90
91 <li class="nav-section">
92 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -080093 <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
94 description=
95 "How Android activities live and die and how to create
96 a seamless user experience by implementing lifecycle callback methods."
97 >Managing the Activity Lifecycle</a>
98 </div>
Scott Main50e990c2012-06-21 17:14:39 -070099 <ul>
100 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html">
Scott Main22cc2762012-11-07 16:35:16 -0800101 Starting an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700102 </a>
103 </li>
104 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
Scott Main22cc2762012-11-07 16:35:16 -0800105 Pausing and Resuming an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700106 </a>
107 </li>
108 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html">
Scott Main22cc2762012-11-07 16:35:16 -0800109 Stopping and Restarting an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700110 </a>
111 </li>
112 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800113 Recreating an Activity
Scott Main50e990c2012-06-21 17:14:39 -0700114 </a>
115 </li>
116 </ul>
117 </li>
Joe Malin50c22752012-10-20 12:41:40 -0700118
Scott Main50e990c2012-06-21 17:14:39 -0700119 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800120 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -0800121 <a href="<?cs var:toroot ?>training/basics/fragments/index.html"
122 description=
123 "How to build a user interface for your app that is flexible enough
124 to present multiple UI components on large screens and a more constrained set of
125 UI components on smaller screens&mdash;essential for building a single APK for both
126 phones and tablets."
127 >Building a Dynamic UI with Fragments</a>
128 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700129 <ul>
Scott Main50e990c2012-06-21 17:14:39 -0700130 <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800131 Creating a Fragment
Scott Main50e990c2012-06-21 17:14:39 -0700132 </a>
133 </li>
Dirk Doughertya79acc02014-11-14 19:19:18 -0800134 <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html" zh-cn-lang="构建灵活的界面">
Scott Main22cc2762012-11-07 16:35:16 -0800135 Building a Flexible UI
Scott Main50e990c2012-06-21 17:14:39 -0700136 </a>
137 </li>
138 <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
Scott Main22cc2762012-11-07 16:35:16 -0800139 Communicating with Other Fragments
Scott Main50e990c2012-06-21 17:14:39 -0700140 </a>
141 </li>
142 </ul>
143 </li>
144
145 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800146 <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html"
147 description=
148 "How to save data on the device, whether it's temporary files, downloaded
149 app assets, user media, structured data, or something else."
150 >Saving Data</a>
151 </div>
Scott Main11f03b42012-09-07 15:26:39 -0700152 <ul>
153 <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
Scott Main22cc2762012-11-07 16:35:16 -0800154 Saving Key-Value Sets
Scott Main11f03b42012-09-07 15:26:39 -0700155 </a>
156 </li>
157 <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
Scott Main22cc2762012-11-07 16:35:16 -0800158 Saving Files
Scott Main11f03b42012-09-07 15:26:39 -0700159 </a>
160 </li>
161 <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
Scott Main22cc2762012-11-07 16:35:16 -0800162 Saving Data in SQL Databases
Scott Main11f03b42012-09-07 15:26:39 -0700163 </a>
164 </li>
165 </ul>
166 </li>
167
168 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -0800169 <div class="nav-section-header">
170 <a href="<?cs var:toroot ?>training/basics/intents/index.html"
171 description=
172 "How to build a user experience that leverages other apps available
173 on the device to perform advanced user tasks, such as capture a photo or view
174 an address on a map."
175 >Interacting with Other Apps</a>
176 </div>
Scott Main50e990c2012-06-21 17:14:39 -0700177 <ul>
178 <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html">
Scott Main22cc2762012-11-07 16:35:16 -0800179 Sending the User to Another App
Scott Main50e990c2012-06-21 17:14:39 -0700180 </a>
181 </li>
182 <li><a href="<?cs var:toroot ?>training/basics/intents/result.html">
Scott Main22cc2762012-11-07 16:35:16 -0800183 Getting a Result from the Activity
Scott Main50e990c2012-06-21 17:14:39 -0700184 </a>
185 </li>
186 <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html">
Scott Main22cc2762012-11-07 16:35:16 -0800187 Allowing Other Apps to Start Your Activity
Scott Main50e990c2012-06-21 17:14:39 -0700188 </a>
189 </li>
190 </ul>
191 </li>
192
Scott Main50e990c2012-06-21 17:14:39 -0700193 </ul>
Joe Malinf0f5efb2012-10-27 11:16:19 -0700194 </li><!-- end getting started -->
Joe Malin45edbb72013-08-26 14:55:54 -0700195 <li class="nav-section">
196 <div class="nav-section-header">
197 <a href="<?cs var:toroot ?>training/building-content-sharing.html">
198 <span class="small">Building Apps with</span><br/>Content Sharing
199 </a>
200 </div>
201 <ul>
202 <li class="nav-section">
203 <div class="nav-section-header">
204 <a href="<?cs var:toroot ?>training/sharing/index.html"
205 description=
206 "How to take your app interaction to the next level by sharing
207 information with other apps, receive information back, and provide a simple and
208 scalable way to perform Share actions with user content."
209 >Sharing Simple Data</a>
210 </div>
211 <ul>
212 <li>
213 <a href="<?cs var:toroot ?>training/sharing/send.html">
214 Sending Simple Data to Other Apps
215 </a>
216 </li>
217 <li>
218 <a href="<?cs var:toroot ?>training/sharing/receive.html">
219 Receiving Simple Data from Other Apps
220 </a>
221 </li>
222 <li>
223 <a href="<?cs var:toroot ?>training/sharing/shareaction.html">
224 Adding an Easy Share Action
225 </a>
226 </li>
227 </ul>
228 </li>
229 <li class="nav-section">
230 <div class="nav-section-header">
231 <a href="<?cs var:toroot?>training/secure-file-sharing/index.html"
232 description=
233 "How to provide secure access to a file associated with your app using a content
234 URI and temporary access permissions."
235 >Sharing Files</a>
236 </div>
237 <ul>
238 <li>
239 <a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html">
240 Setting Up File Sharing
241 </a>
242 </li>
243 <li>
244 <a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html">
245 Sharing a File
246 </a>
247 </li>
248 <li>
249 <a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html">
250 Requesting a Shared File
251 </a>
252 </li>
253 <li>
254 <a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html">
255 Retrieving File Information
256 </a>
257 </li>
258 </ul>
259 </li>
260 <li class="nav-section">
261 <div class="nav-section-header">
262 <a href="<?cs var:toroot ?>training/beam-files/index.html"
263 description=
264 "How to transfer files between devices using the NFC Android Beam feature."
265 >Sharing Files with NFC</a>
266 </div>
267 <ul>
268 <li>
269 <a href="<?cs var:toroot ?>training/beam-files/send-files.html"
270 >Sending Files to Another Device</a>
271 </li>
272 <li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html"
273 >Receiving Files from Another Device</a></li>
274 </ul>
275 </li>
276 </ul>
277 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800278
279
Scott Main22cc2762012-11-07 16:35:16 -0800280
Scott Main50e990c2012-06-21 17:14:39 -0700281 <li class="nav-section">
282 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -0800283 <a href="<?cs var:toroot ?>training/building-multimedia.html">
284 <span class="small">Building Apps with</span><br/>Multimedia
285 </a>
286 </div>
287 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800288
Scott Main22cc2762012-11-07 16:35:16 -0800289 <li class="nav-section">
290 <div class="nav-section-header">
291 <a href="<?cs var:toroot ?>training/managing-audio/index.html"
292 description=
293 "How to respond to hardware audio key presses, request audio focus
294 when playing audio, and respond appropriately to changes in audio focus."
295 >Managing Audio Playback</a>
296 </div>
297 <ul>
298 <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
299 Controlling Your App's Volume and Playback
300 </a>
301 </li>
302 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
303 Managing Audio Focus
304 </a>
305 </li>
306 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
307 Dealing with Audio Output Hardware
308 </a>
309 </li>
310 </ul>
311 </li>
312
313 <li class="nav-section">
314 <div class="nav-section-header">
315 <a href="<?cs var:toroot ?>training/camera/index.html"
316 description=
317 "How to leverage existing camera apps on the user's device to capture
318 photos or control the camera hardware directly and build your own camera app."
319 >Capturing Photos</a>
320 </div>
321 <ul>
322 <li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
323 Taking Photos Simply
324 </a>
325 </li>
326 <li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
327 Recording Videos Simply
328 </a>
329 </li>
330 <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
331 Controlling the Camera
332 </a>
333 </li>
334 </ul>
335 </li>
Joe Fernandez84fe6172013-10-29 01:55:12 -0700336
337 <li class="nav-section">
338 <div class="nav-section-header">
339 <a href="<?cs var:toroot ?>training/printing/index.html"
340 description=
341 "How to print photos, HTML documents, and custom documents from your app."
342 >Printing Content</a>
343 </div>
344 <ul>
345 <li><a href="<?cs var:toroot ?>training/printing/photos.html">
346 Photos
347 </a>
348 </li>
349 <li><a href="<?cs var:toroot ?>training/printing/html-docs.html">
350 HTML Documents
351 </a>
352 </li>
353 <li><a href="<?cs var:toroot ?>training/printing/custom-docs.html">
354 Custom Documents
355 </a>
356 </li>
357 </ul>
358 </li>
359
Scott Main22cc2762012-11-07 16:35:16 -0800360 </ul>
361 </li>
362 <!-- End multimedia -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800363
364
Scott Main22cc2762012-11-07 16:35:16 -0800365
366 <li class="nav-section">
367 <div class="nav-section-header">
368 <a href="<?cs var:toroot ?>training/building-graphics.html">
369 <span class="small">Building Apps with</span><br/>Graphics &amp; Animation
370 </a>
371 </div>
372 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800373
Scott Main22cc2762012-11-07 16:35:16 -0800374 <li class="nav-section">
375 <div class="nav-section-header">
376 <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html"
377 description=
378 "How to load and process bitmaps while keeping your user interface
379 responsive and avoid exceeding memory limits."
380 >Displaying Bitmaps Efficiently</a>
381 </div>
382 <ul>
383 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
384 Loading Large Bitmaps Efficiently
385 </a>
386 </li>
387 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html">
388 Processing Bitmaps Off the UI Thread
389 </a>
390 </li>
391 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html">
392 Caching Bitmaps
393 </a>
394 </li>
kmccormick75715422013-03-04 15:25:40 -0800395 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html">
396 Managing Bitmap Memory
397 </a>
398 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800399 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
400 Displaying Bitmaps in Your UI
401 </a></li>
402 </ul>
403 </li>
404
405 <li class="nav-section">
406 <div class="nav-section-header">
407 <a href="<?cs var:toroot?>training/graphics/opengl/index.html"
408 description=
409 "How to create OpenGL graphics within the Android app framework
410 and respond to touch input."
411 >Displaying Graphics with OpenGL ES</a>
412 </div>
413 <ul>
414 <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
415 Building an OpenGL ES Environment
416 </a>
417 </li>
418 <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
419 Defining Shapes
420 </a>
421 </li>
422 <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
423 Drawing Shapes
424 </a>
425 </li>
426 <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
427 Applying Projection and Camera Views
428 </a>
429 </li>
430 <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
431 Adding Motion
432 </a>
433 </li>
434 <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
435 Responding to Touch Events
436 </a>
437 </li>
438 </ul>
439 </li>
Ricardo Cerverade113062015-01-12 12:45:54 -0800440
441 <li class="nav-section">
442 <div class="nav-section-header">
443 <a href="<?cs var:toroot?>training/transitions/index.html"
444 description=
445 "How to animate state changes in a view hierarchy using transitions."
446 >Animating Views Using Scenes and Transitions</a>
447 </div>
448 <ul>
449 <li><a href="<?cs var:toroot ?>training/transitions/overview.html">
450 The Transitions Framework
451 </a>
452 </li>
453 <li><a href="<?cs var:toroot ?>training/transitions/scenes.html">
454 Creating a Scene
455 </a>
456 </li>
457 <li><a href="<?cs var:toroot ?>training/transitions/transitions.html">
458 Applying a Transition
459 </a>
460 </li>
461 <li><a href="<?cs var:toroot ?>training/transitions/custom-transitions.html">
462 Creating Custom Transitions
463 </a>
464 </li>
465
466 </ul>
467 </li>
468
Scott Main22cc2762012-11-07 16:35:16 -0800469 <li class="nav-section">
470 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html"
471 description=
472 "How to add transitional animations to your user interface.">
473 Adding Animations
474 </a></div>
475 <ul>
476 <li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
477 Crossfading Two Views
478 </a>
479 </li>
480 <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
481 Using ViewPager for Screen Slide
482 </a>
483 </li>
484 <li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
485 Displaying Card Flip Animations
486 </a>
487 </li>
488 <li><a href="<?cs var:toroot ?>training/animation/zoom.html">
489 Zooming a View
490 </a>
491 </li>
492 <li><a href="<?cs var:toroot ?>training/animation/layout.html">
493 Animating Layout Changes
494 </a>
495 </li>
496 </ul>
497 </li>
498 </ul>
499 </li>
500 <!-- End graphics and animation -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800501
Scott Main22cc2762012-11-07 16:35:16 -0800502
503 <li class="nav-section">
504 <div class="nav-section-header">
505 <a href="<?cs var:toroot ?>training/building-connectivity.html">
506 <span class="small">Building Apps with</span><br/>
507 Connectivity &amp; the Cloud
508 </a>
509 </div>
510 <ul>
511
Scott Main22cc2762012-11-07 16:35:16 -0800512 <li class="nav-section">
513 <div class="nav-section-header">
514 <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html"
515 description=
516 "How to find and connect to local devices using Network Service
Scott Mainf5e09702013-08-22 17:19:17 -0700517 Discovery and how to create peer-to-peer connections with Wi-Fi."
Scott Main22cc2762012-11-07 16:35:16 -0800518 >Connecting Devices Wirelessly</a>
519 </div>
520 <ul>
521 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
522 Using Network Service Discovery
523 </a>
524 </li>
525 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
Scott Mainf5e09702013-08-22 17:19:17 -0700526 Creating P2P Connections with Wi-Fi
Scott Main22cc2762012-11-07 16:35:16 -0800527 </a>
528 </li>
529 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
Scott Main2d006d22013-09-16 13:11:07 -0700530 Using Wi-Fi P2P for Service Discovery
Scott Main22cc2762012-11-07 16:35:16 -0800531 </a>
532 </li>
533 </ul>
534 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800535 <li class="nav-section">
536 <div class="nav-section-header">
537 <a href="<?cs var:toroot ?>training/basics/network-ops/index.html"
538 description=
539 "How to create a network connection, monitor the connection for changes
540 in connectivity, and perform transactions with XML data."
541 >Performing Network Operations</a>
542 </div>
543 <ul>
544 <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
545 Connecting to the Network
546 </a>
547 </li>
548 <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
549 Managing Network Usage
550 </a>
551 </li>
552 <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
553 Parsing XML Data
554 </a>
555 </li>
556 </ul>
557 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800558 <li class="nav-section">
559 <div class="nav-section-header">
560 <a href="<?cs var:toroot ?>training/efficient-downloads/index.html"
561 description=
562 "How to minimize your app's impact on the battery when performing downloads
563 and other network transactions."
564 >Transferring Data Without Draining the Battery</a>
565 </div>
566 <ul>
567 <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
568 Optimizing Downloads for Efficient Network Access
569 </a>
570 </li>
571 <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
572 Minimizing the Effect of Regular Updates
573 </a>
574 </li>
575 <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
576 Redundant Downloads are Redundant
577 </a>
578 </li>
579 <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
580 Modifying Patterns Based on the Connectivity Type
581 </a>
582 </li>
583 </ul>
584 </li>
585
586 <li class="nav-section">
587 <div class="nav-section-header">
588 <a href="<?cs var:toroot ?>training/cloudsync/index.html"
589 description=
590 "How to sync and back up app and user data to remote web services in the
591 cloud and how to restore the data back to multiple devices."
592 >Syncing to the Cloud</a>
593 </div>
594 <ul>
595 <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
596 Using the Backup API
597 </a>
598 </li>
599 <li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
600 Making the Most of Google Cloud Messaging
601 </a>
602 </li>
603 </ul>
kmccormick71baac12013-06-11 13:17:55 -0700604 <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html"
605 description=
606 "How to design a robust conflict resolution strategy for apps that save data to the cloud."
607 >Resolving Cloud Save Conflicts
608 </a>
Joe Malin2e1c7b72013-08-30 15:30:54 -0700609 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800610 </li>
Joe Maline9df5112013-06-07 13:38:00 -0700611 <li class="nav-section">
612 <div class="nav-section-header">
613 <a href="<?cs var:toroot ?>training/sync-adapters/index.html"
614 description="How to transfer data between the cloud and the device using the Android
615 sync adapter framework"
616 >Transferring Data Using Sync Adapters</a>
617 </div>
618 <ul>
619 <li>
620 <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html">
621 Creating a Stub Authenticator
622 </a>
623 </li>
624 <li>
625 <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html">
626 Creating a Stub Content Provider
627 </a>
628 </li>
629 <li>
630 <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html">
631 Creating a Sync Adapter
632 </a>
633 </li>
634 <li>
635 <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html">
636 Running a Sync Adapter
637 </a>
638 </li>
639 </ul>
640 </li>
Katie McCormick1a89ae42014-03-18 17:13:50 -0700641 <li class="nav-section">
642 <div class="nav-section-header">
643 <a href="<?cs var:toroot ?>training/volley/index.html"
644 description="How to perform fast, scalable UI operations over the network using Volley"
645 >Transmitting Network Data Using Volley</a>
646 </div>
647 <ul>
648 <li>
649 <a href="<?cs var:toroot ?>training/volley/simple.html">
650 Sending a Simple Request
651 </a>
652 </li>
653 <li>
654 <a href="<?cs var:toroot ?>training/volley/requestqueue.html">
655 Setting Up a RequestQueue
656 </a>
657 </li>
658 <li>
659 <a href="<?cs var:toroot ?>training/volley/request.html">
660 Making a Standard Request
661 </a>
662 </li>
663 <li>
664 <a href="<?cs var:toroot ?>training/volley/request-custom.html">
665 Implementing a Custom Request
666 </a>
667 </li>
668 </ul>
669 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800670 </ul>
671 </li>
672 <!-- End connectivity and cloud -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800673
674
Scott Main22cc2762012-11-07 16:35:16 -0800675
676 <li class="nav-section">
677 <div class="nav-section-header">
678 <a href="<?cs var:toroot ?>training/building-userinfo.html">
679 <span class="small">Building Apps with</span><br/>
680 User Info &amp; Location
681 </a>
682 </div>
683 <ul>
Joe Malin421435d2013-01-15 15:06:08 -0800684 <li class="nav-section">
685 <div class="nav-section-header">
686 <a href="<?cs var:toroot ?>training/contacts-provider/index.html"
687 description=
688 "How to use Android's central address book, the Contacts Provider, to
689 display contacts and their details and modify contact information.">
690 Accessing Contacts Data</a>
691 </div>
692 <ul>
693 <li>
694 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html">
695 Retrieving a List of Contacts
696 </a>
697 </li>
698 <li>
699 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html">
700 Retrieving Details for a Contact
701 </a>
702 </li>
703 <li>
704 <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html">
705 Modifying Contacts Using Intents
706 </a>
707 </li>
708 <li>
709 <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html">
710 Displaying the Quick Contact Badge
711 </a>
712 </li>
713 </ul>
714 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800715
716 <li class="nav-section">
717 <div class="nav-section-header">
Joe Malin3ddba7e2013-03-04 10:33:30 -0800718 <a href="<?cs var:toroot ?>training/location/index.html"
719 description="How to add location-aware features to your app by getting the user's current location.">
720 Making Your App Location-Aware
721 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800722 </div>
723 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800724 <li>
725 <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
Sarah Maddox65dc25d2014-10-28 16:30:24 +1100726 Getting the Last Known Location
Joe Malin3ddba7e2013-03-04 10:33:30 -0800727 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800728 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800729 <li>
730 <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
731 Receiving Location Updates
732 </a>
Scott Main22cc2762012-11-07 16:35:16 -0800733 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -0800734 <li>
735 <a href="<?cs var:toroot ?>training/location/display-address.html">
Scott Main22cc2762012-11-07 16:35:16 -0800736 Displaying a Location Address
737 </a>
738 </li>
Eric Gilmorea0e3eb72015-01-29 16:21:43 -0800739 <li><a href="<?cs var:toroot ?>training/location/geofencing.html">
740 Creating and Monitoring Geofences
741 </a>
742 </li>
Scott Main22cc2762012-11-07 16:35:16 -0800743 </ul>
744 </li>
745 </ul>
746 </li>
747 <!-- End privacy and location -->
Joe Malin3ddba7e2013-03-04 10:33:30 -0800748
749
Robert Ly2728c2a2014-06-15 22:00:13 -0700750 <li class="nav-section">
751 <div class="nav-section-header">
752 <a href="<?cs var:toroot ?>training/building-wearables.html">
753 <span class="small">Building Apps for</span><br/>
754 Wearables
755 </a>
756 </div>
757 <ul>
758 <li class="nav-section">
759 <div class="nav-section-header">
760 <a href="<?cs var:toroot ?>training/wearables/notifications/index.html"
761 description="How to build handheld notifications that are synced to
762 and look great on wearables."
763 >Adding Wearable Features to Notifications</a>
764 </div>
765 <ul>
766 <li>
767 <a href="<?cs var:toroot ?>training/wearables/notifications/creating.html">Creating a Notification</a>
768 </li>
769 <li>
770 <a href="<?cs var:toroot ?>training/wearables/notifications/voice-input.html">Receiving Voice Input in a Notification</a>
771 </li>
772 <li>
773 <a href="<?cs var:toroot ?>training/wearables/notifications/pages.html">Adding Pages to a Notification</a>
774 </li>
775 <li>
776 <a href="<?cs var:toroot ?>training/wearables/notifications/stacks.html">Stacking Notifications</a>
777 </li>
778 </ul>
779 </li>
780
781 <li class="nav-section">
782 <div class="nav-section-header">
783 <a href="<?cs var:toroot ?>training/wearables/apps/index.html"
784 description="How to build apps that run directly on wearables."
785 >Creating Wearable Apps</a>
786 </div>
787 <ul>
788 <li>
789 <a href="<?cs var:toroot ?>training/wearables/apps/creating.html">Creating and Running a Wearable App</a>
790 </li>
791 <li>
792 <a href="<?cs var:toroot ?>training/wearables/apps/layouts.html">Creating Custom Layouts</a>
793 </li>
794 <li>
795 <a href="<?cs var:toroot ?>training/wearables/apps/voice.html">Adding Voice Capabilities</a>
796 </li>
797 <li>
798 <a href="<?cs var:toroot ?>training/wearables/apps/packaging.html">Packaging Wearable Apps</a>
799 </li>
800 <li>
801 <a href="<?cs var:toroot ?>training/wearables/apps/bt-debugging.html">Debugging over Bluetooth</a>
802 </li>
803 </ul>
804 </li>
805
806 <li class="nav-section">
807 <div class="nav-section-header">
Ricardo Cerverabab2bf72014-09-26 13:00:34 -0700808 <a href="<?cs var:toroot ?>training/wearables/ui/index.html"
809 description="How to create custom user interfaces for wearable apps."
810 >Creating Custom UIs</a>
811 </div>
812 <ul>
813 <li>
814 <a href="<?cs var:toroot ?>training/wearables/ui/layouts.html">Defining Layouts</a>
815 </li>
816 <li>
817 <a href="<?cs var:toroot ?>training/wearables/ui/cards.html">Creating Cards</a>
818 </li>
819 <li>
820 <a href="<?cs var:toroot ?>training/wearables/ui/lists.html">Creating Lists</a>
821 </li>
822 <li>
823 <a href="<?cs var:toroot ?>training/wearables/ui/2d-picker.html">Creating a 2D Picker</a>
824 </li>
825 <li>
826 <a href="<?cs var:toroot ?>training/wearables/ui/confirm.html">Showing Confirmations</a>
827 </li>
828 <li>
829 <a href="<?cs var:toroot ?>training/wearables/ui/exit.html">Exiting Full-Screen Activities</a>
830 </li>
831 </ul>
832 </li>
833
834 <li class="nav-section">
835 <div class="nav-section-header">
Robert Ly2728c2a2014-06-15 22:00:13 -0700836 <a href="<?cs var:toroot ?>training/wearables/data-layer/index.html"
837 description="How to sync data between handhelds and wearables."
838 >Sending and Syncing Data</a>
839 </div>
840 <ul>
841 <li>
842 <a href="<?cs var:toroot ?>training/wearables/data-layer/accessing.html">Accessing the Wearable Data Layer</a>
843 </li>
844 <li>
845 <a href="<?cs var:toroot ?>training/wearables/data-layer/data-items.html">Syncing Data Items</a>
846 </li>
847 <li>
848 <a href="<?cs var:toroot ?>training/wearables/data-layer/assets.html">Transferring Assets</a>
849 </li>
850 <li>
851 <a href="<?cs var:toroot ?>training/wearables/data-layer/messages.html">Sending and Receiving Messages</a>
852 </li>
853 <li>
854 <a href="<?cs var:toroot ?>training/wearables/data-layer/events.html">Handling Data Layer Events</a>
855 </li>
856 </ul>
857 </li>
Ricardo Cervera7db29792014-11-21 11:47:40 -0800858
859 <li class="nav-section">
860 <div class="nav-section-header">
861 <a href="<?cs var:toroot ?>training/wearables/watch-faces/index.html"
Ricardo Cerveraad690822014-12-10 13:05:17 -0800862 description="How to create watch faces for wearables."
863 >Creating Watch Faces</a>
Ricardo Cervera7db29792014-11-21 11:47:40 -0800864 </div>
865 <ul>
866 <li>
867 <a href="<?cs var:toroot ?>training/wearables/watch-faces/designing.html">Designing Watch Faces</a>
868 </li>
869 <li>
870 <a href="<?cs var:toroot ?>training/wearables/watch-faces/service.html">Building a Watch Face Service</a>
871 </li>
872 <li>
873 <a href="<?cs var:toroot ?>training/wearables/watch-faces/drawing.html">Drawing Watch Faces</a>
874 </li>
875 <li>
876 <a href="<?cs var:toroot ?>training/wearables/watch-faces/information.html">Showing Information in Watch Faces</a>
877 </li>
878 <li>
879 <a href="<?cs var:toroot ?>training/wearables/watch-faces/configuration.html">Providing Configuration Activities</a>
880 </li>
881 <li>
882 <a href="<?cs var:toroot ?>training/wearables/watch-faces/issues.html">Addressing Common Issues</a>
883 </li>
884 <li>
885 <a href="<?cs var:toroot ?>training/wearables/watch-faces/performance.html">Optimizing Performance and Battery Life</a>
886 </li>
887 </ul>
888 </li>
889
Luan Nguyen5aad2c92014-10-13 11:59:33 -0700890 <li>
891 <a href="<?cs var:toroot ?>training/articles/wear-location-detection.html"
892 description=
893 "How to detect location data on Android Wear devices."
894 >Detecting Location</a>
895 </li>
Robert Ly2728c2a2014-06-15 22:00:13 -0700896 </ul>
897 </li>
Robert Ly2728c2a2014-06-15 22:00:13 -0700898 <!-- End Building for wearables -->
Scott Main22cc2762012-11-07 16:35:16 -0800899
Ricardo Cervera414978a2014-10-08 17:00:30 -0700900
Joe Fernandezd86a2f52014-09-11 09:52:07 -0700901 <!-- Start: Building for TV -->
902 <li class="nav-section">
903 <div class="nav-section-header">
904 <a href="<?cs var:toroot ?>training/tv/index.html">
905 <span class="small">Building Apps for</span><br/>
906 TV
907 </a>
908 </div>
909 <ul>
910
911 <li class="nav-section">
912 <div class="nav-section-header">
Joe Fernandeze6b9abb2014-10-05 12:44:04 -0700913
Joe Fernandezd86a2f52014-09-11 09:52:07 -0700914 <a href="<?cs var:toroot ?>training/tv/start/index.html"
David Friedman827cc882014-12-19 16:28:17 -0800915 ja-lang="TV アプリのビルド"
Joe Fernandezd86a2f52014-09-11 09:52:07 -0700916 description="How to start building TV apps or extend your existing app to run on TV
917 devices.">
918 Building TV Apps</a>
919 </div>
920 <ul>
921 <li>
David Friedman827cc882014-12-19 16:28:17 -0800922 <a href="<?cs var:toroot ?>training/tv/start/start.html"
923 ja-lang="TV アプリのビルドを開始する">
Joe Fernandezd86a2f52014-09-11 09:52:07 -0700924 Getting Started with TV Apps</a>
925 </li>
926 <li>
David Friedman827cc882014-12-19 16:28:17 -0800927 <a href="<?cs var:toroot ?>training/tv/start/hardware.html"
928 ja-lang="TV ハードウェアを処理する">
Joe Fernandezd86a2f52014-09-11 09:52:07 -0700929 Handling TV Hardware</a>
930 </li>
931 <li>
David Friedman827cc882014-12-19 16:28:17 -0800932 <a href="<?cs var:toroot ?>training/tv/start/layouts.html"
933 ja-lang="TV 向けレイアウトをビルドする">
Joe Fernandezd86a2f52014-09-11 09:52:07 -0700934 Building TV Layouts</a>
935 </li>
936 <li>
David Friedman827cc882014-12-19 16:28:17 -0800937 <a href="<?cs var:toroot ?>training/tv/start/navigation.html"
938 ja-lang="TV 用のナビゲーションを作成する">
Joe Fernandezd86a2f52014-09-11 09:52:07 -0700939 Creating TV Navigation</a>
940 </li>
941 </ul>
942 </li>
943
Joe Fernandezf6663552014-10-02 10:13:16 -0700944 <li class="nav-section">
945 <div class="nav-section-header">
946 <a href="<?cs var:toroot ?>training/tv/playback/index.html"
Joe Fernandez76db15a2014-12-19 22:38:47 -0800947 ja-lang="TV 再生アプリのビルド"
Joe Fernandezf6663552014-10-02 10:13:16 -0700948 description="How to build apps that provide media catalogs and play content.">
949 Building TV Playback Apps</a>
950 </div>
951 <ul>
952 <li>
David Friedman827cc882014-12-19 16:28:17 -0800953 <a href="<?cs var:toroot ?>training/tv/playback/browse.html"
954 ja-lang="カタログ ブラウザを作成する">
Joe Fernandezf6663552014-10-02 10:13:16 -0700955 Creating a Catalog Browser</a>
956 </li>
957 <li>
Scott Roweda0c5de52014-12-03 13:21:53 -0800958 <a href="<?cs var:toroot ?>training/tv/playback/card.html">
959 Providing a Card View</a>
960 </li>
961 <li>
David Friedman827cc882014-12-19 16:28:17 -0800962 <a href="<?cs var:toroot ?>training/tv/playback/details.html"
963 ja-lang="詳細ビューをビルドする">
Joe Fernandezf6663552014-10-02 10:13:16 -0700964 Building a Details View</a>
965 </li>
Scott Rowe6bd081ca2014-10-15 14:27:25 -0700966 <li>
David Friedman827cc882014-12-19 16:28:17 -0800967 <a href="<?cs var:toroot ?>training/tv/playback/now-playing.html"
968 ja-lang="再生中カードを表示する">
Scott Rowe6bd081ca2014-10-15 14:27:25 -0700969 Displaying a Now Playing Card</a>
970 </li>
Joe Fernandezf6663552014-10-02 10:13:16 -0700971 </ul>
972 </li>
973
Joe Fernandeze6b9abb2014-10-05 12:44:04 -0700974 <li class="nav-section">
975 <div class="nav-section-header">
976 <a href="<?cs var:toroot ?>training/tv/discovery/index.html"
Joe Fernandez72136562014-10-17 00:01:58 -0700977 description="How to help users discover content from your app.">
Joe Fernandeze6b9abb2014-10-05 12:44:04 -0700978 Helping Users Find Content on TV</a>
979 </div>
980 <ul>
981 <li>
982 <a href="<?cs var:toroot ?>training/tv/discovery/recommendations.html">
983 Recommending TV Content</a>
984 </li>
985 <li>
Scott Rowee2b44f82014-11-13 10:33:33 -0800986 <a href="<?cs var:toroot ?>training/tv/discovery/searchable.html">
987 Making TV Apps Searchable</a>
988 <li>
Joe Fernandeze6b9abb2014-10-05 12:44:04 -0700989 <a href="<?cs var:toroot ?>training/tv/discovery/in-app-search.html">
990 Searching within TV Apps</a>
991 </li>
992 </ul>
993 </li>
994
Joe Fernandez15edcda2014-10-05 17:04:13 -0700995 <li>
996 <a href="<?cs var:toroot ?>training/tv/games/index.html"
997 description="How to build games for TV.">
998 Building TV Games</a>
999 </li>
1000
Scott Roweab8c34f2015-02-05 11:46:10 -08001001 <li class="nav-section">
1002 <div class="nav-section-header">
1003 <a href="<?cs var:toroot ?>training/tv/tif/index.html"
Joe Fernandez72136562014-10-17 00:01:58 -07001004 description="How to build Live TV apps.">
1005 Building Live TV Apps</a>
Scott Roweab8c34f2015-02-05 11:46:10 -08001006 </div>
1007 <ul>
1008 <li>
1009 <a href="<?cs var:toroot ?>training/tv/tif/tvinput.html">
1010 Developing a TV Input Service</a>
1011 <li>
1012 <a href="<?cs var:toroot ?>training/tv/tif/channel.html">
1013 Working with Channel Data</a>
1014 </li>
1015 <li>
1016 <a href="<?cs var:toroot ?>training/tv/tif/ui.html">
1017 Managing User Interaction</a>
1018 </li>
1019 </ul>
Andrew Solovaybab25742014-10-10 15:30:53 -07001020 </li>
Scott Rowe7515d182014-12-09 15:51:39 -08001021
1022 <li>
1023 <a href="<?cs var:toroot ?>training/tv/publishing/checklist.html"
1024 description="An itemized list of requirements for TV apps.">
1025 TV Apps Checklist</a>
1026 </li>
Joe Fernandezd86a2f52014-09-11 09:52:07 -07001027 </ul>
1028 </li>
1029 <!-- End: Building for TV -->
1030
Andrew Solovay7fe755e2014-11-12 23:33:37 -08001031
Quddus Chongc6aed462014-11-10 18:50:17 -08001032 <!-- Start: Building for Auto -->
1033 <li class="nav-section">
1034 <div class="nav-section-header">
1035 <a href="<?cs var:toroot ?>training/auto/index.html">
1036 <span class="small">Building Apps for</span><br/>
1037 Auto
1038 </a>
1039 </div>
1040 <ul>
1041 <li>
1042 <a href="<?cs var:toroot ?>training/auto/start/index.html"
1043 description="How to start building or extending apps that work
1044 with Auto devices.">
1045 Getting Started with Auto</a>
1046 </li>
Andrew Solovay7fe755e2014-11-12 23:33:37 -08001047 <li>
1048 <a href="<?cs var:toroot ?>training/auto/audio/index.html"
1049 description="How to extend audio apps to play content on Auto devices.">
1050 Playing Audio for Auto</a>
1051 </li>
Andrew Solovaya7f226b2014-11-12 22:27:01 -08001052 <li>
1053 <a href="<?cs var:toroot ?>training/auto/messaging/index.html"
1054 description="How to extend text messaging apps to work with Auto devices.">
1055 Messaging for Auto</a>
1056 </li>
Quddus Chongc6aed462014-11-10 18:50:17 -08001057 </ul>
1058 </li>
1059 <!-- End: Building for Auto -->
1060
Joe Fernandezd86a2f52014-09-11 09:52:07 -07001061
Andrew Solovay79cb98c2015-02-11 13:12:18 -08001062 <!-- Start: Building for Work -->
1063 <li class="nav-section">
1064 <div class="nav-section-header">
1065 <a href="<?cs var:toroot ?>training/enterprise/index.html">
1066 <span class="small">Building Apps for</span><br/>
1067 Work
1068 </a>
1069 </div>
1070 <ul>
1071 <li><a href="<?cs var:toroot ?>training/enterprise/app-compatibility.html">
1072 Ensuring Compatibility with Managed Profiles
1073 </a>
1074 </li>
1075 <li><a href="<?cs var:toroot ?>training/enterprise/app-restrictions.html">
1076 Implementing App Restrictions
1077 </a>
1078 </li>
1079 <li><a href="<?cs var:toroot ?>training/enterprise/work-policy-ctrl.html">
1080 Building a Work Policy Controller
1081 </a>
1082 </li>
1083 </ul>
1084 </li>
1085 <!-- End: Building for Work -->
1086
1087
Scott Main22cc2762012-11-07 16:35:16 -08001088 <li class="nav-section">
1089 <div class="nav-section-header">
1090 <a href="<?cs var:toroot ?>training/best-ux.html">
1091 <span class="small">Best Practices for</span><br/>
Scott Main81428982013-12-09 18:02:48 -08001092 Interaction &amp; Engagement
Scott Main50e990c2012-06-21 17:14:39 -07001093 </a>
1094 </div>
1095 <ul>
1096
1097 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001098 <div class="nav-section-header">
1099 <a href="<?cs var:toroot ?>training/design-navigation/index.html"
1100 description=
1101 "How to plan your app's screen hierarchy and forms of navigation so users can
1102 effectively and intuitively traverse your app content using various navigation
1103 patterns."
1104 >Designing Effective Navigation</a>
Scott Mainddab47b2012-10-02 17:48:11 -07001105 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001106 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001107 <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
1108 Planning Screens and Their Relationships
1109 </a>
1110 </li>
1111 <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
1112 Planning for Multiple Touchscreen Sizes
1113 </a>
1114 </li>
1115 <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
1116 Providing Descendant and Lateral Navigation
1117 </a>
1118 </li>
1119 <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
1120 Providing Ancestral and Temporal Navigation
1121 </a>
1122 </li>
1123 <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
1124 Putting it All Together: Wireframing the Example App
1125 </a>
1126 </li>
1127 </ul>
1128 </li>
1129
1130 <li class="nav-section">
1131 <div class="nav-section-header">
1132 <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
1133 description=
Scott Main7c840552013-03-26 18:53:01 -07001134 "How to implement various navigation patterns such as swipe views,
1135 a navigation drawer, and up navigation."
Scott Main22cc2762012-11-07 16:35:16 -08001136 >Implementing Effective Navigation</a>
1137 </div>
1138 <ul>
1139 <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
Scott Main7c840552013-03-26 18:53:01 -07001140 Creating Swipe Views with Tabs
1141 </a>
1142 </li>
1143 <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
1144 Creating a Navigation Drawer
Scott Main22cc2762012-11-07 16:35:16 -08001145 </a>
1146 </li>
1147 <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
Scott Main7c840552013-03-26 18:53:01 -07001148 Providing Up Navigation
Scott Main22cc2762012-11-07 16:35:16 -08001149 </a>
1150 </li>
1151 <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
Scott Main7c840552013-03-26 18:53:01 -07001152 Providing Proper Back Navigation
Scott Main22cc2762012-11-07 16:35:16 -08001153 </a>
1154 </li>
1155 <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
1156 Implementing Descendant Navigation
1157 </a>
1158 </li>
1159 </ul>
1160 </li>
&& repo sync -j80aae0002012-10-04 16:34:23 -07001161
1162 <li class="nav-section">
1163 <div class="nav-section-header">
1164 <a href="<?cs var:toroot ?>training/notify-user/index.html"
1165 description=
Joe Malinf0f5efb2012-10-27 11:16:19 -07001166 "How to display messages called notifications outside of
&& repo sync -j80aae0002012-10-04 16:34:23 -07001167 your application's UI."
1168 >Notifying the User</a>
1169 </div>
1170 <ul>
1171 <li>
1172 <a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
1173 Building a Notification
1174 </a>
1175 </li>
1176 <li>
1177 <a href="<?cs var:toroot ?>training/notify-user/navigation.html">
1178 Preserving Navigation when Starting an Activity
1179 </a>
1180 </li>
1181 <li>
1182 <a href="<?cs var:toroot ?>training/notify-user/managing.html">
1183 Updating Notifications
1184 </a>
1185 </li>
1186 <li>
1187 <a href="<?cs var:toroot ?>training/notify-user/expanded.html">
1188 Using Big View Styles
1189 </a>
1190 </li>
1191 <li>
1192 <a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
1193 Displaying Progress in a Notification
1194 </a>
1195 </li>
1196 </ul>
1197 </li>
Joe Malinf71f5092014-02-13 10:39:47 -08001198 <li class="nav-section">
1199 <div class="nav-section-header">
1200 <a href="<?cs var:toroot ?>training/swipe/index.html"
1201 description=
1202 "How to modify your app's layout to support manual content updates triggered by the
1203 swipe-to-refresh gesture."
1204 >Supporting Swipe-to-Refresh</a>
1205 </div>
1206 <ul>
1207 <li>
1208 <a href="<?cs var:toroot ?>training/swipe/add-swipe-interface.html"
1209 >Adding Swipe-to-Refresh To Your App</a></li>
1210 <li>
1211 <a href="<?cs var:toroot ?>training/swipe/respond-refresh-request.html"
1212 >Responding to a Refresh Gesture</a>
1213 </li>
1214 </ul>
1215 </li>
&& repo sync -j80aae0002012-10-04 16:34:23 -07001216 <li class="nav-section">
1217 <div class="nav-section-header">
1218 <a href="<?cs var:toroot ?>training/search/index.html"
1219 description=
1220 "How to properly add a search interface to your app and create a searchable database."
1221 >Adding Search Functionality</a>
1222 </div>
1223 <ul>
1224 <li><a href="<?cs var:toroot ?>training/search/setup.html">
1225 Setting up the Search Interface
1226 </a>
1227 </li>
1228 <li><a href="<?cs var:toroot ?>training/search/search.html">
1229 Storing and Searching for Data
1230 </a>
1231 </li>
1232 <li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
1233 Remaining Backward Compatible
1234 </a>
1235 </li>
1236 </ul>
1237 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001238
Scott Main81428982013-12-09 18:02:48 -08001239 <li class="nav-section">
1240 <div class="nav-section-header">
1241 <a href="<?cs var:toroot ?>training/app-indexing/index.html"
1242 description=
1243 "How to enable deep linking and indexing of your application
1244content so that users can open this content directly from their mobile search
1245results."
quddusc240aca32013-12-19 16:59:17 -08001246 >Making Your App Content Searchable by Google</a>
Scott Main81428982013-12-09 18:02:48 -08001247 </div>
1248 <ul>
1249 <li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html">
1250 Enabling Deep Links for App Content
1251 </a>
1252 </li>
1253 <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html">
1254 Specifying App Content for Indexing
1255 </a>
1256 </li>
1257 </ul>
1258 </li>
1259 </ul>
1260 </li>
1261 <!-- End Interaction and Engagement -->
1262
1263
1264
1265
1266 <li class="nav-section">
1267 <div class="nav-section-header">
1268 <a href="<?cs var:toroot ?>training/best-ui.html">
1269 <span class="small">Best Practices for</span><br/>
1270 User Interface
1271 </a>
1272 </div>
1273 <ul>
1274
Joe Malin3ddba7e2013-03-04 10:33:30 -08001275
Scott Main22cc2762012-11-07 16:35:16 -08001276 <li class="nav-section">
1277 <div class="nav-section-header">
Scott Main5b50239c2013-12-17 14:59:05 -08001278 <a href="<?cs var:toroot ?>training/multiscreen/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001279 zh-cn-lang="针对多种屏幕进行设计"
Scott Main22cc2762012-11-07 16:35:16 -08001280 ja-lang="複数画面のデザイン"
1281 es-lang="Cómo diseñar aplicaciones para varias pantallas"
1282 description=
1283 "How to build a user interface that's flexible enough to
1284 fit perfectly on any screen and how to create different interaction
1285 patterns that are optimized for different screen sizes."
1286 >Designing for Multiple Screens</a>
1287 </div>
1288 <ul>
Scott Main5b50239c2013-12-17 14:59:05 -08001289 <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001290 zh-cn-lang="支持各种屏幕尺寸"
Scott Mainddab47b2012-10-02 17:48:11 -07001291 ko-lang="다양한 화면 크기 지원"
1292 ja-lang="さまざまな画面サイズのサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001293 es-lang="Cómo admitir varios tamaños de pantalla"
Scott Main22cc2762012-11-07 16:35:16 -08001294 >Supporting Different Screen Sizes</a>
Scott Main50e990c2012-06-21 17:14:39 -07001295 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001296 <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001297 zh-cn-lang="支持各种屏幕密度"
Scott Mainddab47b2012-10-02 17:48:11 -07001298 ja-lang="さまざまな画面密度のサポート"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001299 es-lang="Cómo admitir varias densidades de pantalla"
Scott Mainddab47b2012-10-02 17:48:11 -07001300 >Supporting Different Screen Densities</a>
Scott Main50e990c2012-06-21 17:14:39 -07001301 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001302 <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001303 zh-cn-lang="实施自适应用户界面流程"
Scott Mainddab47b2012-10-02 17:48:11 -07001304 ja-lang="順応性のある UI フローの実装"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001305 es-lang="Cómo implementar interfaces de usuario adaptables"
Scott Mainddab47b2012-10-02 17:48:11 -07001306 >Implementing Adaptive UI Flows</a>
Scott Main50e990c2012-06-21 17:14:39 -07001307 </li>
1308 </ul>
1309 </li>
Joe Malin50c22752012-10-20 12:41:40 -07001310
Scott Main50e990c2012-06-21 17:14:39 -07001311 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001312 <div class="nav-section-header">
1313 <a href="<?cs var:toroot ?>training/custom-views/index.html"
1314 description=
1315 "How to build custom UI widgets that are interactive and smooth."
1316 >Creating Custom Views</a>
1317 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001318 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001319 <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
1320 Creating a Custom View Class
Scott Main50e990c2012-06-21 17:14:39 -07001321 </a>
1322 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001323 <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
1324 Implementing Custom Drawing
Scott Main50e990c2012-06-21 17:14:39 -07001325 </a>
1326 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001327 <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
1328 Making the View Interactive
1329 </a>
1330 </li>
1331 <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
1332 Optimizing the View
Scott Main50e990c2012-06-21 17:14:39 -07001333 </a>
1334 </li>
1335 </ul>
1336 </li>
Joe Malin50c22752012-10-20 12:41:40 -07001337
Scott Main50e990c2012-06-21 17:14:39 -07001338 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001339 <div class="nav-section-header">
1340 <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
1341 description=
1342 "How to use UI components and other APIs from the more recent versions of Android
1343 while remaining compatible with older versions of the platform."
1344 >Creating Backward-Compatible UIs</a>
Scott Mainddab47b2012-10-02 17:48:11 -07001345 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001346 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001347 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
1348 Abstracting the New APIs
1349 </a>
1350 </li>
1351 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
1352 Proxying to the New APIs
1353 </a>
1354 </li>
1355 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
1356 Creating an Implementation with Older APIs
1357 </a>
1358 </li>
1359 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
1360 Using the Version-Aware Component
1361 </a>
1362 </li>
1363 </ul>
1364 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001365
Scott Main22cc2762012-11-07 16:35:16 -08001366 <li class="nav-section">
1367 <div class="nav-section-header">
1368 <a href="<?cs var:toroot ?>training/accessibility/index.html"
1369 description=
1370 "How to make your app accessible to users with vision
1371 impairment or other physical disabilities."
1372 >Implementing Accessibility</a>
1373 </div>
1374 <ul>
1375 <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
1376 Developing Accessible Applications
1377 </a>
1378 </li>
1379 <li><a href="<?cs var:toroot ?>training/accessibility/service.html">
1380 Developing Accessibility Services
1381 </a>
1382 </li>
1383 </ul>
1384 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001385
Katie McCormickcfd30472013-09-27 15:52:14 -07001386 <li class="nav-section">
1387 <div class="nav-section-header">
1388 <a href="<?cs var:toroot ?>training/system-ui/index.html"
1389 description=
1390 "How to hide and show status and navigation bars across different versions of Android,
1391 while managing the display of other screen components."
1392 >Managing the System UI</a>
1393 </div>
1394 <ul>
1395 <li><a href="<?cs var:toroot ?>training/system-ui/dim.html">
1396 Dimming the System Bars
1397 </a>
1398 </li>
1399 <li><a href="<?cs var:toroot ?>training/system-ui/status.html">
1400 Hiding the Status Bar
1401 </a>
1402 </li>
1403 <li><a href="<?cs var:toroot ?>training/system-ui/navigation.html">
1404 Hiding the Navigation Bar
1405 </a>
1406 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001407 <li><a href="<?cs var:toroot ?>training/system-ui/immersive.html">
Katie McCormick467f5db2013-11-05 13:35:15 -08001408 Using Immersive Full-Screen Mode
1409 </a>
1410 </li>
Katie McCormickcfd30472013-09-27 15:52:14 -07001411 <li><a href="<?cs var:toroot ?>training/system-ui/visibility.html">
1412 Responding to UI Visibility Changes
1413 </a>
1414 </li>
1415 </ul>
1416 </li>
1417
Ricardo Cervera414978a2014-10-08 17:00:30 -07001418 <li class="nav-section">
1419 <div class="nav-section-header">
1420 <a href="<?cs var:toroot ?>training/material/index.html"
1421 description=
1422 "How to implement material design on Android."
1423 >Creating Apps with Material Design</a>
1424 </div>
1425 <ul>
1426 <li><a href="<?cs var:toroot ?>training/material/get-started.html">
1427 Getting Started
1428 </a>
1429 </li>
1430 <li><a href="<?cs var:toroot ?>training/material/theme.html">
1431 Using the Material Theme
1432 </a>
1433 </li>
1434 <li><a href="<?cs var:toroot ?>training/material/lists-cards.html">
1435 Creating Lists and Cards
1436 </a>
1437 </li>
1438 <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html">
1439 Defining Shadows and Clipping Views
1440 </a>
1441 </li>
1442 <li><a href="<?cs var:toroot ?>training/material/drawables.html">
1443 Working with Drawables
1444 </a>
1445 </li>
1446 <li><a href="<?cs var:toroot ?>training/material/animations.html">
1447 Defining Custom Animations
1448 </a>
1449 </li>
1450 <li><a href="<?cs var:toroot ?>training/material/compatibility.html">
1451 Maintaining Compatibility
1452 </a>
1453 </li>
1454 </ul>
1455 </li>
1456
Scott Main22cc2762012-11-07 16:35:16 -08001457 </ul>
1458 </li>
Scott Main81428982013-12-09 18:02:48 -08001459 <!-- End User Interface -->
1460
1461
Joe Malin3ddba7e2013-03-04 10:33:30 -08001462
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001463
&& repo sync -j8518edbf2012-11-30 16:28:27 -08001464 <li class="nav-section">
1465 <div class="nav-section-header">
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001466 <a href="<?cs var:toroot ?>training/best-user-input.html">
&& repo sync -j8518edbf2012-11-30 16:28:27 -08001467 <span class="small">Best Practices for</span><br/>
1468 User Input
1469 </a>
1470 </div>
1471 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001472
&& repo sync -j8518edbf2012-11-30 16:28:27 -08001473 <li class="nav-section">
1474 <div class="nav-section-header">
1475 <a href="<?cs var:toroot ?>training/gestures/index.html"
1476 description=
1477 "How to write apps that allow users to interact with the touch screen via touch gestures."
1478 >Using Touch Gestures</a>
1479 </div>
1480 <ul>
1481 <li><a href="<?cs var:toroot ?>training/gestures/detector.html">
1482 Detecting Common Gestures
1483 </a>
1484 </li>
1485 <li><a href="<?cs var:toroot ?>training/gestures/movement.html">
1486 Tracking Movement
1487 </a>
1488 </li>
1489 <li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
1490 Animating a Scroll Gesture
1491 </a>
1492 </li>
1493 <li><a href="<?cs var:toroot ?>training/gestures/multi.html">
1494 Handling Multi-Touch Gestures
1495 </a>
1496 </li>
1497 <li><a href="<?cs var:toroot ?>training/gestures/scale.html">
1498 Dragging and Scaling
1499 </a>
1500 </li>
1501 <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
1502 Managing Touch Events in a ViewGroup
1503 </a>
1504 </li>
1505 </ul>
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001506 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001507
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001508 <li class="nav-section">
1509 <div class="nav-section-header">
1510 <a href="<?cs var:toroot ?>training/keyboard-input/index.html"
1511 description=
1512 "How to specify the appearance and behaviors of soft input methods (such
1513 as on-screen keyboards) and how to optimize the experience with
1514 hardware keyboards."
1515 >Handling Keyboard Input</a>
1516 </div>
1517 <ul>
1518 <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html">
1519 Specifying the Input Method Type
1520 </a>
1521 </li>
1522 <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html">
1523 Handling Input Method Visibility
1524 </a>
1525 </li>
1526 <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html">
1527 Supporting Keyboard Navigation
1528 </a>
1529 </li>
1530 <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html">
1531 Handling Keyboard Actions
1532 </a>
1533 </li>
1534 </ul>
1535 </li>
quddusc1dff7462013-07-01 16:57:26 -07001536
1537 <li class="nav-section">
1538 <div class="nav-section-header">
1539 <a href="<?cs var:toroot ?>training/game-controllers/index.html"
1540 description=
1541 "How to write apps that support game controllers."
1542 >Supporting Game Controllers</a>
1543 </div>
1544 <ul>
1545 <li><a href="<?cs var:toroot ?>training/game-controllers/controller-input.html">
1546 Handling Controller Actions
1547 </a>
1548 </li>
1549 <li><a href="<?cs var:toroot ?>training/game-controllers/compatibility.html">
1550 Supporting Controllers Across Android Versions
1551 </a>
1552 </li>
1553 <li><a href="<?cs var:toroot ?>training/game-controllers/multiple-controllers.html">
1554 Supporting Multiple Game Controllers
1555 </a>
1556 </li>
1557 </ul>
1558 </li>
Scott Mainc8a6f8a2012-12-05 16:13:25 -08001559 </ul>
Joe Malin421435d2013-01-15 15:06:08 -08001560 </li> <!-- end of User Input -->
Scott Main22cc2762012-11-07 16:35:16 -08001561
1562 <li class="nav-section">
1563 <div class="nav-section-header">
Katie McCormick7bdb3f62013-09-05 14:46:20 -07001564 <a href="<?cs var:toroot ?>training/best-background.html">
1565 <span class="small">Best Practices for</span><br/>
1566 Background Jobs
1567 </a>
1568 </div>
1569 <ul>
1570
1571 <li class="nav-section">
1572 <div class="nav-section-header">
1573 <a href="<?cs var:toroot ?>training/run-background-service/index.html"
1574 description=
1575 "How to improve UI performance and responsiveness by sending work to a
1576 Service running in the background"
1577 >Running in a Background Service</a>
1578 </div>
1579 <ul>
1580 <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
1581 Creating a Background Service
1582 </a>
1583 </li>
1584 <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
1585 Sending Work Requests to the Background Service
1586 </a>
1587 </li>
1588 <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
1589 Reporting Work Status
1590 </a>
1591 </li>
1592 </ul>
1593 </li>
1594
1595 <li class="nav-section">
1596 <div class="nav-section-header">
1597 <a href="<?cs var:toroot ?>training/load-data-background/index.html"
1598 description="How to use CursorLoader to query data without
1599 affecting UI responsiveness."
1600 >Loading Data in the Background</a>
1601 </div>
1602 <ul>
1603 <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
1604 Running a Query with a CursorLoader</a>
1605 </li>
1606 <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
1607 Handling the Results</a>
1608 </li>
1609 </ul>
1610 </li>
1611
1612 <li class="nav-section">
1613 <div class="nav-section-header">
1614 <a href="<?cs var:toroot ?>training/scheduling/index.html"
1615 description="How to use repeating alarms and wake locks
1616 to run background jobs."
1617 >Managing Device Awake State</a>
1618 </div>
1619 <ul>
1620 <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html">
1621 Keeping the Device Awake</a>
1622 </li>
1623 <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html">
1624 Scheduling Repeating Alarms</a>
1625 </li>
1626 </ul>
1627 </li>
1628 </ul>
1629 </li> <!-- end of Background Jobs -->
1630
1631 <li class="nav-section">
1632 <div class="nav-section-header">
Scott Main22cc2762012-11-07 16:35:16 -08001633 <a href="<?cs var:toroot ?>training/best-performance.html">
1634 <span class="small">Best Practices for</span><br/>
1635 Performance
1636 </a>
1637 </div>
1638 <ul>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001639
Scott Main22cc2762012-11-07 16:35:16 -08001640 <li>
Scott Maina3f0e012013-09-19 17:45:40 -07001641 <a href="<?cs var:toroot ?>training/articles/memory.html"
1642 description=
1643 "How to keep your app's memory footprint small in order to improve performance
1644 on a variety of mobile devices."
1645 >Managing Your App's Memory</a>
1646 </li>
1647
1648 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001649 <a href="<?cs var:toroot ?>training/articles/perf-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001650 description=
1651 "How to optimize your app's performance in various ways to improve its
1652 responsiveness and battery efficiency."
1653 >Performance Tips</a>
1654 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001655
Scott Main22cc2762012-11-07 16:35:16 -08001656 <li class="nav-section">
1657 <div class="nav-section-header">
1658 <a href="<?cs var:toroot ?>training/improving-layouts/index.html"
1659 description=
1660 "How to identify problems in your app's layout performance and improve the UI
1661 responsiveness."
1662 >Improving Layout Performance</a>
1663 </div>
1664 <ul>
1665 <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
1666 Optimizing Layout Hierarchies
1667 </a>
1668 </li>
1669 <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
1670 Re-using Layouts with &lt;include/&gt;
1671 </a>
1672 </li>
1673 <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
1674 Loading Views On Demand
1675 </a>
1676 </li>
1677 <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
1678 Making ListView Scrolling Smooth
1679 </a>
1680 </li>
1681 </ul>
1682 </li>
Scott Main8ac78802012-12-14 11:39:03 -08001683
Joe Malinf0f5efb2012-10-27 11:16:19 -07001684 <li class="nav-section">
1685 <div class="nav-section-header">
Scott Main5b50239c2013-12-17 14:59:05 -08001686 <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001687 zh-cn-lang="优化电池使用时间"
Scott Main22cc2762012-11-07 16:35:16 -08001688 ja-lang="電池消費量の最適化"
1689 es-lang="Cómo optimizar la duración de la batería"
1690 description=
1691 "How to minimize the amount of power your app requires by adapting to current
1692 power conditions and performing power-hungry tasks at proper intervals."
1693 >Optimizing Battery Life</a>
1694 </div>
1695 <ul>
Scott Main5b50239c2013-12-17 14:59:05 -08001696 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001697 zh-cn-lang="监控电池电量和充电状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001698 ja-lang="電池残量と充電状態の監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001699 es-lang="Cómo controlar el nivel de batería y el estado de carga"
Scott Mainddab47b2012-10-02 17:48:11 -07001700 >Monitoring the Battery Level and Charging State</a>
Scott Main50e990c2012-06-21 17:14:39 -07001701 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001702 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001703 zh-cn-lang="确定和监控基座对接状态和类型"
Scott Mainddab47b2012-10-02 17:48:11 -07001704 ja-lang="ホルダーの装着状態とタイプの特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001705 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 -07001706 >Determining and Monitoring the Docking State and Type</a>
Scott Main50e990c2012-06-21 17:14:39 -07001707 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001708 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001709 zh-cn-lang="确定和监控网络连接状态"
Scott Mainddab47b2012-10-02 17:48:11 -07001710 ja-lang="接続状態の特定と監視"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001711 es-lang="Cómo determinar y controlar el estado de la conectividad"
Scott Mainddab47b2012-10-02 17:48:11 -07001712 >Determining and Monitoring the Connectivity Status</a>
Scott Main50e990c2012-06-21 17:14:39 -07001713 </li>
Scott Main5b50239c2013-12-17 14:59:05 -08001714 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html"
Dirk Doughertyb582c6782013-05-04 10:54:52 -07001715 zh-cn-lang="根据需要操作广播接收器"
Scott Mainddab47b2012-10-02 17:48:11 -07001716 ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
Joe Malinf0f5efb2012-10-27 11:16:19 -07001717 es-lang="Cómo manipular los receptores de emisión bajo demanda"
Scott Mainddab47b2012-10-02 17:48:11 -07001718 >Manipulating Broadcast Receivers On Demand</a>
Scott Main50e990c2012-06-21 17:14:39 -07001719 </li>
1720 </ul>
1721 </li>
Joe Malin8dd62752012-11-26 14:06:35 -08001722 <li class="nav-section">
1723 <div class="nav-section-header">
1724 <a href="<?cs var:toroot ?>training/multiple-threads/index.html"
1725 description=
1726 "How to improve the performance and scalability of long-running operations by
1727 dispatching work to multiple threads.">
1728 Sending Operations to Multiple Threads</a>
1729 </div>
1730 <ul>
1731 <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html">
1732 Specifying the Code to Run on a Thread
1733 </a>
1734 </li>
1735 <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html">
1736 Creating a Manager for Multiple Threads
1737 </a>
1738 </li>
1739 <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html">
1740 Running Code on a Thread Pool Thread
1741 </a>
1742 </li>
1743 <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html">
1744 Communicating with the UI Thread
1745 </a>
1746 </li>
1747 </ul>
1748 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001749
Scott Main22cc2762012-11-07 16:35:16 -08001750 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001751 <a href="<?cs var:toroot ?>training/articles/perf-anr.html"
Scott Main22cc2762012-11-07 16:35:16 -08001752 description=
1753 "How to keep your app responsive to user interaction so the UI does not lock-up and
1754 display an &quot;Application Not Responding&quot; dialog."
1755 >Keeping Your App Responsive</a>
Scott Main50e990c2012-06-21 17:14:39 -07001756 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001757
Scott Main22cc2762012-11-07 16:35:16 -08001758 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001759 <a href="<?cs var:toroot ?>training/articles/perf-jni.html"
Scott Main22cc2762012-11-07 16:35:16 -08001760 description=
1761 "How to efficiently use the Java Native Interface with the Android NDK."
1762 >JNI Tips</a>
1763 </li>
Dirk Doughertyd5894212012-11-28 18:53:10 -08001764 <li>
1765 <a href="<?cs var:toroot ?>training/articles/smp.html"
1766 description=
1767 "Tips for coding Android apps on symmetric multiprocessor systems."
1768 >SMP Primer for Android</a>
1769 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001770 </ul>
1771 </li> <!-- end of Performance -->
Joe Malin3ddba7e2013-03-04 10:33:30 -08001772
1773
Scott Main50e990c2012-06-21 17:14:39 -07001774
Scott Main22cc2762012-11-07 16:35:16 -08001775 <li class="nav-section">
1776 <div class="nav-section-header">
1777 <a href="<?cs var:toroot ?>training/best-security.html">
1778 <span class="small">Best Practices for</span><br/>
1779 Security &amp; Privacy
1780 </a>
1781 </div>
1782 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001783 <li>
Scott Main33e499e2012-11-16 08:54:27 -08001784 <a href="<?cs var:toroot ?>training/articles/security-tips.html"
Scott Main22cc2762012-11-07 16:35:16 -08001785 description=
1786 "How to perform various tasks and keep your app's data and your user's data secure."
1787 >Security Tips</a>
1788 </li>
Scott Main00158362013-01-17 16:58:50 -08001789
1790 <li>
1791 <a href="<?cs var:toroot ?>training/articles/security-ssl.html"
1792 description=
1793 "How to ensure that your app is secure when performing network transactions."
1794 >Security with HTTPS and SSL</a>
1795 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001796
Andrew Solovay897cf902014-07-30 15:00:55 -07001797 <li>
1798 <a href="<?cs var:toroot ?>training/articles/security-gms-provider.html"
1799 description=
1800 "How to use and update Google Play services security provider, to
1801 protect against SSL exploits."
1802 >Updating Your Security Provider to Protect Against SSL Exploits</a>
1803 </li>
1804
Scott Main50e990c2012-06-21 17:14:39 -07001805 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001806 <div class="nav-section-header">
1807 <a href="<?cs var:toroot ?>training/enterprise/index.html"
1808 description=
1809 "How to implement device management policies for enterprise-oriented apps."
1810 >Developing for Enterprise</a>
Scott Main50e990c2012-06-21 17:14:39 -07001811 </div>
1812 <ul>
Scott Main22cc2762012-11-07 16:35:16 -08001813 <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
1814 Enhancing Security with Device Management Policies
Scott Main50e990c2012-06-21 17:14:39 -07001815 </a>
1816 </li>
1817 </ul>
1818 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001819 </ul>
1820 </li>
1821 <!-- End security and user info -->
Scott Main50e990c2012-06-21 17:14:39 -07001822
quddusc2ef39522013-06-21 16:49:46 -07001823 <li class="nav-section">
1824 <div class="nav-section-header">
1825 <a href="<?cs var:toroot ?>training/testing.html">
1826 <span class="small">Best Practices for</span><br/>
1827 Testing
1828 </a>
1829 </div>
1830 <ul>
1831 <li class="nav-section">
1832 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html"
1833 description="How to test Activities in your Android applications.">
1834 Testing Your Activity
1835 </a></div>
1836 <ul>
1837 <li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html">
1838 <span class="en">Setting Up Your Test Environment</span>
1839 </a>
1840 </li>
1841 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html">
1842 <span class="en">Creating and Running a Test Case</span>
1843 </a>
1844 </li>
1845 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html">
1846 <span class="en">Testing UI Components</span>
1847 </a>
1848 </li>
1849 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html">
1850 <span class="en">Creating Unit Tests</span>
1851 </a>
1852 </li>
1853 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html">
1854 <span class="en">Creating Functional Tests</span>
1855 </a>
1856 </li>
1857 </ul>
1858 </li>
1859 </ul>
Quddus Chong7639e732015-03-05 13:16:24 -08001860 <ul>
1861 <li class="nav-section">
1862 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/ui-testing/index.html"
1863 description="How to automate your user interface tests for Android apps.">
1864 Automating UI Tests
1865 </a></div>
1866 <ul>
1867 <li><a href="<?cs var:toroot ?>training/testing/ui-testing/espresso-testing.html">
1868 <span class="en">Testing UI for a Single App</span>
1869 </a>
1870 </li>
1871 <li><a href="<?cs var:toroot ?>training/testing/ui-testing/uiautomator-testing.html">
1872 <span class="en">Testing UI for Multiple Apps</span>
1873 </a>
1874 </li>
1875 </ul>
1876 </li>
1877 </ul>
quddusc2ef39522013-06-21 16:49:46 -07001878 </li>
1879 <!-- End best Testing -->
Scott Main50e990c2012-06-21 17:14:39 -07001880
Scott Main22cc2762012-11-07 16:35:16 -08001881 <li class="nav-section">
1882 <div class="nav-section-header">
1883 <a href="<?cs var:toroot ?>training/distribute.html">
1884 <span class="small">Using Google Play to</span><br/>
1885 Distribute &amp; Monetize
1886 </a>
1887 </div>
1888 <ul>
Quddus Chong768dba62012-12-08 17:06:30 -08001889 <li class="nav-section">
1890 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
1891 description="How to sell in-app products from your application using In-app Billing.">
1892 Selling In-app Products
1893 </a></div>
1894 <ul>
1895 <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
1896 <span class="en">Preparing Your App</span>
1897 </a>
1898 </li>
1899 <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
1900 <span class="en">Establishing Products for Sale</span>
1901 </a>
1902 </li>
1903 <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
1904 <span class="en">Purchasing Products</span>
1905 </a>
1906 </li>
1907 <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
1908 <span class="en">Testing Your App</span>
1909 </a>
1910 </li>
1911 </ul>
1912 </li>
Joe Malin3ddba7e2013-03-04 10:33:30 -08001913
Scott Main50e990c2012-06-21 17:14:39 -07001914 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001915 <div class="nav-section-header">
1916 <a href="<?cs var:toroot ?>training/multiple-apks/index.html"
1917 description=
1918 "How to publish your app on Google Play with separate APKs that target
1919 different devices, while using a single app listing."
1920 >Maintaining Multiple APKs</a>
1921 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001922 <ul>
1923 <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
Scott Main22cc2762012-11-07 16:35:16 -08001924 Creating Multiple APKs for Different API Levels
Scott Main50e990c2012-06-21 17:14:39 -07001925 </a>
1926 </li>
1927 <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
Scott Main22cc2762012-11-07 16:35:16 -08001928 Creating Multiple APKs for Different Screen Sizes
Scott Main50e990c2012-06-21 17:14:39 -07001929 </a>
1930 </li>
1931 <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
Scott Main22cc2762012-11-07 16:35:16 -08001932 Creating Multiple APKs for Different GL Textures
Scott Main50e990c2012-06-21 17:14:39 -07001933 </a>
1934 </li>
1935 <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
Scott Main22cc2762012-11-07 16:35:16 -08001936 Creating Multiple APKs with 2+ Dimensions
Scott Main50e990c2012-06-21 17:14:39 -07001937 </a>
1938 </li>
1939 </ul>
1940 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001941 <li class="nav-section">
Scott Main22cc2762012-11-07 16:35:16 -08001942 <div class="nav-section-header">
1943 <a href="<?cs var:toroot ?>training/monetization/index.html"
1944 description=
1945 "How to implement monetization strategies for your app without compromising
1946 the user experience."
1947 >Monetizing Your App</a>
1948 </div>
Scott Main50e990c2012-06-21 17:14:39 -07001949 <ul>
1950 <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
Scott Main22cc2762012-11-07 16:35:16 -08001951 Advertising without Compromising User Experience
Scott Main50e990c2012-06-21 17:14:39 -07001952 </a>
1953 </li>
1954 </ul>
1955 </li>
Scott Main50e990c2012-06-21 17:14:39 -07001956 </ul>
1957 </li>
Scott Main22cc2762012-11-07 16:35:16 -08001958 <!-- End best Publishing -->
1959
Scott Main50e990c2012-06-21 17:14:39 -07001960</ul><!-- nav -->
Scott Main50e990c2012-06-21 17:14:39 -07001961<script type="text/javascript">
1962<!--
1963 buildToggleLists();
1964 changeNavLang(getLangPref());
1965//-->
Andrew Solovay79cb98c2015-02-11 13:12:18 -08001966</script>