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
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">
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
1182content so that users can open this content directly from their mobile search
1183results."
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="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="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="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>