1 <ul id="nav">
2   <li class="nav-section">
3     <div class="nav-section-header">
4       <a href="<?cs var:toroot ?>training/index.html">
5         Getting Started
6       </a>
7     </div>
8 
9     <ul>
10       <li class="nav-section">
11         <div class="nav-section-header">
12           <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>
17         </div>
18         <ul>
19           <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html">
20             Creating an Android Project
21           </a>
22           </li>
23           <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html">
24             Running Your Application
25           </a>
26           </li>
27           <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html">
28             Building a Simple User Interface
29           </a>
30           </li>
31           <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html">
32             Starting Another Activity
33           </a>
34           </li>
35         </ul>
36       </li>
37 
38       <li class="nav-section">
39         <div class="nav-section-header">
40           <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
43 app's activities. Although first introduced with API level 11, you can use the Support Library to
44 include 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">
69           <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">
93           <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>
99         <ul>
100           <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html">
101             Starting an Activity
102           </a>
103           </li>
104           <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
105             Pausing and Resuming an Activity
106           </a>
107           </li>
108           <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html">
109             Stopping and Restarting an Activity
110           </a>
111           </li>
112           <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html">
113             Recreating an Activity
114           </a>
115           </li>
116         </ul>
117       </li>
118 
119       <li class="nav-section">
120         <div class="nav-section-header">
121           <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>
129         <ul>
130           <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
131             Creating a Fragment
132           </a>
133           </li>
134           <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html" zh-cn-lang="构建灵活的界面">
135             Building a Flexible UI
136           </a>
137           </li>
138           <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
139             Communicating with Other Fragments
140           </a>
141           </li>
142         </ul>
143       </li>
144 
145       <li class="nav-section">
146         <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>
152         <ul>
153           <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
154             Saving Key-Value Sets
155           </a>
156           </li>
157           <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
158             Saving Files
159           </a>
160           </li>
161           <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
162             Saving Data in SQL Databases
163           </a>
164           </li>
165         </ul>
166       </li>
167 
168       <li class="nav-section">
169         <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>
177         <ul>
178           <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html">
179             Sending the User to Another App
180           </a>
181           </li>
182           <li><a href="<?cs var:toroot ?>training/basics/intents/result.html">
183             Getting a Result from the Activity
184           </a>
185           </li>
186           <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html">
187             Allowing Other Apps to Start Your Activity
188           </a>
189           </li>
190         </ul>
191       </li>
192 
193     </ul>
194   </li><!-- end getting started -->
195     <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>
278 
279 
280 
281   <li class="nav-section">
282     <div class="nav-section-header">
283       <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>
288 
289       <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>
336 
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 
360     </ul>
361   </li>
362   <!-- End multimedia -->
363 
364 
365 
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>
373 
374       <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>
395           <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html">
396             Managing Bitmap Memory
397           </a>
398           </li>
399           <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
400             Displaying Bitmaps in Your UI
401           </a></li>
402         </ul>
403       </li>
404 
405       <li class="nav-section">
406         <div class="nav-section-header">
407           <a href="<?cs var:toroot?>training/graphics/opengl/index.html"
408              description=
409              "How to create OpenGL graphics within the Android app framework
410              and respond to touch input."
411             >Displaying Graphics with OpenGL ES</a>
412         </div>
413         <ul>
414           <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
415             Building an OpenGL ES Environment
416           </a>
417           </li>
418           <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
419             Defining Shapes
420           </a>
421           </li>
422           <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
423             Drawing Shapes
424           </a>
425           </li>
426           <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
427             Applying Projection and Camera Views
428           </a>
429           </li>
430           <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
431             Adding Motion
432           </a>
433           </li>
434           <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
435             Responding to Touch Events
436           </a>
437           </li>
438         </ul>
439       </li>
440 
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 
469       <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 -->
501 
502 
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 
512       <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
517              Discovery and how to create peer-to-peer connections with Wi-Fi."
518              >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">
526             Creating P2P Connections with Wi-Fi
527           </a>
528           </li>
529           <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
530             Using Wi-Fi P2P for Service Discovery
531           </a>
532           </li>
533         </ul>
534       </li>
535        <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>
558       <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>
604         <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>
609         </li>
610       </li>
611       <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>
641       <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>
670     </ul>
671   </li>
672   <!-- End connectivity and cloud -->
673 
674 
675 
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>
684       <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>
715 
716       <li class="nav-section">
717         <div class="nav-section-header">
718           <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>
722         </div>
723         <ul>
724           <li>
725             <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
726             Getting the Last Known Location
727             </a>
728           </li>
729           <li>
730             <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
731             Receiving Location Updates
732             </a>
733           </li>
734           <li>
735             <a href="<?cs var:toroot ?>training/location/display-address.html">
736             Displaying a Location Address
737           </a>
738           </li>
739         </ul>
740       </li>
741     </ul>
742   </li>
743   <!-- End privacy and location -->
744 
745 
746   <li class="nav-section">
747     <div class="nav-section-header">
748       <a href="<?cs var:toroot ?>training/building-wearables.html">
749       <span class="small">Building Apps for</span><br/>
750               Wearables
751       </a>
752     </div>
753     <ul>
754       <li class="nav-section">
755         <div class="nav-section-header">
756           <a href="<?cs var:toroot ?>training/wearables/notifications/index.html"
757              description="How to build handheld notifications that are synced to
758              and look great on wearables."
759             >Adding Wearable Features to Notifications</a>
760         </div>
761         <ul>
762           <li>
763             <a href="<?cs var:toroot ?>training/wearables/notifications/creating.html">Creating a Notification</a>
764           </li>
765           <li>
766             <a href="<?cs var:toroot ?>training/wearables/notifications/voice-input.html">Receiving Voice Input in a Notification</a>
767           </li>
768           <li>
769             <a href="<?cs var:toroot ?>training/wearables/notifications/pages.html">Adding Pages to a Notification</a>
770           </li>
771           <li>
772             <a href="<?cs var:toroot ?>training/wearables/notifications/stacks.html">Stacking Notifications</a>
773           </li>
774         </ul>
775       </li>
776 
777       <li class="nav-section">
778         <div class="nav-section-header">
779           <a href="<?cs var:toroot ?>training/wearables/apps/index.html"
780              description="How to build apps that run directly on wearables."
781             >Creating Wearable Apps</a>
782         </div>
783         <ul>
784           <li>
785             <a href="<?cs var:toroot ?>training/wearables/apps/creating.html">Creating and Running a Wearable App</a>
786           </li>
787           <li>
788             <a href="<?cs var:toroot ?>training/wearables/apps/layouts.html">Creating Custom Layouts</a>
789           </li>
790           <li>
791             <a href="<?cs var:toroot ?>training/wearables/apps/voice.html">Adding Voice Capabilities</a>
792           </li>
793           <li>
794             <a href="<?cs var:toroot ?>training/wearables/apps/packaging.html">Packaging Wearable Apps</a>
795           </li>
796           <li>
797             <a href="<?cs var:toroot ?>training/wearables/apps/bt-debugging.html">Debugging over Bluetooth</a>
798           </li>
799         </ul>
800       </li>
801 
802       <li class="nav-section">
803         <div class="nav-section-header">
804           <a href="<?cs var:toroot ?>training/wearables/ui/index.html"
805              description="How to create custom user interfaces for wearable apps."
806             >Creating Custom UIs</a>
807         </div>
808         <ul>
809           <li>
810             <a href="<?cs var:toroot ?>training/wearables/ui/layouts.html">Defining Layouts</a>
811           </li>
812           <li>
813             <a href="<?cs var:toroot ?>training/wearables/ui/cards.html">Creating Cards</a>
814           </li>
815           <li>
816             <a href="<?cs var:toroot ?>training/wearables/ui/lists.html">Creating Lists</a>
817           </li>
818           <li>
819             <a href="<?cs var:toroot ?>training/wearables/ui/2d-picker.html">Creating a 2D Picker</a>
820           </li>
821           <li>
822             <a href="<?cs var:toroot ?>training/wearables/ui/confirm.html">Showing Confirmations</a>
823           </li>
824           <li>
825             <a href="<?cs var:toroot ?>training/wearables/ui/exit.html">Exiting Full-Screen Activities</a>
826           </li>
827         </ul>
828       </li>
829 
830       <li class="nav-section">
831         <div class="nav-section-header">
832           <a href="<?cs var:toroot ?>training/wearables/data-layer/index.html"
833              description="How to sync data between handhelds and wearables."
834             >Sending and Syncing Data</a>
835         </div>
836         <ul>
837           <li>
838             <a href="<?cs var:toroot ?>training/wearables/data-layer/accessing.html">Accessing the Wearable Data Layer</a>
839           </li>
840           <li>
841             <a href="<?cs var:toroot ?>training/wearables/data-layer/data-items.html">Syncing Data Items</a>
842           </li>
843           <li>
844             <a href="<?cs var:toroot ?>training/wearables/data-layer/assets.html">Transferring Assets</a>
845           </li>
846           <li>
847             <a href="<?cs var:toroot ?>training/wearables/data-layer/messages.html">Sending and Receiving Messages</a>
848           </li>
849           <li>
850             <a href="<?cs var:toroot ?>training/wearables/data-layer/events.html">Handling Data Layer Events</a>
851           </li>
852         </ul>
853       </li>
854 
855       <li class="nav-section">
856         <div class="nav-section-header">
857           <a href="<?cs var:toroot ?>training/wearables/watch-faces/index.html"
858              description="How to create watch faces for wearables."
859             >Creating Watch Faces</a>
860         </div>
861         <ul>
862           <li>
863             <a href="<?cs var:toroot ?>training/wearables/watch-faces/designing.html">Designing Watch Faces</a>
864           </li>
865           <li>
866             <a href="<?cs var:toroot ?>training/wearables/watch-faces/service.html">Building a Watch Face Service</a>
867           </li>
868           <li>
869             <a href="<?cs var:toroot ?>training/wearables/watch-faces/drawing.html">Drawing Watch Faces</a>
870           </li>
871           <li>
872             <a href="<?cs var:toroot ?>training/wearables/watch-faces/information.html">Showing Information in Watch Faces</a>
873           </li>
874           <li>
875             <a href="<?cs var:toroot ?>training/wearables/watch-faces/configuration.html">Providing Configuration Activities</a>
876           </li>
877           <li>
878             <a href="<?cs var:toroot ?>training/wearables/watch-faces/issues.html">Addressing Common Issues</a>
879           </li>
880           <li>
881             <a href="<?cs var:toroot ?>training/wearables/watch-faces/performance.html">Optimizing Performance and Battery Life</a>
882           </li>
883         </ul>
884       </li>
885 
886       <li>
887         <a href="<?cs var:toroot ?>training/articles/wear-location-detection.html"
888            description=
889            "How to detect location data on Android Wear devices."
890           >Detecting Location</a>
891       </li>
892     </ul>
893   </li>
894   <!-- End Building for wearables -->
895 
896 
897   <!-- Start: Building for TV -->
898   <li class="nav-section">
899     <div class="nav-section-header">
900       <a href="<?cs var:toroot ?>training/tv/index.html">
901       <span class="small">Building Apps for</span><br/>
902               TV
903       </a>
904     </div>
905     <ul>
906 
907       <li class="nav-section">
908         <div class="nav-section-header">
909 
910           <a href="<?cs var:toroot ?>training/tv/start/index.html"
911              ja-lang="TV アプリのビルド"
912              description="How to start building TV apps or extend your existing app to run on TV
913              devices.">
914              Building TV Apps</a>
915         </div>
916         <ul>
917           <li>
918             <a href="<?cs var:toroot ?>training/tv/start/start.html"
919                ja-lang="TV アプリのビルドを開始する">
920               Getting Started with TV Apps</a>
921           </li>
922           <li>
923             <a href="<?cs var:toroot ?>training/tv/start/hardware.html"
924                ja-lang="TV ハードウェアを処理する">
925               Handling TV Hardware</a>
926           </li>
927           <li>
928             <a href="<?cs var:toroot ?>training/tv/start/layouts.html"
929                ja-lang="TV 向けレイアウトをビルドする">
930               Building TV Layouts</a>
931           </li>
932           <li>
933             <a href="<?cs var:toroot ?>training/tv/start/navigation.html"
934                ja-lang="TV 用のナビゲーションを作成する">
935               Creating TV Navigation</a>
936           </li>
937         </ul>
938       </li>
939 
940       <li class="nav-section">
941         <div class="nav-section-header">
942           <a href="<?cs var:toroot ?>training/tv/playback/index.html"
943              ja-lang="TV 再生アプリのビルド"
944              description="How to build apps that provide media catalogs and play content.">
945              Building TV Playback Apps</a>
946         </div>
947         <ul>
948           <li>
949             <a href="<?cs var:toroot ?>training/tv/playback/browse.html"
950                ja-lang="カタログ ブラウザを作成する">
951               Creating a Catalog Browser</a>
952           </li>
953           <li>
954             <a href="<?cs var:toroot ?>training/tv/playback/card.html">
955               Providing a Card View</a>
956           </li>
957           <li>
958             <a href="<?cs var:toroot ?>training/tv/playback/details.html"
959                ja-lang="詳細ビューをビルドする">
960               Building a Details View</a>
961           </li>
962           <li>
963             <a href="<?cs var:toroot ?>training/tv/playback/now-playing.html"
964                ja-lang="再生中カードを表示する">
965               Displaying a Now Playing Card</a>
966           </li>
967         </ul>
968       </li>
969 
970       <li class="nav-section">
971         <div class="nav-section-header">
972           <a href="<?cs var:toroot ?>training/tv/discovery/index.html"
973              description="How to help users discover content from your app.">
974              Helping Users Find Content on TV</a>
975         </div>
976         <ul>
977           <li>
978             <a href="<?cs var:toroot ?>training/tv/discovery/recommendations.html">
979               Recommending TV Content</a>
980           </li>
981           <li>
982             <a href="<?cs var:toroot ?>training/tv/discovery/searchable.html">
983               Making TV Apps Searchable</a>
984           <li>
985             <a href="<?cs var:toroot ?>training/tv/discovery/in-app-search.html">
986               Searching within TV Apps</a>
987           </li>
988         </ul>
989       </li>
990 
991       <li>
992         <a href="<?cs var:toroot ?>training/tv/games/index.html"
993            description="How to build games for TV.">
994            Building TV Games</a>
995       </li>
996 
997       <li>
998         <a href="<?cs var:toroot ?>training/tv/tif/index.html"
999            description="How to build Live TV apps.">
1000            Building Live TV Apps</a>
1001       </li>
1002 
1003       <li>
1004         <a href="<?cs var:toroot ?>training/tv/publishing/checklist.html"
1005            description="An itemized list of requirements for TV apps.">
1006            TV Apps Checklist</a>
1007       </li>
1008     </ul>
1009   </li>
1010   <!-- End: Building for TV -->
1011 
1012 
1013   <!-- Start: Building for Auto -->
1014   <li class="nav-section">
1015     <div class="nav-section-header">
1016       <a href="<?cs var:toroot ?>training/auto/index.html">
1017       <span class="small">Building Apps for</span><br/>
1018               Auto
1019       </a>
1020     </div>
1021     <ul>
1022       <li>
1023         <a href="<?cs var:toroot ?>training/auto/start/index.html"
1024              description="How to start building or extending apps that work
1025              with Auto devices.">
1026              Getting Started with Auto</a>
1027       </li>
1028       <li>
1029         <a href="<?cs var:toroot ?>training/auto/audio/index.html"
1030              description="How to extend audio apps to play content on Auto devices.">
1031              Playing Audio for Auto</a>
1032       </li>
1033       <li>
1034         <a href="<?cs var:toroot ?>training/auto/messaging/index.html"
1035              description="How to extend text messaging apps to work with Auto devices.">
1036              Messaging for Auto</a>
1037       </li>
1038     </ul>
1039   </li>
1040   <!-- End: Building for Auto -->
1041 
1042 
1043   <li class="nav-section">
1044     <div class="nav-section-header">
1045       <a href="<?cs var:toroot ?>training/best-ux.html">
1046       <span class="small">Best Practices for</span><br/>
1047               Interaction &amp; Engagement
1048       </a>
1049     </div>
1050     <ul>
1051 
1052       <li class="nav-section">
1053         <div class="nav-section-header">
1054           <a href="<?cs var:toroot ?>training/design-navigation/index.html"
1055              description=
1056              "How to plan your app's screen hierarchy and forms of navigation so users can
1057              effectively and intuitively traverse your app content using various navigation
1058              patterns."
1059             >Designing Effective Navigation</a>
1060         </div>
1061         <ul>
1062           <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
1063             Planning Screens and Their Relationships
1064           </a>
1065           </li>
1066           <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
1067             Planning for Multiple Touchscreen Sizes
1068           </a>
1069           </li>
1070           <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
1071             Providing Descendant and Lateral Navigation
1072           </a>
1073           </li>
1074           <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
1075             Providing Ancestral and Temporal Navigation
1076           </a>
1077           </li>
1078           <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
1079             Putting it All Together: Wireframing the Example App
1080           </a>
1081           </li>
1082         </ul>
1083       </li>
1084 
1085       <li class="nav-section">
1086         <div class="nav-section-header">
1087           <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
1088              description=
1089              "How to implement various navigation patterns such as swipe views,
1090              a navigation drawer, and up navigation."
1091             >Implementing Effective Navigation</a>
1092         </div>
1093         <ul>
1094           <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
1095             Creating Swipe Views with Tabs
1096           </a>
1097           </li>
1098           <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
1099             Creating a Navigation Drawer
1100           </a>
1101           </li>
1102           <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
1103             Providing Up Navigation
1104           </a>
1105           </li>
1106           <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
1107             Providing Proper Back Navigation
1108           </a>
1109           </li>
1110           <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
1111             Implementing Descendant Navigation
1112           </a>
1113           </li>
1114         </ul>
1115       </li>
1116 
1117       <li class="nav-section">
1118           <div class="nav-section-header">
1119               <a href="<?cs var:toroot ?>training/notify-user/index.html"
1120                  description=
1121                  "How to display messages called notifications outside of
1122                  your application's UI."
1123                >Notifying the User</a>
1124           </div>
1125           <ul>
1126               <li>
1127                   <a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
1128                   Building a Notification
1129                   </a>
1130               </li>
1131               <li>
1132                   <a href="<?cs var:toroot ?>training/notify-user/navigation.html">
1133                   Preserving Navigation when Starting an Activity
1134                   </a>
1135               </li>
1136               <li>
1137                   <a href="<?cs var:toroot ?>training/notify-user/managing.html">
1138                   Updating Notifications
1139                   </a>
1140               </li>
1141               <li>
1142                   <a href="<?cs var:toroot ?>training/notify-user/expanded.html">
1143                   Using Big View Styles
1144                   </a>
1145               </li>
1146               <li>
1147                   <a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
1148                   Displaying Progress in a Notification
1149                   </a>
1150               </li>
1151           </ul>
1152       </li>
1153 
1154       <li class="nav-section">
1155         <div class="nav-section-header">
1156           <a href="<?cs var:toroot ?>training/search/index.html"
1157              description=
1158              "How to properly add a search interface to your app and create a searchable database."
1159             >Adding Search Functionality</a>
1160         </div>
1161         <ul>
1162           <li><a href="<?cs var:toroot ?>training/search/setup.html">
1163             Setting up the Search Interface
1164           </a>
1165           </li>
1166           <li><a href="<?cs var:toroot ?>training/search/search.html">
1167             Storing and Searching for Data
1168           </a>
1169           </li>
1170           <li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
1171             Remaining Backward Compatible
1172           </a>
1173           </li>
1174         </ul>
1175       </li>
1176 
1177      <li class="nav-section">
1178         <div class="nav-section-header">
1179           <a href="<?cs var:toroot ?>training/app-indexing/index.html"
1180              description=
1181              "How to enable deep linking and indexing of your application
1182 content so that users can open this content directly from their mobile search
1183 results."
1184             >Making Your App Content Searchable by Google</a>
1185         </div>
1186         <ul>
1187           <li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html">
1188             Enabling Deep Links for App Content
1189           </a>
1190           </li>
1191           <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html">
1192             Specifying  App Content for Indexing
1193           </a>
1194           </li>
1195         </ul>
1196       </li>
1197     </ul>
1198   </li>
1199   <!-- End Interaction and Engagement -->
1200 
1201 
1202 
1203 
1204   <li class="nav-section">
1205     <div class="nav-section-header">
1206       <a href="<?cs var:toroot ?>training/best-ui.html">
1207       <span class="small">Best Practices for</span><br/>
1208               User Interface
1209       </a>
1210     </div>
1211     <ul>
1212 
1213 
1214       <li class="nav-section">
1215         <div class="nav-section-header">
1216           <a href="<?cs var:toroot ?>training/multiscreen/index.html"
1217              zh-cn-lang="针对多种屏幕进行设计"
1218              ja-lang="複数画面のデザイン"
1219              es-lang="Cómo diseñar aplicaciones para varias pantallas"
1220              description=
1221              "How to build a user interface that's flexible enough to
1222              fit perfectly on any screen and how to create different interaction
1223              patterns that are optimized for different screen sizes."
1224             >Designing for Multiple Screens</a>
1225         </div>
1226         <ul>
1227           <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html"
1228             zh-cn-lang="支持各种屏幕尺寸"
1229             ko-lang="다양한 화면 크기 지원"
1230             ja-lang="さまざまな画面サイズのサポート"
1231             es-lang="Cómo admitir varios tamaños de pantalla"
1232             >Supporting Different Screen Sizes</a>
1233           </li>
1234           <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html"
1235             zh-cn-lang="支持各种屏幕密度"
1236             ja-lang="さまざまな画面密度のサポート"
1237             es-lang="Cómo admitir varias densidades de pantalla"
1238             >Supporting Different Screen Densities</a>
1239           </li>
1240           <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html"
1241             zh-cn-lang="实施自适应用户界面流程"
1242             ja-lang="順応性のある UI フローの実装"
1243             es-lang="Cómo implementar interfaces de usuario adaptables"
1244             >Implementing Adaptive UI Flows</a>
1245           </li>
1246         </ul>
1247       </li>
1248 
1249       <li class="nav-section">
1250         <div class="nav-section-header">
1251           <a href="<?cs var:toroot ?>training/custom-views/index.html"
1252              description=
1253              "How to build custom UI widgets that are interactive and smooth."
1254             >Creating Custom Views</a>
1255         </div>
1256         <ul>
1257           <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
1258             Creating a Custom View Class
1259           </a>
1260           </li>
1261           <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
1262             Implementing Custom Drawing
1263           </a>
1264           </li>
1265           <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
1266             Making the View Interactive
1267           </a>
1268           </li>
1269           <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
1270             Optimizing the View
1271           </a>
1272           </li>
1273         </ul>
1274       </li>
1275 
1276       <li class="nav-section">
1277         <div class="nav-section-header">
1278           <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
1279              description=
1280              "How to use UI components and other APIs from the more recent versions of Android
1281              while remaining compatible with older versions of the platform."
1282             >Creating Backward-Compatible UIs</a>
1283         </div>
1284         <ul>
1285           <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
1286             Abstracting the New APIs
1287           </a>
1288           </li>
1289           <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
1290             Proxying to the New APIs
1291           </a>
1292           </li>
1293           <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
1294             Creating an Implementation with Older APIs
1295           </a>
1296           </li>
1297           <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
1298             Using the Version-Aware Component
1299           </a>
1300           </li>
1301         </ul>
1302       </li>
1303 
1304       <li class="nav-section">
1305         <div class="nav-section-header">
1306           <a href="<?cs var:toroot ?>training/accessibility/index.html"
1307              description=
1308              "How to make your app accessible to users with vision
1309              impairment or other physical disabilities."
1310             >Implementing Accessibility</a>
1311         </div>
1312         <ul>
1313           <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
1314             Developing Accessible Applications
1315           </a>
1316           </li>
1317           <li><a href="<?cs var:toroot ?>training/accessibility/service.html">
1318             Developing Accessibility Services
1319           </a>
1320           </li>
1321         </ul>
1322       </li>
1323 
1324       <li class="nav-section">
1325         <div class="nav-section-header">
1326           <a href="<?cs var:toroot ?>training/system-ui/index.html"
1327              description=
1328              "How to hide and show status and navigation bars across different versions of Android,
1329               while managing the display of other screen components."
1330             >Managing the System UI</a>
1331         </div>
1332         <ul>
1333           <li><a href="<?cs var:toroot ?>training/system-ui/dim.html">
1334             Dimming the System Bars
1335           </a>
1336           </li>
1337           <li><a href="<?cs var:toroot ?>training/system-ui/status.html">
1338             Hiding the Status Bar
1339           </a>
1340           </li>
1341           <li><a href="<?cs var:toroot ?>training/system-ui/navigation.html">
1342             Hiding the Navigation Bar
1343           </a>
1344           </li>
1345           <li><a href="<?cs var:toroot ?>training/system-ui/immersive.html">
1346             Using Immersive Full-Screen Mode
1347           </a>
1348           </li>
1349           <li><a href="<?cs var:toroot ?>training/system-ui/visibility.html">
1350             Responding to UI Visibility Changes
1351           </a>
1352           </li>
1353         </ul>
1354       </li>
1355 
1356       <li class="nav-section">
1357         <div class="nav-section-header">
1358           <a href="<?cs var:toroot ?>training/material/index.html"
1359              description=
1360              "How to implement material design on Android."
1361             >Creating Apps with Material Design</a>
1362         </div>
1363         <ul>
1364           <li><a href="<?cs var:toroot ?>training/material/get-started.html">
1365             Getting Started
1366           </a>
1367           </li>
1368           <li><a href="<?cs var:toroot ?>training/material/theme.html">
1369             Using the Material Theme
1370           </a>
1371           </li>
1372           <li><a href="<?cs var:toroot ?>training/material/lists-cards.html">
1373             Creating Lists and Cards
1374           </a>
1375           </li>
1376           <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html">
1377             Defining Shadows and Clipping Views
1378           </a>
1379           </li>
1380           <li><a href="<?cs var:toroot ?>training/material/drawables.html">
1381             Working with Drawables
1382           </a>
1383           </li>
1384           <li><a href="<?cs var:toroot ?>training/material/animations.html">
1385             Defining Custom Animations
1386           </a>
1387           </li>
1388           <li><a href="<?cs var:toroot ?>training/material/compatibility.html">
1389             Maintaining Compatibility
1390           </a>
1391           </li>
1392         </ul>
1393       </li>
1394 
1395     </ul>
1396   </li>
1397   <!-- End User Interface -->
1398 
1399 
1400 
1401 
1402   <li class="nav-section">
1403     <div class="nav-section-header">
1404       <a href="<?cs var:toroot ?>training/best-user-input.html">
1405       <span class="small">Best Practices for</span><br/>
1406               User Input
1407       </a>
1408     </div>
1409     <ul>
1410 
1411       <li class="nav-section">
1412         <div class="nav-section-header">
1413           <a href="<?cs var:toroot ?>training/gestures/index.html"
1414              description=
1415              "How to write apps that allow users to interact with the touch screen via touch gestures."
1416             >Using Touch Gestures</a>
1417         </div>
1418         <ul>
1419           <li><a href="<?cs var:toroot ?>training/gestures/detector.html">
1420             Detecting Common Gestures
1421           </a>
1422           </li>
1423           <li><a href="<?cs var:toroot ?>training/gestures/movement.html">
1424             Tracking Movement
1425           </a>
1426           </li>
1427           <li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
1428             Animating a Scroll Gesture
1429           </a>
1430           </li>
1431           <li><a href="<?cs var:toroot ?>training/gestures/multi.html">
1432             Handling Multi-Touch Gestures
1433           </a>
1434           </li>
1435           <li><a href="<?cs var:toroot ?>training/gestures/scale.html">
1436             Dragging and Scaling
1437           </a>
1438           </li>
1439           <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
1440             Managing Touch Events in a ViewGroup
1441           </a>
1442           </li>
1443         </ul>
1444       </li>
1445 
1446       <li class="nav-section">
1447         <div class="nav-section-header">
1448           <a href="<?cs var:toroot ?>training/keyboard-input/index.html"
1449              description=
1450              "How to specify the appearance and behaviors of soft input methods (such
1451              as on-screen keyboards) and how to optimize the experience with
1452              hardware keyboards."
1453             >Handling Keyboard Input</a>
1454         </div>
1455         <ul>
1456           <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html">
1457             Specifying the Input Method Type
1458           </a>
1459           </li>
1460           <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html">
1461             Handling Input Method Visibility
1462           </a>
1463           </li>
1464           <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html">
1465             Supporting Keyboard Navigation
1466           </a>
1467           </li>
1468           <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html">
1469             Handling Keyboard Actions
1470           </a>
1471           </li>
1472         </ul>
1473       </li>
1474 
1475       <li class="nav-section">
1476         <div class="nav-section-header">
1477           <a href="<?cs var:toroot ?>training/game-controllers/index.html"
1478              description=
1479              "How to write apps that support game controllers."
1480             >Supporting Game Controllers</a>
1481         </div>
1482         <ul>
1483           <li><a href="<?cs var:toroot ?>training/game-controllers/controller-input.html">
1484             Handling Controller Actions
1485           </a>
1486           </li>
1487           <li><a href="<?cs var:toroot ?>training/game-controllers/compatibility.html">
1488             Supporting Controllers Across Android Versions
1489           </a>
1490           </li>
1491           <li><a href="<?cs var:toroot ?>training/game-controllers/multiple-controllers.html">
1492             Supporting Multiple Game Controllers
1493           </a>
1494           </li>
1495         </ul>
1496       </li>
1497     </ul>
1498   </li> <!-- end of User Input -->
1499 
1500   <li class="nav-section">
1501     <div class="nav-section-header">
1502       <a href="<?cs var:toroot ?>training/best-background.html">
1503       <span class="small">Best Practices for</span><br/>
1504               Background Jobs
1505       </a>
1506     </div>
1507     <ul>
1508 
1509       <li class="nav-section">
1510         <div class="nav-section-header">
1511           <a href="<?cs var:toroot ?>training/run-background-service/index.html"
1512              description=
1513              "How to improve UI performance and responsiveness by sending work to a
1514              Service running in the background"
1515             >Running in a Background Service</a>
1516         </div>
1517         <ul>
1518           <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
1519             Creating a Background Service
1520           </a>
1521           </li>
1522           <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
1523             Sending Work Requests to the Background Service
1524           </a>
1525           </li>
1526           <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
1527             Reporting Work Status
1528           </a>
1529           </li>
1530         </ul>
1531       </li>
1532 
1533       <li class="nav-section">
1534         <div class="nav-section-header">
1535           <a href="<?cs var:toroot ?>training/load-data-background/index.html"
1536              description="How to use CursorLoader to query data without
1537              affecting UI responsiveness."
1538             >Loading Data in the Background</a>
1539         </div>
1540         <ul>
1541           <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
1542             Running a Query with a CursorLoader</a>
1543           </li>
1544           <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
1545             Handling the Results</a>
1546           </li>
1547         </ul>
1548       </li>
1549 
1550        <li class="nav-section">
1551         <div class="nav-section-header">
1552           <a href="<?cs var:toroot ?>training/scheduling/index.html"
1553              description="How to use repeating alarms and wake locks
1554              to run background jobs."
1555             >Managing Device Awake State</a>
1556         </div>
1557         <ul>
1558           <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html">
1559             Keeping the Device Awake</a>
1560           </li>
1561           <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html">
1562             Scheduling Repeating Alarms</a>
1563           </li>
1564         </ul>
1565       </li>
1566     </ul>
1567   </li> <!-- end of Background Jobs -->
1568 
1569   <li class="nav-section">
1570     <div class="nav-section-header">
1571       <a href="<?cs var:toroot ?>training/best-performance.html">
1572       <span class="small">Best Practices for</span><br/>
1573               Performance
1574       </a>
1575     </div>
1576     <ul>
1577 
1578       <li>
1579         <a href="<?cs var:toroot ?>training/articles/memory.html"
1580            description=
1581            "How to keep your app's memory footprint small in order to improve performance
1582            on a variety of mobile devices."
1583           >Managing Your App's Memory</a>
1584       </li>
1585 
1586       <li>
1587         <a href="<?cs var:toroot ?>training/articles/perf-tips.html"
1588            description=
1589            "How to optimize your app's performance in various ways to improve its
1590            responsiveness and battery efficiency."
1591           >Performance Tips</a>
1592       </li>
1593 
1594       <li class="nav-section">
1595         <div class="nav-section-header">
1596           <a href="<?cs var:toroot ?>training/improving-layouts/index.html"
1597              description=
1598              "How to identify problems in your app's layout performance and improve the UI
1599              responsiveness."
1600             >Improving Layout Performance</a>
1601         </div>
1602         <ul>
1603           <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
1604             Optimizing Layout Hierarchies
1605           </a>
1606           </li>
1607           <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
1608             Re-using Layouts with &lt;include/&gt;
1609           </a>
1610           </li>
1611           <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
1612             Loading Views On Demand
1613           </a>
1614           </li>
1615           <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
1616             Making ListView Scrolling Smooth
1617           </a>
1618           </li>
1619         </ul>
1620       </li>
1621 
1622       <li class="nav-section">
1623         <div class="nav-section-header">
1624           <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html"
1625              zh-cn-lang="优化电池使用时间"
1626              ja-lang="電池消費量の最適化"
1627              es-lang="Cómo optimizar la duración de la batería"
1628              description=
1629              "How to minimize the amount of power your app requires by adapting to current
1630              power conditions and performing power-hungry tasks at proper intervals."
1631             >Optimizing Battery Life</a>
1632         </div>
1633         <ul>
1634           <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html"
1635             zh-cn-lang="监控电池电量和充电状态"
1636             ja-lang="電池残量と充電状態の監視"
1637             es-lang="Cómo controlar el nivel de batería y el estado de carga"
1638             >Monitoring the Battery Level and Charging State</a>
1639           </li>
1640           <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html"
1641             zh-cn-lang="确定和监控基座对接状态和类型"
1642             ja-lang="ホルダーの装着状態とタイプの特定と監視"
1643             es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"
1644             >Determining and Monitoring the Docking State and Type</a>
1645           </li>
1646           <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html"
1647             zh-cn-lang="确定和监控网络连接状态"
1648             ja-lang="接続状態の特定と監視"
1649             es-lang="Cómo determinar y controlar el estado de la conectividad"
1650             >Determining and Monitoring the Connectivity Status</a>
1651           </li>
1652           <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html"
1653             zh-cn-lang="根据需要操作广播接收器"
1654             ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
1655             es-lang="Cómo manipular los receptores de emisión bajo demanda"
1656             >Manipulating Broadcast Receivers On Demand</a>
1657           </li>
1658         </ul>
1659       </li>
1660       <li class="nav-section">
1661         <div class="nav-section-header">
1662           <a href="<?cs var:toroot ?>training/multiple-threads/index.html"
1663              description=
1664              "How to improve the performance and scalability of long-running operations by
1665               dispatching work to multiple threads.">
1666              Sending Operations to Multiple Threads</a>
1667         </div>
1668         <ul>
1669           <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html">
1670             Specifying the Code to Run on a Thread
1671           </a>
1672           </li>
1673           <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html">
1674             Creating a Manager for Multiple Threads
1675           </a>
1676           </li>
1677           <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html">
1678             Running Code on a Thread Pool Thread
1679           </a>
1680           </li>
1681           <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html">
1682             Communicating with the UI Thread
1683           </a>
1684           </li>
1685         </ul>
1686       </li>
1687 
1688       <li>
1689         <a href="<?cs var:toroot ?>training/articles/perf-anr.html"
1690            description=
1691            "How to keep your app responsive to user interaction so the UI does not lock-up and
1692            display an &quot;Application Not Responding&quot; dialog."
1693           >Keeping Your App Responsive</a>
1694       </li>
1695 
1696       <li>
1697         <a href="<?cs var:toroot ?>training/articles/perf-jni.html"
1698            description=
1699            "How to efficiently use the Java Native Interface with the Android NDK."
1700           >JNI Tips</a>
1701       </li>
1702       <li>
1703         <a href="<?cs var:toroot ?>training/articles/smp.html"
1704            description=
1705            "Tips for coding Android apps on symmetric multiprocessor systems."
1706           >SMP Primer for Android</a>
1707       </li>
1708     </ul>
1709   </li> <!-- end of Performance -->
1710 
1711 
1712 
1713   <li class="nav-section">
1714     <div class="nav-section-header">
1715       <a href="<?cs var:toroot ?>training/best-security.html">
1716       <span class="small">Best Practices for</span><br/>
1717               Security &amp; Privacy
1718       </a>
1719     </div>
1720     <ul>
1721       <li>
1722         <a href="<?cs var:toroot ?>training/articles/security-tips.html"
1723            description=
1724            "How to perform various tasks and keep your app's data and your user's data secure."
1725           >Security Tips</a>
1726       </li>
1727 
1728       <li>
1729         <a href="<?cs var:toroot ?>training/articles/security-ssl.html"
1730            description=
1731            "How to ensure that your app is secure when performing network transactions."
1732           >Security with HTTPS and SSL</a>
1733       </li>
1734 
1735       <li>
1736         <a href="<?cs var:toroot ?>training/articles/security-gms-provider.html"
1737            description=
1738            "How to use and update Google Play services security provider, to
1739            protect against SSL exploits."
1740           >Updating Your Security Provider to Protect Against SSL Exploits</a>
1741       </li>
1742 
1743       <li class="nav-section">
1744         <div class="nav-section-header">
1745           <a href="<?cs var:toroot ?>training/enterprise/index.html"
1746              description=
1747              "How to implement device management policies for enterprise-oriented apps."
1748             >Developing for Enterprise</a>
1749         </div>
1750         <ul>
1751           <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
1752             Enhancing Security with Device Management Policies
1753           </a>
1754           </li>
1755           <li><a href="<?cs var:toroot ?>training/enterprise/app-compatibility.html">
1756             Ensuring Compatibility with Managed Profiles
1757           </a>
1758           </li>
1759         </ul>
1760       </li>
1761     </ul>
1762   </li>
1763   <!-- End security and user info -->
1764 
1765   <li class="nav-section">
1766     <div class="nav-section-header">
1767       <a href="<?cs var:toroot ?>training/testing.html">
1768       <span class="small">Best Practices for</span><br/>
1769               Testing
1770       </a>
1771     </div>
1772     <ul>
1773       <li class="nav-section">
1774       <div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html"
1775          description="How to test Activities in your Android applications.">
1776             Testing Your Activity
1777           </a></div>
1778         <ul>
1779           <li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html">
1780             <span class="en">Setting Up Your Test Environment</span>
1781           </a>
1782           </li>
1783           <li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html">
1784             <span class="en">Creating and Running a Test Case</span>
1785           </a>
1786           </li>
1787           <li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html">
1788             <span class="en">Testing UI Components</span>
1789           </a>
1790           </li>
1791           <li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html">
1792             <span class="en">Creating Unit Tests</span>
1793           </a>
1794           </li>
1795           <li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html">
1796             <span class="en">Creating Functional Tests</span>
1797           </a>
1798           </li>
1799         </ul>
1800       </li>
1801     </ul>
1802   </li>
1803   <!-- End best Testing -->
1804 
1805   <li class="nav-section">
1806     <div class="nav-section-header">
1807       <a href="<?cs var:toroot ?>training/distribute.html">
1808       <span class="small">Using Google Play to</span><br/>
1809               Distribute &amp; Monetize
1810       </a>
1811     </div>
1812     <ul>
1813       <li class="nav-section">
1814       <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
1815          description="How to sell in-app products from your application using In-app Billing.">
1816             Selling In-app Products
1817           </a></div>
1818         <ul>
1819           <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
1820             <span class="en">Preparing Your App</span>
1821           </a>
1822           </li>
1823           <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
1824             <span class="en">Establishing Products for Sale</span>
1825           </a>
1826           </li>
1827           <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
1828             <span class="en">Purchasing Products</span>
1829           </a>
1830           </li>
1831           <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
1832             <span class="en">Testing Your App</span>
1833           </a>
1834           </li>
1835         </ul>
1836       </li>
1837 
1838       <li class="nav-section">
1839         <div class="nav-section-header">
1840           <a href="<?cs var:toroot ?>training/multiple-apks/index.html"
1841              description=
1842              "How to publish your app on Google Play with separate APKs that target
1843              different devices, while using a single app listing."
1844             >Maintaining Multiple APKs</a>
1845         </div>
1846         <ul>
1847           <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
1848             Creating Multiple APKs for Different API Levels
1849           </a>
1850           </li>
1851           <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
1852             Creating Multiple APKs for Different Screen Sizes
1853           </a>
1854           </li>
1855           <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
1856             Creating Multiple APKs for Different GL Textures
1857           </a>
1858           </li>
1859           <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
1860             Creating Multiple APKs with 2+ Dimensions
1861           </a>
1862           </li>
1863         </ul>
1864       </li>
1865       <li class="nav-section">
1866         <div class="nav-section-header">
1867           <a href="<?cs var:toroot ?>training/monetization/index.html"
1868              description=
1869              "How to implement monetization strategies for your app without compromising
1870              the user experience."
1871             >Monetizing Your App</a>
1872         </div>
1873         <ul>
1874           <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
1875             Advertising without Compromising User Experience
1876           </a>
1877           </li>
1878         </ul>
1879       </li>
1880     </ul>
1881   </li>
1882   <!-- End best Publishing -->
1883 
1884 </ul><!-- nav -->
1885 <script type="text/javascript">
1886 <!--
1887     buildToggleLists();
1888     changeNavLang(getLangPref());
1889 //-->
1890 </script>