training_toc.cs revision 518edbfa97dbdc366f1e03c62ae275c388ec20ef
1<ul id="nav">
2
3
4  <li class="nav-section">
5    <div class="nav-section-header">
6      <a href="<?cs var:toroot ?>training/index.html">
7        Getting Started
8      </a>
9    </div>
10
11    <ul>
12      <li class="nav-section">
13        <div class="nav-section-header">
14          <a href="<?cs var:toroot ?>training/basics/firstapp/index.html"
15             description=
16             "After you've installed the Android SDK, start with this class
17             to learn the basics about Android app development."
18            >Building Your First App</a>
19        </div>
20        <ul>
21          <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html">
22            Creating an Android Project
23          </a>
24          </li>
25          <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html">
26            Running Your Application
27          </a>
28          </li>
29          <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html">
30            Building a Simple User Interface
31          </a>
32          </li>
33          <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html">
34            Starting Another Activity
35          </a>
36          </li>
37        </ul>
38      </li>
39
40      <li class="nav-section">
41        <div class="nav-section-header">
42          <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
43             description=
44             "How Android activities live and die and how to create
45             a seamless user experience by implementing lifecycle callback methods."
46            >Managing the Activity Lifecycle</a>
47        </div>
48        <ul>
49          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html">
50            Starting an Activity
51          </a>
52          </li>
53          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
54            Pausing and Resuming an Activity
55          </a>
56          </li>
57          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html">
58            Stopping and Restarting an Activity
59          </a>
60          </li>
61          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html">
62            Recreating an Activity
63          </a>
64          </li>
65        </ul>
66      </li>
67
68      <li class="nav-section">
69        <div class="nav-section-header">
70          <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html"
71             description=
72             "How to build your app with alternative resources that provide an
73             optimized user experience on multiple device form factors using a single APK."
74            >Supporting Different Devices</a>
75        </div>
76        <ul>
77          <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html">
78            Supporting Different Languages
79          </a>
80          </li>
81          <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html">
82            Supporting Different Screens
83          </a>
84          </li>
85          <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html">
86            Supporting Different Platform Versions
87          </a>
88          </li>
89        </ul>
90      </li>
91
92      <li class="nav-section">
93        <div class="nav-section-header">
94          <a href="<?cs var:toroot ?>training/basics/fragments/index.html"
95             description=
96             "How to build a user interface for your app that is flexible enough
97             to present multiple UI components on large screens and a more constrained set of
98             UI components on smaller screens&mdash;essential for building a single APK for both
99             phones and tablets."
100            >Building a Dynamic UI with Fragments</a>
101        </div>
102        <ul>
103          <li><a href="<?cs var:toroot ?>training/basics/fragments/support-lib.html">
104            Using the Support Library
105          </a>
106          </li>
107          <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
108            Creating a Fragment
109          </a>
110          </li>
111          <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html">
112            Building a Flexible UI
113          </a>
114          </li>
115          <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
116            Communicating with Other Fragments
117          </a>
118          </li>
119        </ul>
120      </li>
121
122      <li class="nav-section">
123        <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html"
124             description=
125             "How to save data on the device, whether it's temporary files, downloaded
126             app assets, user media, structured data, or something else."
127            >Saving Data</a>
128        </div>
129        <ul>
130          <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html">
131            Saving Key-Value Sets
132          </a>
133          </li>
134          <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html">
135            Saving Files
136          </a>
137          </li>
138          <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html">
139            Saving Data in SQL Databases
140          </a>
141          </li>
142        </ul>
143      </li>
144
145      <li class="nav-section">
146        <div class="nav-section-header">
147          <a href="<?cs var:toroot ?>training/basics/intents/index.html"
148             description=
149             "How to build a user experience that leverages other apps available
150             on the device to perform advanced user tasks, such as capture a photo or view
151             an address on a map."
152            >Interacting with Other Apps</a>
153        </div>
154        <ul>
155          <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html">
156            Sending the User to Another App
157          </a>
158          </li>
159          <li><a href="<?cs var:toroot ?>training/basics/intents/result.html">
160            Getting a Result from the Activity
161          </a>
162          </li>
163          <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html">
164            Allowing Other Apps to Start Your Activity
165          </a>
166          </li>
167        </ul>
168      </li>
169
170      <li class="nav-section">
171        <div class="nav-section-header">
172          <a href="<?cs var:toroot ?>training/sharing/index.html"
173             description=
174             "How to take your app interaction to the next level by sharing
175             information with other apps, receive information back, and provide a simple and
176             scalable way to perform Share actions with user content."
177            >Sharing Content</a>
178        </div>
179        <ul>
180          <li><a href="<?cs var:toroot ?>training/sharing/send.html">
181            Sending Content to Other Apps
182          </a>
183          </li>
184          <li><a href="<?cs var:toroot ?>training/sharing/receive.html">
185            Receiving Content from Other Apps
186          </a>
187          </li>
188          <li><a href="<?cs var:toroot ?>training/sharing/shareaction.html">
189            Adding an Easy Share Action
190          </a>
191          </li>
192        </ul>
193      </li>
194    </ul>
195  </li><!-- end getting started -->
196
197
198  <li class="nav-section">
199    <div class="nav-section-header">
200      <a href="<?cs var:toroot ?>training/building-multimedia.html">
201      <span class="small">Building Apps with</span><br/>Multimedia
202      </a>
203    </div>
204    <ul>
205
206      <li class="nav-section">
207        <div class="nav-section-header">
208          <a href="<?cs var:toroot ?>training/managing-audio/index.html"
209             description=
210             "How to respond to hardware audio key presses, request audio focus
211             when playing audio, and respond appropriately to changes in audio focus."
212            >Managing Audio Playback</a>
213        </div>
214        <ul>
215          <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
216            Controlling Your App's Volume and Playback
217          </a>
218          </li>
219          <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
220            Managing Audio Focus
221          </a>
222          </li>
223          <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
224            Dealing with Audio Output Hardware
225          </a>
226          </li>
227        </ul>
228      </li>
229
230      <li class="nav-section">
231        <div class="nav-section-header">
232          <a href="<?cs var:toroot ?>training/camera/index.html"
233             description=
234             "How to leverage existing camera apps on the user's device to capture
235             photos or control the camera hardware directly and build your own camera app."
236            >Capturing Photos</a>
237        </div>
238        <ul>
239          <li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
240            Taking Photos Simply
241          </a>
242          </li>
243          <li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
244            Recording Videos Simply
245          </a>
246          </li>
247          <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
248            Controlling the Camera
249          </a>
250          </li>
251        </ul>
252      </li>
253    </ul>
254  </li>
255  <!-- End multimedia -->
256
257
258
259  <li class="nav-section">
260    <div class="nav-section-header">
261      <a href="<?cs var:toroot ?>training/building-graphics.html">
262      <span class="small">Building Apps with</span><br/>Graphics &amp; Animation
263      </a>
264    </div>
265    <ul>
266
267      <li class="nav-section">
268        <div class="nav-section-header">
269          <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html"
270             description=
271             "How to load and process bitmaps while keeping your user interface
272             responsive and avoid exceeding memory limits."
273            >Displaying Bitmaps Efficiently</a>
274        </div>
275        <ul>
276          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
277            Loading Large Bitmaps Efficiently
278          </a>
279          </li>
280          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html">
281            Processing Bitmaps Off the UI Thread
282          </a>
283          </li>
284          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html">
285            Caching Bitmaps
286          </a>
287          </li>
288          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
289            Displaying Bitmaps in Your UI
290          </a></li>
291        </ul>
292      </li>
293
294      <li class="nav-section">
295        <div class="nav-section-header">
296          <a href="<?cs var:toroot?>training/graphics/opengl/index.html"
297             description=
298             "How to create OpenGL graphics within the Android app framework
299             and respond to touch input."
300            >Displaying Graphics with OpenGL ES</a>
301        </div>
302        <ul>
303          <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
304            Building an OpenGL ES Environment
305          </a>
306          </li>
307          <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
308            Defining Shapes
309          </a>
310          </li>
311          <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
312            Drawing Shapes
313          </a>
314          </li>
315          <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
316            Applying Projection and Camera Views
317          </a>
318          </li>
319          <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
320            Adding Motion
321          </a>
322          </li>
323          <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
324            Responding to Touch Events
325          </a>
326          </li>
327        </ul>
328      </li>
329      <li class="nav-section">
330        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html"
331             description=
332             "How to add transitional animations to your user interface.">
333            Adding Animations
334          </a></div>
335        <ul>
336          <li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
337            Crossfading Two Views
338          </a>
339          </li>
340          <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
341            Using ViewPager for Screen Slide
342          </a>
343          </li>
344          <li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
345            Displaying Card Flip Animations
346          </a>
347          </li>
348          <li><a href="<?cs var:toroot ?>training/animation/zoom.html">
349            Zooming a View
350          </a>
351          </li>
352          <li><a href="<?cs var:toroot ?>training/animation/layout.html">
353            Animating Layout Changes
354          </a>
355          </li>
356        </ul>
357      </li>
358    </ul>
359  </li>
360  <!-- End graphics and animation -->
361
362
363  <li class="nav-section">
364    <div class="nav-section-header">
365      <a href="<?cs var:toroot ?>training/building-connectivity.html">
366      <span class="small">Building Apps with</span><br/>
367              Connectivity &amp; the Cloud
368      </a>
369    </div>
370    <ul>
371
372
373      <li class="nav-section">
374        <div class="nav-section-header">
375          <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html"
376             description=
377             "How to find and connect to local devices using Network Service
378             Discovery and Wi-Fi Direct in order to create peer-to-peer connections."
379             >Connecting Devices Wirelessly</a>
380        </div>
381        <ul>
382          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
383            Using Network Service Discovery
384          </a>
385          </li>
386          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
387            Connecting with Wi-Fi Direct
388          </a>
389          </li>
390          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
391            Using Wi-Fi Direct for Service Discovery
392          </a>
393          </li>
394        </ul>
395      </li>
396
397       <li class="nav-section">
398        <div class="nav-section-header">
399          <a href="<?cs var:toroot ?>training/basics/network-ops/index.html"
400             description=
401             "How to create a network connection, monitor the connection for changes
402             in connectivity, and perform transactions with XML data."
403            >Performing Network Operations</a>
404        </div>
405        <ul>
406          <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
407            Connecting to the Network
408          </a>
409          </li>
410          <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
411            Managing Network Usage
412          </a>
413          </li>
414          <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
415            Parsing XML Data
416          </a>
417          </li>
418        </ul>
419      </li>
420      <li class="nav-section">
421        <div class="nav-section-header">
422          <a href="<?cs var:toroot ?>training/efficient-downloads/index.html"
423             description=
424             "How to minimize your app's impact on the battery when performing downloads
425             and other network transactions."
426            >Transferring Data Without Draining the Battery</a>
427        </div>
428        <ul>
429          <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
430            Optimizing Downloads for Efficient Network Access
431          </a>
432          </li>
433          <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
434            Minimizing the Effect of Regular Updates
435          </a>
436          </li>
437          <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
438            Redundant Downloads are Redundant
439          </a>
440          </li>
441          <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
442            Modifying Patterns Based on the Connectivity Type
443          </a>
444          </li>
445        </ul>
446      </li>
447
448      <li class="nav-section">
449        <div class="nav-section-header">
450          <a href="<?cs var:toroot ?>training/cloudsync/index.html"
451             description=
452             "How to sync and back up app and user data to remote web services in the
453              cloud and how to restore the data back to multiple devices."
454            >Syncing to the Cloud</a>
455        </div>
456        <ul>
457          <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html">
458            Using the Backup API
459          </a>
460          </li>
461          <li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html">
462            Making the Most of Google Cloud Messaging
463          </a>
464          </li>
465        </ul>
466      </li>
467    </ul>
468  </li>
469  <!-- End connectivity and cloud -->
470
471
472
473  <li class="nav-section">
474    <div class="nav-section-header">
475      <a href="<?cs var:toroot ?>training/building-userinfo.html">
476      <span class="small">Building Apps with</span><br/>
477              User Info &amp; Location
478      </a>
479    </div>
480    <ul>
481
482      <li class="nav-section">
483        <div class="nav-section-header">
484          <a href="<?cs var:toroot ?>training/id-auth/index.html"
485             description=
486             "How to remember the user by account, authenticate the user, acquire user permission
487             for the user's online data, and create custom accounts on the device."
488            >Remembering Users</a>
489        </div>
490        <ul>
491          <li><a href="<?cs var:toroot ?>training/id-auth/identify.html">
492            Remembering Your User
493          </a>
494          </li>
495          <li><a href="<?cs var:toroot ?>training/id-auth/authenticate.html">
496            Authenticating to OAuth2 Services
497          </a>
498          </li>
499          <li><a href="<?cs var:toroot ?>training/id-auth/custom_auth.html">
500            Creating a Custom Account Type
501          </a>
502          </li>
503        </ul>
504      </li>
505
506      <li class="nav-section">
507        <div class="nav-section-header">
508          <a href="<?cs var:toroot ?>training/basics/location/index.html"
509             description=
510             "How to add location-aware features to your app by aqcuiring the user's current
511             location."
512            >Making Your App Location Aware</a>
513        </div>
514        <ul>
515          <li><a href="<?cs var:toroot ?>training/basics/location/locationmanager.html">
516            Using the Location Manager
517          </a>
518          </li>
519          <li><a href="<?cs var:toroot ?>training/basics/location/currentlocation.html">
520            Obtaining the Current Location
521          </a>
522          </li>
523          <li><a href="<?cs var:toroot ?>training/basics/location/geocoding.html">
524            Displaying a Location Address
525          </a>
526          </li>
527        </ul>
528      </li>
529    </ul>
530  </li>
531  <!-- End privacy and location -->
532
533
534
535  <li class="nav-section">
536    <div class="nav-section-header">
537      <a href="<?cs var:toroot ?>training/best-ux.html">
538      <span class="small">Best Practices for</span><br/>
539              User Experience &amp; UI
540      </a>
541    </div>
542    <ul>
543
544      <li class="nav-section">
545        <div class="nav-section-header">
546          <a href="<?cs var:toroot ?>training/design-navigation/index.html"
547             description=
548             "How to plan your app's screen hierarchy and forms of navigation so users can
549             effectively and intuitively traverse your app content using various navigation
550             patterns."
551            >Designing Effective Navigation</a>
552        </div>
553        <ul>
554          <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
555            Planning Screens and Their Relationships
556          </a>
557          </li>
558          <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
559            Planning for Multiple Touchscreen Sizes
560          </a>
561          </li>
562          <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
563            Providing Descendant and Lateral Navigation
564          </a>
565          </li>
566          <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
567            Providing Ancestral and Temporal Navigation
568          </a>
569          </li>
570          <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
571            Putting it All Together: Wireframing the Example App
572          </a>
573          </li>
574        </ul>
575      </li>
576
577      <li class="nav-section">
578        <div class="nav-section-header">
579          <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
580             description=
581             "How to implement various navigation patterns such as swipe views and up navigation."
582            >Implementing Effective Navigation</a>
583        </div>
584        <ul>
585          <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
586            Implementing Lateral Navigation
587          </a>
588          </li>
589          <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
590            Implementing Ancestral Navigation
591          </a>
592          </li>
593          <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
594            Implementing Temporal Navigation
595          </a>
596          </li>
597          <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
598            Implementing Descendant Navigation
599          </a>
600          </li>
601        </ul>
602      </li>
603
604      <li class="nav-section">
605          <div class="nav-section-header">
606              <a href="<?cs var:toroot ?>training/notify-user/index.html"
607                 description=
608                 "How to display messages called notifications outside of
609                 your application's UI."
610               >Notifying the User</a>
611          </div>
612          <ul>
613              <li>
614                  <a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
615                  Building a Notification
616                  </a>
617              </li>
618              <li>
619                  <a href="<?cs var:toroot ?>training/notify-user/navigation.html">
620                  Preserving Navigation when Starting an Activity
621                  </a>
622              </li>
623              <li>
624                  <a href="<?cs var:toroot ?>training/notify-user/managing.html">
625                  Updating Notifications
626                  </a>
627              </li>
628              <li>
629                  <a href="<?cs var:toroot ?>training/notify-user/expanded.html">
630                  Using Big View Styles
631                  </a>
632              </li>
633              <li>
634                  <a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
635                  Displaying Progress in a Notification
636                  </a>
637              </li>
638          </ul>
639      </li>
640
641      <li class="nav-section">
642        <div class="nav-section-header">
643          <a href="<?cs var:toroot ?>training/search/index.html"
644             description=
645             "How to properly add a search interface to your app and create a searchable database."
646            >Adding Search Functionality</a>
647        </div>
648        <ul>
649          <li><a href="<?cs var:toroot ?>training/search/setup.html">
650            Setting up the Search Interface
651          </a>
652          </li>
653          <li><a href="<?cs var:toroot ?>training/search/search.html">
654            Storing and Searching for Data
655          </a>
656          </li>
657          <li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
658            Remaining Backward Compatible
659          </a>
660          </li>
661        </ul>
662      </li>
663
664
665      <li class="nav-section">
666        <div class="nav-section-header">
667          <a href="/training/multiscreen/index.html"
668             zh-CN-lang="针对多种屏幕进行设计"
669             ja-lang="複数画面のデザイン"
670             es-lang="Cómo diseñar aplicaciones para varias pantallas"
671             description=
672             "How to build a user interface that's flexible enough to
673             fit perfectly on any screen and how to create different interaction
674             patterns that are optimized for different screen sizes."
675            >Designing for Multiple Screens</a>
676        </div>
677        <ul>
678          <li><a href="/training/multiscreen/screensizes.html"
679            zh-CN-lang="支持各种屏幕尺寸"
680            ko-lang="다양한 화면 크기 지원"
681            ja-lang="さまざまな画面サイズのサポート"
682            es-lang="mo admitir varios tamaños de pantalla"
683            >Supporting Different Screen Sizes</a>
684          </li>
685          <li><a href="/training/multiscreen/screendensities.html"
686            zh-CN-lang="支持各种屏幕密度"
687            ja-lang="さまざまな画面密度のサポート"
688            es-lang="mo admitir varias densidades de pantalla"
689            >Supporting Different Screen Densities</a>
690          </li>
691          <li><a href="/training/multiscreen/adaptui.html"
692            zh-CN-lang="实施自适应用户界面流程"
693            ja-lang="順応性のある UI フローの実装"
694            es-lang="mo implementar interfaces de usuario adaptables"
695            >Implementing Adaptive UI Flows</a>
696          </li>
697        </ul>
698      </li>
699
700      <li class="nav-section">
701        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/tv/index.html"
702             description=
703             "How to optimize your app's user interface and user input for
704             the &quot;ten foot experience&quot; of a TV screen."
705            >Designing for TV</a>
706        </div>
707        <ul>
708          <li><a href="<?cs var:toroot ?>training/tv/optimizing-layouts-tv.html">
709            Optimizing Layouts for TV
710          </a>
711          </li>
712          <li><a href="<?cs var:toroot ?>training/tv/optimizing-navigation-tv.html">
713            Optimizing Navigation for TV
714          </a>
715          </li>
716          <li><a href="<?cs var:toroot ?>training/tv/unsupported-features-tv.html">
717            Handling Features Not Supported on TV
718          </a>
719          </li>
720        </ul>
721      </li>
722
723      <li class="nav-section">
724        <div class="nav-section-header">
725          <a href="<?cs var:toroot ?>training/custom-views/index.html"
726             description=
727             "How to build custom UI widgets that are interactive and smooth."
728            >Creating Custom Views</a>
729        </div>
730        <ul>
731          <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
732            Creating a Custom View Class
733          </a>
734          </li>
735          <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
736            Implementing Custom Drawing
737          </a>
738          </li>
739          <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
740            Making the View Interactive
741          </a>
742          </li>
743          <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
744            Optimizing the View
745          </a>
746          </li>
747        </ul>
748      </li>
749
750      <li class="nav-section">
751        <div class="nav-section-header">
752          <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
753             description=
754             "How to use UI components and other APIs from the more recent versions of Android
755             while remaining compatible with older versions of the platform."
756            >Creating Backward-Compatible UIs</a>
757        </div>
758        <ul>
759          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
760            Abstracting the New APIs
761          </a>
762          </li>
763          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
764            Proxying to the New APIs
765          </a>
766          </li>
767          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
768            Creating an Implementation with Older APIs
769          </a>
770          </li>
771          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
772            Using the Version-Aware Component
773          </a>
774          </li>
775        </ul>
776      </li>
777
778      <li class="nav-section">
779        <div class="nav-section-header">
780          <a href="<?cs var:toroot ?>training/accessibility/index.html"
781             description=
782             "How to make your app accessible to users with vision
783             impairment or other physical disabilities."
784            >Implementing Accessibility</a>
785        </div>
786        <ul>
787          <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
788            Developing Accessible Applications
789          </a>
790          </li>
791          <li><a href="<?cs var:toroot ?>training/accessibility/service.html">
792            Developing Accessibility Services
793          </a>
794          </li>
795        </ul>
796      </li>
797
798    </ul>
799  </li>
800  <!-- End best UX and UI -->
801
802  <li class="nav-section">
803    <div class="nav-section-header">
804      <a href="<?cs var:toroot ?>training/best-performance.html">
805      <span class="small">Best Practices for</span><br/>
806              User Input
807      </a>
808    </div>
809    <ul>
810
811      <li class="nav-section">
812        <div class="nav-section-header">
813          <a href="<?cs var:toroot ?>training/gestures/index.html"
814             description=
815             "How to write apps that allow users to interact with the touch screen via touch gestures."
816            >Using Touch Gestures</a>
817        </div>
818        <ul>
819          <li><a href="<?cs var:toroot ?>training/gestures/detector.html">
820            Detecting Common Gestures
821          </a>
822          </li>
823          <li><a href="<?cs var:toroot ?>training/gestures/movement.html">
824            Tracking Movement
825          </a>
826          </li>
827          <li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
828            Animating a Scroll Gesture
829          </a>
830          </li>
831          <li><a href="<?cs var:toroot ?>training/gestures/multi.html">
832            Handling Multi-Touch Gestures
833          </a>
834          </li>
835          <li><a href="<?cs var:toroot ?>training/gestures/scale.html">
836            Dragging and Scaling
837          </a>
838          </li>
839          <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
840            Managing Touch Events in a ViewGroup
841          </a>
842          </li>
843        </ul>
844      </li>
845      </ul>
846  </li> <!-- end of User Input -->
847
848  <li class="nav-section">
849    <div class="nav-section-header">
850      <a href="<?cs var:toroot ?>training/best-performance.html">
851      <span class="small">Best Practices for</span><br/>
852              Performance
853      </a>
854    </div>
855    <ul>
856
857      <li>
858        <a href="<?cs var:toroot ?>training/articles/perf-tips.html"
859           description=
860           "How to optimize your app's performance in various ways to improve its
861           responsiveness and battery efficiency."
862          >Performance Tips</a>
863      </li>
864
865      <li class="nav-section">
866        <div class="nav-section-header">
867          <a href="<?cs var:toroot ?>training/improving-layouts/index.html"
868             description=
869             "How to identify problems in your app's layout performance and improve the UI
870             responsiveness."
871            >Improving Layout Performance</a>
872        </div>
873        <ul>
874          <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
875            Optimizing Layout Hierarchies
876          </a>
877          </li>
878          <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
879            Re-using Layouts with &lt;include/&gt;
880          </a>
881          </li>
882          <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
883            Loading Views On Demand
884          </a>
885          </li>
886          <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
887            Making ListView Scrolling Smooth
888          </a>
889          </li>
890        </ul>
891      </li>
892
893      <li class="nav-section">
894        <div class="nav-section-header">
895          <a href="<?cs var:toroot ?>training/run-background-service/index.html"
896             description=
897             "How to improve UI performance and responsiveness by sending work to a
898             Service running in the background"
899            >Running in a Background Service</a>
900        </div>
901        <ul>
902          <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
903            Creating a Background Service
904          </a>
905          </li>
906          <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
907            Sending Work Requests to the Background Service
908          </a>
909          </li>
910          <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
911            Reporting Work Status
912          </a>
913          </li>
914        </ul>
915      </li>
916
917      <li class="nav-section">
918        <div class="nav-section-header">
919          <a href="<?cs var:toroot ?>training/load-data-background/index.html"
920             description="How to use CursorLoader to query data without
921             affecting UI responsiveness."
922            >Loading Data in the Background</a>
923        </div>
924        <ul>
925          <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
926            Running a Query with a CursorLoader</a>
927          </li>
928          <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
929            Handling the Results</a>
930          </li>
931        </ul>
932      </li>
933
934      <li class="nav-section">
935        <div class="nav-section-header">
936          <a href="/training/monitoring-device-state/index.html"
937             zh-CN-lang="优化电池使用时间"
938             ja-lang="電池消費量の最適化"
939             es-lang="Cómo optimizar la duración de la batería"
940             description=
941             "How to minimize the amount of power your app requires by adapting to current
942             power conditions and performing power-hungry tasks at proper intervals."
943            >Optimizing Battery Life</a>
944        </div>
945        <ul>
946          <li><a href="/training/monitoring-device-state/battery-monitoring.html"
947            zh-CN-lang="监控电池电量和充电状态"
948            ja-lang="電池残量と充電状態の監視"
949            es-lang="Cómo controlar el nivel de batería y el estado de carga"
950            >Monitoring the Battery Level and Charging State</a>
951          </li>
952          <li><a href="/training/monitoring-device-state/docking-monitoring.html"
953            zh-CN-lang="确定和监控基座对接状态和类型"
954            ja-lang="ホルダーの装着状態とタイプの特定と監視"
955            es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión"
956            >Determining and Monitoring the Docking State and Type</a>
957          </li>
958          <li><a href="/training/monitoring-device-state/connectivity-monitoring.html"
959            zh-CN-lang="确定和监控网络连接状态"
960            ja-lang="接続状態の特定と監視"
961            es-lang="Cómo determinar y controlar el estado de la conectividad"
962            >Determining and Monitoring the Connectivity Status</a>
963          </li>
964          <li><a href="/training/monitoring-device-state/manifest-receivers.html"
965            zh-CN-lang="根据需要操作广播接收器"
966            ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
967            es-lang="Cómo manipular los receptores de emisión bajo demanda"
968            >Manipulating Broadcast Receivers On Demand</a>
969          </li>
970        </ul>
971      </li>
972
973      <li>
974        <a href="<?cs var:toroot ?>training/articles/perf-anr.html"
975           description=
976           "How to keep your app responsive to user interaction so the UI does not lock-up and
977           display an &quot;Application Not Responding&quot; dialog."
978          >Keeping Your App Responsive</a>
979      </li>
980
981      <li>
982        <a href="<?cs var:toroot ?>training/articles/perf-jni.html"
983           description=
984           "How to efficiently use the Java Native Interface with the Android NDK."
985          >JNI Tips</a>
986      </li>
987      <li>
988        <a href="<?cs var:toroot ?>training/articles/smp.html"
989           description=
990           "Tips for coding Android apps on symmetric multiprocessor systems."
991          >SMP Primer for Android</a>
992      </li>
993    </ul>
994  </li> <!-- end of Performance -->
995
996
997
998  <li class="nav-section">
999    <div class="nav-section-header">
1000      <a href="<?cs var:toroot ?>training/best-security.html">
1001      <span class="small">Best Practices for</span><br/>
1002              Security &amp; Privacy
1003      </a>
1004    </div>
1005    <ul>
1006
1007      <li>
1008        <a href="<?cs var:toroot ?>training/articles/security-tips.html"
1009           description=
1010           "How to perform various tasks and keep your app's data and your user's data secure."
1011          >Security Tips</a>
1012      </li>
1013
1014      <li class="nav-section">
1015        <div class="nav-section-header">
1016          <a href="<?cs var:toroot ?>training/enterprise/index.html"
1017             description=
1018             "How to implement device management policies for enterprise-oriented apps."
1019            >Developing for Enterprise</a>
1020        </div>
1021        <ul>
1022          <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html">
1023            Enhancing Security with Device Management Policies
1024          </a>
1025          </li>
1026        </ul>
1027      </li>
1028    </ul>
1029  </li>
1030  <!-- End security and user info -->
1031
1032
1033  <li class="nav-section">
1034    <div class="nav-section-header">
1035      <a href="<?cs var:toroot ?>training/distribute.html">
1036      <span class="small">Using Google Play to</span><br/>
1037              Distribute &amp; Monetize
1038      </a>
1039    </div>
1040    <ul>
1041      <li class="nav-section">
1042      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
1043         description="How to sell in-app products from your application using In-app Billing.">
1044            Selling In-app Products
1045          </a></div>
1046        <ul>
1047          <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
1048            <span class="en">Preparing Your App</span>
1049          </a>
1050          </li>
1051          <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
1052            <span class="en">Establishing Products for Sale</span>
1053          </a>
1054          </li>
1055          <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
1056            <span class="en">Purchasing Products</span>
1057          </a>
1058          </li>
1059          <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
1060            <span class="en">Testing Your App</span>
1061          </a>
1062          </li>
1063        </ul>
1064      </li>
1065
1066      <li class="nav-section">
1067        <div class="nav-section-header">
1068          <a href="<?cs var:toroot ?>training/multiple-apks/index.html"
1069             description=
1070             "How to publish your app on Google Play with separate APKs that target
1071             different devices, while using a single app listing."
1072            >Maintaining Multiple APKs</a>
1073        </div>
1074        <ul>
1075          <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
1076            Creating Multiple APKs for Different API Levels
1077          </a>
1078          </li>
1079          <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
1080            Creating Multiple APKs for Different Screen Sizes
1081          </a>
1082          </li>
1083          <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
1084            Creating Multiple APKs for Different GL Textures
1085          </a>
1086          </li>
1087          <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
1088            Creating Multiple APKs with 2+ Dimensions
1089          </a>
1090          </li>
1091        </ul>
1092      </li>
1093      <li class="nav-section">
1094        <div class="nav-section-header">
1095          <a href="<?cs var:toroot ?>training/monetization/index.html"
1096             description=
1097             "How to implement monetization strategies for your app without compromising
1098             the user experience."
1099            >Monetizing Your App</a>
1100        </div>
1101        <ul>
1102          <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html">
1103            Advertising without Compromising User Experience
1104          </a>
1105          </li>
1106        </ul>
1107      </li>
1108    </ul>
1109  </li>
1110  <!-- End best Publishing -->
1111
1112</ul><!-- nav -->
1113<script type="text/javascript">
1114<!--
1115    buildToggleLists();
1116    changeNavLang(getLangPref());
1117//-->
1118</script>
1119