[go: nahoru, domu]

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/supporting-devices/index.html"
41             description=
42             "How to build your app with alternative resources that provide an
43             optimized user experience on multiple device form factors using a single APK."
44            >Supporting Different Devices</a>
45        </div>
46        <ul>
47          <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html">
48            Supporting Different Languages
49          </a>
50          </li>
51          <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html">
52            Supporting Different Screens
53          </a>
54          </li>
55          <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html">
56            Supporting Different Platform Versions
57          </a>
58          </li>
59        </ul>
60      </li>
61
62      <li class="nav-section">
63        <div class="nav-section-header">
64          <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html"
65             ja-lang="アクティビティのライフサイクル 管理"
66             ko-lang="액티비티 수명 주기 관리하기"
67             pt-br-lang="Como gerenciar o ciclo de vida da atividade"
68             ru-lang="Управление жизненным циклом операций"
69             zh-cn-lang="管理活动生命周期"
70             zh-tw-lang="管理應用行為顯示生命週期"
71             description=
72             "How Android activities live and die and how to create
73             a seamless user experience by implementing lifecycle callback methods."
74            >Managing the Activity Lifecycle</a>
75        </div>
76        <ul>
77          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html"
78             ja-lang="アクティビティを開始する"
79             ko-lang="액티비티 시작하기"
80             pt-br-lang="Iniciando uma atividade"
81             ru-lang="Запуск операции"
82             zh-cn-lang="开始活动"
83             zh-tw-lang="啟動應用行為顯示">
84            Starting an Activity
85          </a>
86          </li>
87          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html">
88            Pausing and Resuming an Activity
89          </a>
90          </li>
91          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html"
92             ja-lang="アクティビティの一時停止と再開"
93             ko-lang="액티비티 일시정지 및 재개하기"
94             pt-br-lang="Pausando e reiniciando uma atividade"
95             ru-lang="Приостановка и возобновление операции"
96             zh-cn-lang="暂停和继续活动"
97             zh-tw-lang="暫停並繼續應用行為顯示">
98            Stopping and Restarting an Activity
99          </a>
100          </li>
101          <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html"
102             ja-lang="アクティビティを再作成する"
103             ko-lang="액티비티 재생성하기"
104             pt-br-lang="Recriando uma atividade"
105             ru-lang="Воссоздание операции"
106             zh-cn-lang="重新创建活动"
107             zh-tw-lang="重新建立應用行為顯示">
108            Recreating an Activity
109          </a>
110          </li>
111        </ul>
112      </li>
113
114      <li class="nav-section">
115        <div class="nav-section-header">
116          <a href="<?cs var:toroot ?>training/basics/fragments/index.html"
117             description=
118             "How to build a user interface for your app that is flexible enough
119             to present multiple UI components on large screens and a more constrained set of
120             UI components on smaller screens&mdash;essential for building a single APK for both
121             phones and tablets."
122            >Building a Dynamic UI with Fragments</a>
123        </div>
124        <ul>
125          <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html">
126            Creating a Fragment
127          </a>
128          </li>
129          <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html" zh-cn-lang="构建灵活的界面">
130            Building a Flexible UI
131          </a>
132          </li>
133          <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html">
134            Communicating with Other Fragments
135          </a>
136          </li>
137        </ul>
138      </li>
139
140      <li class="nav-section">
141        <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html"
142             ja-lang="データの保存"
143             ko-lang="데이터 저장하기"
144             pt-br-lang="Salvando dados"
145             ru-lang="Сохранение данных"
146             zh-cn-lang="保存数据"
147             zh-tw-lang="儲存資料"
148             description=
149             "How to save data on the device, whether it's temporary files, downloaded
150             app assets, user media, structured data, or something else."
151            >Saving Data</a>
152        </div>
153        <ul>
154          <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html"
155             ja-lang="キー値セットを保存する"
156             ko-lang="키-값 세트 저장하기"
157             pt-br-lang="Salvando conjuntos de valor-chave"
158             ru-lang="Сохранение наборов "\"ключ-значение\""
159             zh-cn-lang="保存键值集"
160             zh-tw-lang="儲存索引鍵值組">
161            Saving Key-Value Sets
162          </a>
163          </li>
164          <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html"
165             ja-lang="ファイルを保存する"
166             ko-lang="파일 저장하기"
167             pt-br-lang="Salvando arquivos"
168             ru-lang="Сохранение файлов"
169             zh-cn-lang="保存文件"
170             zh-tw-lang="儲存檔案">
171            Saving Files
172          </a>
173          </li>
174          <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html"
175             ja-lang="SQL データベースにデータを保存する"
176             ko-lang="SQL 데이터베이스에 데이터 저장하기"
177             pt-br-lang="Salvando dados em bancos de dados do SQL"
178             ru-lang="Сохранение данных в базах данных SQL"
179             zh-cn-lang="在 SQL 数据库中保存数据"
180             zh-tw-lang="在 SQL 資料庫中儲存資料">
181            Saving Data in SQL Databases
182          </a>
183          </li>
184        </ul>
185      </li>
186
187      <li class="nav-section">
188        <div class="nav-section-header">
189          <a href="<?cs var:toroot ?>training/basics/intents/index.html"
190             ja-lang="他のアプリとの相互操作"
191             ko-lang="액티비티 수명 주기 관리하기"
192             pt-br-lang="Interagindo com outros aplicativos"
193             ru-lang="Взаимодействие с другими приложениями"
194             zh-cn-lang="与其他应用交互"
195             zh-tw-lang="與其他應用程式互動"
196             description=
197             "How to build a user experience that leverages other apps available
198             on the device to perform advanced user tasks, such as capture a photo or view
199             an address on a map."
200            >Interacting with Other Apps</a>
201        </div>
202        <ul>
203          <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html"
204             ja-lang="別のアプリにユーザーを送る"
205             ko-lang="다른 앱으로 사용자 보내기"
206             pt-br-lang="Enviando o usuário para outro aplicativo"
207             ru-lang="Направление пользователя в другое приложение"
208             zh-cn-lang="向另一个应用发送用户"
209             zh-tw-lang="將使用者傳送至其他應用程式">
210            Sending the User to Another App
211          </a>
212          </li>
213          <li><a href="<?cs var:toroot ?>training/basics/intents/result.html"
214             ja-lang="アクティビティから結果を取得する"
215             ko-lang="액티비티로부터 결과 가져오기"
216             pt-br-lang="Obtendo resultados de uma atividade"
217             ru-lang="Получение результата операции"
218             zh-cn-lang="获取活动的结果"
219             zh-tw-lang="從應用行為顯示取得結果">
220            Getting a Result from the Activity
221          </a>
222          </li>
223          <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html"
224             ja-lang="他のアプリからのアクティビティの開始を許可する"
225             ko-lang="다른 앱이 자신의 액티비티를 시작하도록 허용하기"
226             pt-br-lang="Permitindo que outros aplicativos iniciem sua atividade"
227             ru-lang="Разрешение другим приложениям на запуск вашей операции"
228             zh-cn-lang="允许其他应用开始您的活动"
229             zh-tw-lang="允許其他應用程式啟動您的應用行為顯示">
230            Allowing Other Apps to Start Your Activity
231          </a>
232          </li>
233        </ul>
234      </li>
235      <li class="nav-section">
236        <div class="nav-section-header">
237          <a href="<?cs var:toroot ?>training/permissions/index.html"
238             description=
239             "How to declare that your app needs access to features and
240             resources outside of its 'sandbox', and how to request those
241             privileges at runtime."
242            >Working with System Permissions</a>
243        </div>
244        <ul>
245          <li><a href="<?cs var:toroot ?>training/permissions/declaring.html">
246            Declaring Permissions
247          </a>
248          </li>
249          <li><a href="<?cs var:toroot ?>training/permissions/requesting.html">
250            Requesting Permissions at Run Time
251          </a>
252          </li>
253          <li><a href="<?cs var:toroot ?>training/permissions/best-practices.html">
254            Best Practices for Runtime Permissions
255          </a>
256          </li>
257        </ul>
258      </li>
259
260    </ul>
261  </li><!-- end getting started -->
262    <li class="nav-section">
263        <div class="nav-section-header">
264            <a href="<?cs var:toroot ?>training/building-content-sharing.html">
265            <span class="small">Building Apps with</span><br/>Content Sharing
266            </a>
267        </div>
268        <ul>
269            <li class="nav-section">
270                <div class="nav-section-header">
271                    <a href="<?cs var:toroot ?>training/sharing/index.html"
272                    description=
273                    "How to take your app interaction to the next level by sharing
274                    information with other apps, receive information back, and provide a simple and
275                    scalable way to perform Share actions with user content."
276                    >Sharing Simple Data</a>
277                </div>
278                <ul>
279                    <li>
280                        <a href="<?cs var:toroot ?>training/sharing/send.html">
281                        Sending Simple Data to Other Apps
282                        </a>
283                    </li>
284                    <li>
285                        <a href="<?cs var:toroot ?>training/sharing/receive.html">
286                        Receiving Simple Data from Other Apps
287                        </a>
288                    </li>
289                    <li>
290                        <a href="<?cs var:toroot ?>training/sharing/shareaction.html">
291                        Adding an Easy Share Action
292                        </a>
293                    </li>
294                </ul>
295            </li>
296            <li class="nav-section">
297                <div class="nav-section-header">
298                    <a href="<?cs var:toroot?>training/secure-file-sharing/index.html"
299                    description=
300                    "How to provide secure access to a file associated with your app using a content
301                    URI and temporary access permissions."
302                    >Sharing Files</a>
303                </div>
304                <ul>
305                    <li>
306                        <a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html">
307                        Setting Up File Sharing
308                        </a>
309                    </li>
310                    <li>
311                        <a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html">
312                        Sharing a File
313                        </a>
314                    </li>
315                    <li>
316                        <a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html">
317                        Requesting a Shared File
318                        </a>
319                    </li>
320                    <li>
321                        <a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html">
322                        Retrieving File Information
323                        </a>
324                    </li>
325                </ul>
326            </li>
327            <li class="nav-section">
328                <div class="nav-section-header">
329                    <a href="<?cs var:toroot ?>training/beam-files/index.html"
330                    description=
331                    "How to transfer files between devices using the NFC Android Beam feature."
332                    >Sharing Files with NFC</a>
333                </div>
334                <ul>
335                    <li>
336                        <a href="<?cs var:toroot ?>training/beam-files/send-files.html"
337                        >Sending Files to Another Device</a>
338                    </li>
339                    <li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html"
340                    >Receiving Files from Another Device</a></li>
341                </ul>
342            </li>
343        </ul>
344    </li>
345
346
347
348  <li class="nav-section">
349    <div class="nav-section-header">
350      <a href="<?cs var:toroot ?>training/building-multimedia.html">
351      <span class="small">Building Apps with</span><br/>Multimedia
352      </a>
353    </div>
354    <ul>
355
356      <li class="nav-section">
357        <div class="nav-section-header">
358          <a href="<?cs var:toroot ?>training/managing-audio/index.html"
359             description=
360             "How to respond to hardware audio key presses, request audio focus
361             when playing audio, and respond appropriately to changes in audio focus."
362            >Managing Audio Playback</a>
363        </div>
364        <ul>
365          <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html">
366            Controlling Your App's Volume and Playback
367          </a>
368          </li>
369          <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html">
370            Managing Audio Focus
371          </a>
372          </li>
373          <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html">
374            Dealing with Audio Output Hardware
375          </a>
376          </li>
377        </ul>
378      </li>
379
380      <li class="nav-section">
381        <div class="nav-section-header">
382          <a href="<?cs var:toroot ?>training/camera/index.html"
383             description=
384             "How to leverage existing camera apps on the user's device to capture
385             photos or control the camera hardware directly and build your own camera app."
386            >Capturing Photos</a>
387        </div>
388        <ul>
389          <li><a href="<?cs var:toroot ?>training/camera/photobasics.html">
390            Taking Photos Simply
391          </a>
392          </li>
393          <li><a href="<?cs var:toroot ?>training/camera/videobasics.html">
394            Recording Videos Simply
395          </a>
396          </li>
397          <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html">
398            Controlling the Camera
399          </a>
400          </li>
401        </ul>
402      </li>
403
404      <li class="nav-section">
405        <div class="nav-section-header">
406          <a href="<?cs var:toroot ?>training/printing/index.html"
407             description=
408             "How to print photos, HTML documents, and custom documents from your app."
409            >Printing Content</a>
410        </div>
411        <ul>
412          <li><a href="<?cs var:toroot ?>training/printing/photos.html">
413            Photos
414          </a>
415          </li>
416          <li><a href="<?cs var:toroot ?>training/printing/html-docs.html">
417            HTML Documents
418          </a>
419          </li>
420          <li><a href="<?cs var:toroot ?>training/printing/custom-docs.html">
421            Custom Documents
422          </a>
423          </li>
424        </ul>
425      </li>
426
427    </ul>
428  </li>
429  <!-- End multimedia -->
430
431
432
433  <li class="nav-section">
434    <div class="nav-section-header">
435      <a href="<?cs var:toroot ?>training/building-graphics.html">
436      <span class="small">Building Apps with</span><br/>Graphics &amp; Animation
437      </a>
438    </div>
439    <ul>
440
441      <li class="nav-section">
442        <div class="nav-section-header">
443          <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html"
444             description=
445             "How to load and process bitmaps while keeping your user interface
446             responsive and avoid exceeding memory limits."
447            >Displaying Bitmaps Efficiently</a>
448        </div>
449        <ul>
450          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html">
451            Loading Large Bitmaps Efficiently
452          </a>
453          </li>
454          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html">
455            Processing Bitmaps Off the UI Thread
456          </a>
457          </li>
458          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html">
459            Caching Bitmaps
460          </a>
461          </li>
462          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html">
463            Managing Bitmap Memory
464          </a>
465          </li>
466          <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html">
467            Displaying Bitmaps in Your UI
468          </a></li>
469        </ul>
470      </li>
471
472      <li class="nav-section">
473        <div class="nav-section-header">
474          <a href="<?cs var:toroot?>training/graphics/opengl/index.html"
475             description=
476             "How to create OpenGL graphics within the Android app framework
477             and respond to touch input."
478            >Displaying Graphics with OpenGL ES</a>
479        </div>
480        <ul>
481          <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html">
482            Building an OpenGL ES Environment
483          </a>
484          </li>
485          <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html">
486            Defining Shapes
487          </a>
488          </li>
489          <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html">
490            Drawing Shapes
491          </a>
492          </li>
493          <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html">
494            Applying Projection and Camera Views
495          </a>
496          </li>
497          <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html">
498            Adding Motion
499          </a>
500          </li>
501          <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html">
502            Responding to Touch Events
503          </a>
504          </li>
505        </ul>
506      </li>
507
508      <li class="nav-section">
509        <div class="nav-section-header">
510          <a href="<?cs var:toroot?>training/transitions/index.html"
511             description=
512             "How to animate state changes in a view hierarchy using transitions."
513            >Animating Views Using Scenes and Transitions</a>
514        </div>
515        <ul>
516          <li><a href="<?cs var:toroot ?>training/transitions/overview.html">
517            The Transitions Framework
518          </a>
519          </li>
520          <li><a href="<?cs var:toroot ?>training/transitions/scenes.html">
521            Creating a Scene
522          </a>
523          </li>
524          <li><a href="<?cs var:toroot ?>training/transitions/transitions.html">
525            Applying a Transition
526          </a>
527          </li>
528          <li><a href="<?cs var:toroot ?>training/transitions/custom-transitions.html">
529            Creating Custom Transitions
530          </a>
531          </li>
532
533        </ul>
534      </li>
535
536      <li class="nav-section">
537        <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html"
538             description=
539             "How to add transitional animations to your user interface.">
540            Adding Animations
541          </a></div>
542        <ul>
543          <li><a href="<?cs var:toroot ?>training/animation/crossfade.html">
544            Crossfading Two Views
545          </a>
546          </li>
547          <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html">
548            Using ViewPager for Screen Slide
549          </a>
550          </li>
551          <li><a href="<?cs var:toroot ?>training/animation/cardflip.html">
552            Displaying Card Flip Animations
553          </a>
554          </li>
555          <li><a href="<?cs var:toroot ?>training/animation/zoom.html">
556            Zooming a View
557          </a>
558          </li>
559          <li><a href="<?cs var:toroot ?>training/animation/layout.html">
560            Animating Layout Changes
561          </a>
562          </li>
563        </ul>
564      </li>
565    </ul>
566  </li>
567  <!-- End graphics and animation -->
568
569
570  <li class="nav-section">
571    <div class="nav-section-header">
572      <a href="<?cs var:toroot ?>training/building-connectivity.html">
573      <span class="small">Building Apps with</span><br/>
574              Connectivity &amp; the Cloud
575      </a>
576    </div>
577    <ul>
578
579      <li class="nav-section">
580        <div class="nav-section-header">
581          <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html"
582             description=
583             "How to find and connect to local devices using Network Service
584             Discovery and how to create peer-to-peer connections with Wi-Fi."
585             >Connecting Devices Wirelessly</a>
586        </div>
587        <ul>
588          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html">
589            Using Network Service Discovery
590          </a>
591          </li>
592          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html">
593            Creating P2P Connections with Wi-Fi
594          </a>
595          </li>
596          <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html">
597            Using Wi-Fi P2P for Service Discovery
598          </a>
599          </li>
600        </ul>
601      </li>
602       <li class="nav-section">
603        <div class="nav-section-header">
604          <a href="<?cs var:toroot ?>training/basics/network-ops/index.html"
605             description=
606             "How to create a network connection, monitor the connection for changes
607             in connectivity, and perform transactions with XML data."
608            >Performing Network Operations</a>
609        </div>
610        <ul>
611          <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html">
612            Connecting to the Network
613          </a>
614          </li>
615          <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html">
616            Managing Network Usage
617          </a>
618          </li>
619          <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html">
620            Parsing XML Data
621          </a>
622          </li>
623        </ul>
624      </li>
625      <li class="nav-section">
626        <div class="nav-section-header">
627          <a href="<?cs var:toroot ?>training/efficient-downloads/index.html"
628             description=
629             "How to minimize your app's impact on the battery when performing downloads
630             and other network transactions."
631            >Transferring Data Without Draining the Battery</a>
632        </div>
633        <ul>
634          <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html">
635            Optimizing Downloads for Efficient Network Access
636          </a>
637          </li>
638          <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html">
639            Minimizing the Effect of Regular Updates
640          </a>
641          </li>
642          <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html">
643            Redundant Downloads are Redundant
644          </a>
645          </li>
646          <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html">
647            Modifying Patterns Based on the Connectivity Type
648          </a>
649          </li>
650        </ul>
651      </li>
652
653      <li class="nav-section">
654        <div class="nav-section-header">
655          <a href="<?cs var:toroot ?>training/backup/index.html"
656             description=
657             "How to sync and back up app and user data to remote web services in the
658              cloud and how to restore the data back to multiple devices."
659            >Syncing to the Cloud</a>
660        </div>
661        <ul>
662          <li><a href="<?cs var:toroot ?>training/backup/autosyncapi.html">
663            Configuring Auto Backup
664          </a>
665          </li>
666          <li><a href="<?cs var:toroot ?>training/backup/backupapi.html">
667            Using the Backup API
668          </a>
669          </li>
670        </ul>
671        <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html"
672           description=
673           "How to design a robust conflict resolution strategy for apps that save data to the cloud."
674           >Resolving Cloud Save Conflicts
675          </a>
676        </li>
677      </li>
678      <li class="nav-section">
679        <div class="nav-section-header">
680          <a href="<?cs var:toroot ?>training/sync-adapters/index.html"
681             description="How to transfer data between the cloud and the device using the Android
682             sync adapter framework"
683             >Transferring Data Using Sync Adapters</a>
684        </div>
685        <ul>
686            <li>
687                <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html">
688                Creating a Stub Authenticator
689                </a>
690            </li>
691            <li>
692                <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html">
693                Creating a Stub Content Provider
694                </a>
695            </li>
696            <li>
697                <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html">
698                Creating a Sync Adapter
699                </a>
700            </li>
701            <li>
702                <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html">
703                Running a Sync Adapter
704                </a>
705            </li>
706        </ul>
707      </li>
708      <li class="nav-section">
709        <div class="nav-section-header">
710          <a href="<?cs var:toroot ?>training/volley/index.html"
711             description="How to perform fast, scalable UI operations over the network using Volley"
712             >Transmitting Network Data Using Volley</a>
713        </div>
714        <ul>
715            <li>
716                <a href="<?cs var:toroot ?>training/volley/simple.html">
717                Sending a Simple Request
718                </a>
719            </li>
720            <li>
721                <a href="<?cs var:toroot ?>training/volley/requestqueue.html">
722                Setting Up a RequestQueue
723                </a>
724            </li>
725            <li>
726                <a href="<?cs var:toroot ?>training/volley/request.html">
727                Making a Standard Request
728                </a>
729            </li>
730            <li>
731                <a href="<?cs var:toroot ?>training/volley/request-custom.html">
732                Implementing a Custom Request
733                </a>
734            </li>
735        </ul>
736      </li>
737    </ul>
738  </li>
739  <!-- End connectivity and cloud -->
740
741
742  <li class="nav-section">
743    <div class="nav-section-header">
744      <a href="<?cs var:toroot ?>training/building-location.html">
745      <span class="small">Building Apps with</span><br/>
746              Location &amp; Maps
747      </a>
748    </div>
749    <ul>
750      <li class="nav-section">
751        <div class="nav-section-header">
752          <a href="<?cs var:toroot ?>training/location/index.html"
753             description="How to add location-aware features to your app by getting the user's current location.">
754             Making Your App Location-Aware
755          </a>
756        </div>
757        <ul>
758          <li>
759            <a href="<?cs var:toroot ?>training/location/retrieve-current.html">
760            Getting the Last Known Location
761            </a>
762          </li>
763          <li>
764            <a href="<?cs var:toroot ?>training/location/change-location-settings.html">
765            Changing Location Settings
766            </a>
767          </li>
768          <li>
769            <a href="<?cs var:toroot ?>training/location/receive-location-updates.html">
770            Receiving Location Updates
771            </a>
772          </li>
773          <li>
774            <a href="<?cs var:toroot ?>training/location/display-address.html">
775            Displaying a Location Address
776          </a>
777          </li>
778          <li><a href="<?cs var:toroot ?>training/location/geofencing.html">
779            Creating and Monitoring Geofences
780          </a>
781          </li>
782        </ul>
783      </li>
784      <li class="nav-section">
785        <a href="<?cs var:toroot ?>training/maps/index.html"
786           description="How to add maps and mapping information to your app.">
787           Adding Maps
788        </a>
789      </li>
790    </ul>
791  </li>
792  <!-- End location and maps -->
793
794
795  <li class="nav-section">
796    <div class="nav-section-header">
797      <a href="<?cs var:toroot ?>training/building-userinfo.html">
798      <span class="small">Building Apps with</span><br/>
799              User Info &amp; Sign-In
800      </a>
801    </div>
802    <ul>
803      <li class="nav-section">
804        <div class="nav-section-header">
805          <a href="<?cs var:toroot ?>training/contacts-provider/index.html"
806             description=
807             "How to use Android's central address book, the Contacts Provider, to
808             display contacts and their details and modify contact information.">
809          Accessing Contacts Data</a>
810        </div>
811        <ul>
812          <li>
813                <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html">
814                Retrieving a List of Contacts
815                </a>
816          </li>
817          <li>
818                <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html">
819                Retrieving Details for a Contact
820                </a>
821          </li>
822          <li>
823                <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html">
824                Modifying Contacts Using Intents
825                </a>
826          </li>
827          <li>
828                <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html">
829                Displaying the Quick Contact Badge
830                </a>
831          </li>
832        </ul>
833      </li>
834      <li class="nav-section">
835        <a href="<?cs var:toroot ?>training/sign-in/index.html"
836           description="How to add user sign-in functionality to your app.">
837           Adding Sign-In
838        </a>
839      </li>
840    </ul>
841  </li>
842  <!-- End user info and sign-in -->
843
844
845  <li class="nav-section">
846    <div class="nav-section-header">
847      <a href="<?cs var:toroot ?>training/building-wearables.html">
848      <span class="small">Building Apps for</span><br/>
849              Wearables
850      </a>
851    </div>
852    <ul>
853      <li class="nav-section">
854        <div class="nav-section-header">
855          <a href="<?cs var:toroot ?>training/wearables/notifications/index.html"
856             description="How to build handheld notifications that are synced to
857             and look great on wearables."
858            >Adding Wearable Features to Notifications</a>
859        </div>
860        <ul>
861          <li>
862            <a href="<?cs var:toroot ?>training/wearables/notifications/creating.html">Creating a Notification</a>
863          </li>
864          <li>
865            <a href="<?cs var:toroot ?>training/wearables/notifications/voice-input.html">Receiving Voice Input in a Notification</a>
866          </li>
867          <li>
868            <a href="<?cs var:toroot ?>training/wearables/notifications/pages.html">Adding Pages to a Notification</a>
869          </li>
870          <li>
871            <a href="<?cs var:toroot ?>training/wearables/notifications/stacks.html">Stacking Notifications</a>
872          </li>
873        </ul>
874      </li>
875
876      <li class="nav-section">
877        <div class="nav-section-header">
878          <a href="<?cs var:toroot ?>training/wearables/apps/index.html"
879             description="How to build apps that run directly on wearables."
880            >Creating Wearable Apps</a>
881        </div>
882        <ul>
883          <li>
884            <a href="<?cs var:toroot ?>training/wearables/apps/creating.html">Creating and Running a Wearable App</a>
885          </li>
886          <li>
887            <a href="<?cs var:toroot ?>training/wearables/apps/layouts.html">Creating Custom Layouts</a>
888          </li>
889          <li>
890            <a href="<?cs var:toroot ?>training/wearables/apps/always-on.html">Keeping Your App Visible</a>
891          </li>
892          <li>
893            <a href="<?cs var:toroot ?>training/wearables/apps/voice.html">Adding Voice Capabilities</a>
894          </li>
895          <li>
896            <a href="<?cs var:toroot ?>training/wearables/apps/packaging.html">Packaging Wearable Apps</a>
897          </li>
898          <li>
899            <a href="<?cs var:toroot ?>training/wearables/apps/bt-debugging.html">Debugging over Bluetooth</a>
900          </li>
901        </ul>
902      </li>
903
904      <li class="nav-section">
905        <div class="nav-section-header">
906          <a href="<?cs var:toroot ?>training/wearables/ui/index.html"
907             description="How to create custom user interfaces for wearable apps."
908            >Creating Custom UIs</a>
909        </div>
910        <ul>
911          <li>
912            <a href="<?cs var:toroot ?>training/wearables/ui/layouts.html">Defining Layouts</a>
913          </li>
914          <li>
915            <a href="<?cs var:toroot ?>training/wearables/ui/cards.html">Creating Cards</a>
916          </li>
917          <li>
918            <a href="<?cs var:toroot ?>training/wearables/ui/lists.html">Creating Lists</a>
919          </li>
920          <li>
921            <a href="<?cs var:toroot ?>training/wearables/ui/2d-picker.html">Creating a 2D Picker</a>
922          </li>
923          <li>
924            <a href="<?cs var:toroot ?>training/wearables/ui/confirm.html">Showing Confirmations</a>
925          </li>
926          <li>
927            <a href="<?cs var:toroot ?>training/wearables/ui/exit.html">Exiting Full-Screen Activities</a>
928          </li>
929        </ul>
930      </li>
931
932      <li class="nav-section">
933        <div class="nav-section-header">
934          <a href="<?cs var:toroot ?>training/wearables/data-layer/index.html"
935             description="How to sync data between handhelds and wearables."
936            >Sending and Syncing Data</a>
937        </div>
938        <ul>
939          <li>
940            <a href="<?cs var:toroot ?>training/wearables/data-layer/accessing.html">Accessing the Wearable Data Layer</a>
941          </li>
942          <li>
943            <a href="<?cs var:toroot ?>training/wearables/data-layer/data-items.html">Syncing Data Items</a>
944          </li>
945          <li>
946            <a href="<?cs var:toroot ?>training/wearables/data-layer/assets.html">Transferring Assets</a>
947          </li>
948          <li>
949            <a href="<?cs var:toroot ?>training/wearables/data-layer/messages.html">Sending and Receiving Messages</a>
950          </li>
951          <li>
952            <a href="<?cs var:toroot ?>training/wearables/data-layer/events.html">Handling Data Layer Events</a>
953          </li>
954        </ul>
955      </li>
956
957      <li class="nav-section">
958        <div class="nav-section-header">
959          <a href="<?cs var:toroot ?>training/wearables/watch-faces/index.html"
960             description="How to create watch faces for wearables."
961            >Creating Watch Faces</a>
962        </div>
963        <ul>
964          <li>
965            <a href="<?cs var:toroot ?>training/wearables/watch-faces/designing.html">Designing Watch Faces</a>
966          </li>
967          <li>
968            <a href="<?cs var:toroot ?>training/wearables/watch-faces/service.html">Building a Watch Face Service</a>
969          </li>
970          <li>
971            <a href="<?cs var:toroot ?>training/wearables/watch-faces/drawing.html">Drawing Watch Faces</a>
972          </li>
973          <li>
974            <a href="<?cs var:toroot ?>training/wearables/watch-faces/information.html">Showing Information in Watch Faces</a>
975          </li>
976          <li>
977            <a href="<?cs var:toroot ?>training/wearables/watch-faces/interacting.html">Creating Interactive Watch Faces</a>
978          </li>
979          <li>
980            <a href="<?cs var:toroot ?>training/wearables/watch-faces/configuration.html">Providing Configuration Activities</a>
981          </li>
982          <li>
983            <a href="<?cs var:toroot ?>training/wearables/watch-faces/issues.html">Addressing Common Issues</a>
984          </li>
985          <li>
986            <a href="<?cs var:toroot ?>training/wearables/watch-faces/performance.html">Optimizing Performance and Battery Life</a>
987          </li>
988        </ul>
989      </li>
990
991      <li>
992        <a href="<?cs var:toroot ?>training/articles/wear-location-detection.html"
993           description=
994           "How to detect location data on Android Wear devices."
995          >Detecting Location</a>
996      </li>
997
998      <li>
999        <a href="<?cs var:toroot ?>training/articles/wear-permissions.html"
1000           description=
1001           "How to request permissions on Android Wear devices."
1002          >Requesting Permissions</a>
1003      </li>
1004
1005      <li>
1006        <a href="<?cs var:toroot ?>training/wearables/wearable-sounds.html"
1007           description=
1008           "How to use the speaker on Android Wear devices."
1009          >Using the Speaker</a>
1010      </li>
1011
1012    </ul>
1013  </li>
1014  <!-- End Building for wearables -->
1015
1016
1017  <!-- Start: Building for TV -->
1018  <li class="nav-section">
1019    <div class="nav-section-header">
1020      <a href="<?cs var:toroot ?>training/tv/index.html">
1021      <span class="small">Building Apps for</span><br/>
1022              TV
1023      </a>
1024    </div>
1025    <ul>
1026
1027      <li class="nav-section">
1028        <div class="nav-section-header">
1029
1030          <a href="<?cs var:toroot ?>training/tv/start/index.html"
1031             ja-lang="TV アプリのビルド"
1032             description="How to start building TV apps or extend your existing app to run on TV
1033             devices.">
1034             Building TV Apps</a>
1035        </div>
1036        <ul>
1037          <li>
1038            <a href="<?cs var:toroot ?>training/tv/start/start.html"
1039               ja-lang="TV アプリのビルドを開始する">
1040              Getting Started with TV Apps</a>
1041          </li>
1042          <li>
1043            <a href="<?cs var:toroot ?>training/tv/start/hardware.html"
1044               ja-lang="TV ハードウェアを処理する">
1045              Handling TV Hardware</a>
1046          </li>
1047          <li>
1048            <a href="<?cs var:toroot ?>training/tv/start/layouts.html"
1049               ja-lang="TV 向けレイアウトをビルドする">
1050              Building TV Layouts</a>
1051          </li>
1052          <li>
1053            <a href="<?cs var:toroot ?>training/tv/start/navigation.html"
1054               ja-lang="TV 用のナビゲーションを作成する">
1055              Creating TV Navigation</a>
1056          </li>
1057        </ul>
1058      </li>
1059
1060      <li class="nav-section">
1061        <div class="nav-section-header">
1062          <a href="<?cs var:toroot ?>training/tv/playback/index.html"
1063             ja-lang="TV 再生アプリのビルド"
1064             description="How to build apps that provide media catalogs and play content.">
1065             Building TV Playback Apps</a>
1066        </div>
1067        <ul>
1068          <li>
1069            <a href="<?cs var:toroot ?>training/tv/playback/browse.html"
1070               ja-lang="カタログ ブラウザを作成する">
1071              Creating a Catalog Browser</a>
1072          </li>
1073          <li>
1074            <a href="<?cs var:toroot ?>training/tv/playback/card.html">
1075              Providing a Card View</a>
1076          </li>
1077          <li>
1078            <a href="<?cs var:toroot ?>training/tv/playback/details.html"
1079               ja-lang="詳細ビューをビルドする">
1080              Building a Details View</a>
1081          </li>
1082          <li>
1083            <a href="<?cs var:toroot ?>training/tv/playback/now-playing.html"
1084               ja-lang="再生中カードを表示する">
1085              Displaying a Now Playing Card</a>
1086          </li>
1087          <li>
1088            <a href="<?cs var:toroot ?>training/tv/playback/guided-step.html">
1089              Adding a Guided Step</a>
1090          </li>
1091          <li>
1092            <a href="<?cs var:toroot ?>training/tv/playback/options.html">
1093              Enabling Background Playback</a>
1094          </li>
1095        </ul>
1096      </li>
1097
1098      <li class="nav-section">
1099        <div class="nav-section-header">
1100          <a href="<?cs var:toroot ?>training/tv/discovery/index.html"
1101             description="How to help users discover content from your app.">
1102             Helping Users Find Content on TV</a>
1103        </div>
1104        <ul>
1105          <li>
1106            <a href="<?cs var:toroot ?>training/tv/discovery/recommendations.html">
1107              Recommending TV Content</a>
1108          </li>
1109          <li>
1110            <a href="<?cs var:toroot ?>training/tv/discovery/searchable.html">
1111              Making TV Apps Searchable</a>
1112          <li>
1113            <a href="<?cs var:toroot ?>training/tv/discovery/in-app-search.html">
1114              Searching within TV Apps</a>
1115          </li>
1116        </ul>
1117      </li>
1118
1119      <li>
1120        <a href="<?cs var:toroot ?>training/tv/games/index.html"
1121           description="How to build games for TV.">
1122           Building TV Games</a>
1123      </li>
1124
1125      <li class="nav-section">
1126        <div class="nav-section-header">
1127          <a href="<?cs var:toroot ?>training/tv/tif/index.html"
1128           description="How to build channels for TV.">
1129           Building TV Channels</a>
1130        </div>
1131        <ul>
1132          <li>
1133            <a href="<?cs var:toroot ?>training/tv/tif/tvinput.html">
1134              Developing a TV Input Service</a>
1135          <li>
1136            <a href="<?cs var:toroot ?>training/tv/tif/channel.html">
1137              Working with Channel Data</a>
1138          </li>
1139          <li>
1140            <a href="<?cs var:toroot ?>training/tv/tif/ui.html">
1141              Managing User Interaction</a>
1142          </li>
1143        </ul>
1144      </li>
1145
1146      <li>
1147        <a href="<?cs var:toroot ?>training/tv/publishing/checklist.html"
1148           description="An itemized list of requirements for TV apps.">
1149           TV Apps Checklist</a>
1150      </li>
1151    </ul>
1152  </li>
1153  <!-- End: Building for TV -->
1154
1155
1156  <!-- Start: Building for Auto -->
1157  <li class="nav-section">
1158    <div class="nav-section-header">
1159      <a href="<?cs var:toroot ?>training/auto/index.html">
1160      <span class="small">Building Apps for</span><br/>
1161              Auto
1162      </a>
1163    </div>
1164    <ul>
1165      <li>
1166        <a href="<?cs var:toroot ?>training/auto/start/index.html"
1167             description="How to start building or extending apps that work
1168             with Auto devices.">
1169             Getting Started with Auto</a>
1170      </li>
1171      <li>
1172        <a href="<?cs var:toroot ?>training/auto/audio/index.html"
1173             description="How to extend audio apps to play content on Auto devices.">
1174             Playing Audio for Auto</a>
1175      </li>
1176      <li>
1177        <a href="<?cs var:toroot ?>training/auto/messaging/index.html"
1178             description="How to extend text messaging apps to work with Auto devices.">
1179             Messaging for Auto</a>
1180      </li>
1181      <li>
1182       <a href="<?cs var:toroot ?>training/auto/testing/index.html" description=
1183       "How to run and test Auto apps.">
1184             Testing Auto Apps</a>
1185      </li>
1186    </ul>
1187  </li>
1188  <!-- End: Building for Auto -->
1189
1190  <li class="nav-section">
1191    <div class="nav-section-header">
1192      <a href="<?cs var:toroot ?>training/best-ux.html">
1193      <span class="small">Best Practices for</span><br/>
1194              Interaction &amp; Engagement
1195      </a>
1196    </div>
1197    <ul>
1198
1199      <li class="nav-section">
1200        <div class="nav-section-header">
1201          <a href="<?cs var:toroot ?>training/design-navigation/index.html"
1202             description=
1203             "How to plan your app's screen hierarchy and forms of navigation so users can
1204             effectively and intuitively traverse your app content using various navigation
1205             patterns."
1206            >Designing Effective Navigation</a>
1207        </div>
1208        <ul>
1209          <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html">
1210            Planning Screens and Their Relationships
1211          </a>
1212          </li>
1213          <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html">
1214            Planning for Multiple Touchscreen Sizes
1215          </a>
1216          </li>
1217          <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html">
1218            Providing Descendant and Lateral Navigation
1219          </a>
1220          </li>
1221          <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html">
1222            Providing Ancestral and Temporal Navigation
1223          </a>
1224          </li>
1225          <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html">
1226            Putting it All Together: Wireframing the Example App
1227          </a>
1228          </li>
1229        </ul>
1230      </li>
1231
1232      <li class="nav-section">
1233        <div class="nav-section-header">
1234          <a href="<?cs var:toroot ?>training/implementing-navigation/index.html"
1235             description=
1236             "How to implement various navigation patterns such as swipe views,
1237             a navigation drawer, and up navigation."
1238            >Implementing Effective Navigation</a>
1239        </div>
1240        <ul>
1241          <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html">
1242            Creating Swipe Views with Tabs
1243          </a>
1244          </li>
1245          <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html">
1246            Creating a Navigation Drawer
1247          </a>
1248          </li>
1249          <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html">
1250            Providing Up Navigation
1251          </a>
1252          </li>
1253          <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html">
1254            Providing Proper Back Navigation
1255          </a>
1256          </li>
1257          <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html">
1258            Implementing Descendant Navigation
1259          </a>
1260          </li>
1261        </ul>
1262      </li>
1263
1264      <li class="nav-section">
1265          <div class="nav-section-header">
1266              <a href="<?cs var:toroot ?>training/notify-user/index.html"
1267                 description=
1268                 "How to display messages called notifications outside of
1269                 your application's UI."
1270               >Notifying the User</a>
1271          </div>
1272          <ul>
1273              <li>
1274                  <a href="<?cs var:toroot ?>training/notify-user/build-notification.html">
1275                  Building a Notification
1276                  </a>
1277              </li>
1278              <li>
1279                  <a href="<?cs var:toroot ?>training/notify-user/navigation.html">
1280                  Preserving Navigation when Starting an Activity
1281                  </a>
1282              </li>
1283              <li>
1284                  <a href="<?cs var:toroot ?>training/notify-user/managing.html">
1285                  Updating Notifications
1286                  </a>
1287              </li>
1288              <li>
1289                  <a href="<?cs var:toroot ?>training/notify-user/expanded.html">
1290                  Using Big View Styles
1291                  </a>
1292              </li>
1293              <li>
1294                  <a href="<?cs var:toroot ?>training/notify-user/display-progress.html">
1295                  Displaying Progress in a Notification
1296                  </a>
1297              </li>
1298          </ul>
1299      </li>
1300
1301
1302      <li class="nav-section">
1303        <div class="nav-section-header">
1304            <a href="<?cs var:toroot ?>training/swipe/index.html"
1305            description=
1306            "How to modify your app's layout to support manual content updates triggered by the
1307             swipe-to-refresh gesture."
1308            >Supporting Swipe-to-Refresh</a>
1309        </div>
1310        <ul>
1311            <li>
1312                <a href="<?cs var:toroot ?>training/swipe/add-swipe-interface.html"
1313                >Adding Swipe-to-Refresh To Your App</a></li>
1314            <li>
1315                <a href="<?cs var:toroot ?>training/swipe/respond-refresh-request.html"
1316                >Responding to a Refresh Gesture</a>
1317            </li>
1318        </ul>
1319      </li>
1320
1321
1322      <li class="nav-section">
1323        <div class="nav-section-header">
1324          <a href="<?cs var:toroot ?>training/search/index.html"
1325             description=
1326             "How to properly add a search interface to your app and create a searchable database."
1327            >Adding Search Functionality</a>
1328        </div>
1329        <ul>
1330          <li><a href="<?cs var:toroot ?>training/search/setup.html">
1331            Setting up the Search Interface
1332          </a>
1333          </li>
1334          <li><a href="<?cs var:toroot ?>training/search/search.html">
1335            Storing and Searching for Data
1336          </a>
1337          </li>
1338          <li><a href="<?cs var:toroot ?>training/search/backward-compat.html">
1339            Remaining Backward Compatible
1340          </a>
1341          </li>
1342        </ul>
1343      </li>
1344
1345     <li class="nav-section">
1346        <div class="nav-section-header">
1347          <a href="<?cs var:toroot ?>training/app-indexing/index.html"
1348             description=
1349             "How to enable deep linking and indexing of your application
1350content so that users can open this content directly from their mobile search
1351results."
1352            >Making Your App Content Searchable by Google</a>
1353        </div>
1354        <ul>
1355          <li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html">
1356            Enabling Deep Links for App Content
1357          </a>
1358          </li>
1359          <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html">
1360            Specifying App Content for Indexing
1361          </a>
1362          </li>
1363        </ul>
1364  </li>
1365
1366      <li>
1367        <a href="<?cs var:toroot ?>training/articles/assistant.html"
1368           description=
1369           "Support contextually relevant actions through the Assist API."
1370          >Optimizing Content for the Assistant</a>
1371      </li>
1372       <li class="nav-section">
1373        <div class="nav-section">
1374          <a href="<?cs var:toroot ?>training/app-links/index.html"
1375             description=
1376             "How to enable the system to handle web requests by taking the user directly
1377             to your app instead of your website."
1378            >Handling App Links</a>
1379        </div>
1380      </li>
1381  <!-- End Interaction and Engagement -->
1382
1383</ul>
1384
1385  <li class="nav-section">
1386    <div class="nav-section-header">
1387      <a href="<?cs var:toroot ?>training/best-ui.html">
1388      <span class="small">Best Practices for</span><br/>
1389              User Interface
1390      </a>
1391    </div>
1392    <ul>
1393
1394
1395      <li class="nav-section">
1396        <div class="nav-section-header">
1397          <a href="<?cs var:toroot ?>training/multiscreen/index.html"
1398             zh-cn-lang="针对多种屏幕进行设计"
1399             ja-lang="複数画面のデザイン"
1400             es-lang="mo diseñar aplicaciones para varias pantallas"
1401             description=
1402             "How to build a user interface that's flexible enough to
1403             fit perfectly on any screen and how to create different interaction
1404             patterns that are optimized for different screen sizes."
1405            >Designing for Multiple Screens</a>
1406        </div>
1407        <ul>
1408          <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html"
1409            zh-cn-lang="支持各种屏幕尺寸"
1410            ko-lang="다양한 화면 크기 지원"
1411            ja-lang="さまざまな画面サイズのサポート"
1412            es-lang="Cómo admitir varios tamaños de pantalla"
1413            >Supporting Different Screen Sizes</a>
1414          </li>
1415          <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html"
1416            zh-cn-lang="支持各种屏幕密度"
1417            ja-lang="さまざまな画面密度のサポート"
1418            es-lang="Cómo admitir varias densidades de pantalla"
1419            >Supporting Different Screen Densities</a>
1420          </li>
1421          <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html"
1422            zh-cn-lang="实施自适应用户界面流程"
1423            ja-lang="順応性のある UI フローの実装"
1424            es-lang="Cómo implementar interfaces de usuario adaptables"
1425            >Implementing Adaptive UI Flows</a>
1426          </li>
1427        </ul>
1428      </li>
1429
1430      <li class="nav-section">
1431        <div class="nav-section-header">
1432          <a href="<?cs var:toroot ?>training/appbar/index.html"
1433             description=
1434             "How to use the support library's toolbar widget to implement an
1435             app bar that displays properly on a wide range of devices."
1436            >Adding the App Bar</a>
1437        </div>
1438        <ul>
1439          <li><a href="<?cs var:toroot ?>training/appbar/setting-up.html"
1440            >Setting Up the App Bar</a>
1441          </li>
1442          <li><a href="<?cs var:toroot ?>training/appbar/actions.html"
1443            >Adding and Handling Actions</a>
1444          </li>
1445          <li><a href="<?cs var:toroot ?>training/appbar/up-action.html"
1446            >Adding an Up Action</a>
1447          </li>
1448          <li><a href="<?cs var:toroot ?>training/appbar/action-views.html"
1449            >Action Views and Action Providers</a>
1450          </li>
1451        </ul>
1452      </li>
1453
1454            <li class="nav-section">
1455        <div class="nav-section-header">
1456          <a href="<?cs var:toroot ?>training/snackbar/index.html"
1457             description=
1458             "How to use the support library's Snackbar widget to display a
1459             brief pop-up message."
1460            >Showing Pop-Up Messages</a>
1461        </div>
1462        <ul>
1463          <li><a href="<?cs var:toroot ?>training/snackbar/showing.html"
1464            >Building and Displaying a Pop-Up Message</a>
1465          </li>
1466          <li><a href="<?cs var:toroot ?>training/snackbar/action.html"
1467            >Adding an Action to a Message</a>
1468          </li>
1469        </ul>
1470      </li>
1471
1472      <li class="nav-section">
1473        <div class="nav-section-header">
1474          <a href="<?cs var:toroot ?>training/custom-views/index.html"
1475             description=
1476             "How to build custom UI widgets that are interactive and smooth."
1477            >Creating Custom Views</a>
1478        </div>
1479        <ul>
1480          <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html">
1481            Creating a Custom View Class
1482          </a>
1483          </li>
1484          <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html">
1485            Implementing Custom Drawing
1486          </a>
1487          </li>
1488          <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html">
1489            Making the View Interactive
1490          </a>
1491          </li>
1492          <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html">
1493            Optimizing the View
1494          </a>
1495          </li>
1496        </ul>
1497      </li>
1498
1499      <li class="nav-section">
1500        <div class="nav-section-header">
1501          <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html"
1502             description=
1503             "How to use UI components and other APIs from the more recent versions of Android
1504             while remaining compatible with older versions of the platform."
1505            >Creating Backward-Compatible UIs</a>
1506        </div>
1507        <ul>
1508          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html">
1509            Abstracting the New APIs
1510          </a>
1511          </li>
1512          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html">
1513            Proxying to the New APIs
1514          </a>
1515          </li>
1516          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html">
1517            Creating an Implementation with Older APIs
1518          </a>
1519          </li>
1520          <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html">
1521            Using the Version-Aware Component
1522          </a>
1523          </li>
1524        </ul>
1525      </li>
1526
1527      <li class="nav-section">
1528        <div class="nav-section-header">
1529          <a href="<?cs var:toroot ?>training/accessibility/index.html"
1530             description=
1531             "How to make your app accessible to users with vision
1532             impairment or other physical disabilities."
1533            >Implementing Accessibility</a>
1534        </div>
1535        <ul>
1536          <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html">
1537            Developing Accessible Applications
1538          </a>
1539          </li>
1540          <li><a href="<?cs var:toroot ?>training/accessibility/service.html">
1541            Developing Accessibility Services
1542          </a>
1543          </li>
1544          <li><a href="<?cs var:toroot ?>training/accessibility/testing.html">
1545            Accessibility Testing Checklist
1546          </a>
1547          </li>
1548        </ul>
1549      </li>
1550
1551      <li class="nav-section">
1552        <div class="nav-section-header">
1553          <a href="<?cs var:toroot ?>training/system-ui/index.html"
1554             description=
1555             "How to hide and show status and navigation bars across different versions of Android,
1556              while managing the display of other screen components."
1557            >Managing the System UI</a>
1558        </div>
1559        <ul>
1560          <li><a href="<?cs var:toroot ?>training/system-ui/dim.html">
1561            Dimming the System Bars
1562          </a>
1563          </li>
1564          <li><a href="<?cs var:toroot ?>training/system-ui/status.html">
1565            Hiding the Status Bar
1566          </a>
1567          </li>
1568          <li><a href="<?cs var:toroot ?>training/system-ui/navigation.html">
1569            Hiding the Navigation Bar
1570          </a>
1571          </li>
1572          <li><a href="<?cs var:toroot ?>training/system-ui/immersive.html">
1573            Using Immersive Full-Screen Mode
1574          </a>
1575          </li>
1576          <li><a href="<?cs var:toroot ?>training/system-ui/visibility.html">
1577            Responding to UI Visibility Changes
1578          </a>
1579          </li>
1580        </ul>
1581      </li>
1582
1583      <li class="nav-section">
1584        <div class="nav-section-header">
1585          <a href="<?cs var:toroot ?>training/material/index.html"
1586             description=
1587             "How to implement material design on Android."
1588            zh-cn-lang="面向开发者的材料设计"
1589            zh-tw-lang="開發人員材料設計"
1590            ja-lang="マテリアル デザインでのアプリ作成"
1591            es-lang="Crear aplicaciones con Material Design"
1592            pt-br-lang="Material Design para desenvolvedores"
1593            ko-lang="개발자를 위한 머티리얼 디자인"
1594            ru-lang="Создание приложений с помощью Material Design"
1595            in-lang="Desain Bahan untuk Pengembang"
1596            vi-lang="Material Design cho Nhà phát triển"
1597            >Creating Apps with Material Design</a>
1598        </div>
1599        <ul>
1600          <li><a href="<?cs var:toroot ?>training/material/get-started.html"
1601            zh-cn-lang="入门指南"
1602            zh-tw-lang="開始使用"
1603            ja-lang="スタート ガイド"
1604            es-lang="Comencemos"
1605            pt-br-lang="Como iniciar"
1606            ko-lang="시작하기"
1607            ru-lang="Начало работы"
1608            in-lang="Memulai"
1609            vi-lang="Bắt đầu"
1610            >
1611            Getting Started
1612          </a>
1613          </li>
1614          <li><a href="<?cs var:toroot ?>training/material/theme.html"
1615            zh-cn-lang="使用材料主题"
1616            zh-tw-lang="使用材料設計風格"
1617            ja-lang="マテリアル テーマの使用"
1618            es-lang="Usar el tema Material"
1619            pt-br-lang="Como usar o tema do Material"
1620            ko-lang="머티어리얼 테마 사용"
1621            ru-lang="Использование темы Material Design"
1622            in-lang="Menggunakan Tema Bahan"
1623            vi-lang="Sử dụng Chủ đề Material"
1624            >
1625            Using the Material Theme
1626          </a>
1627          </li>
1628          <li><a href="<?cs var:toroot ?>training/material/lists-cards.html"
1629            zh-cn-lang="创建列表与卡片"
1630            zh-tw-lang="建立清單和卡片"
1631            ja-lang="リストとカードの作成"
1632            es-lang="Crear listas y tarjetas"
1633            pt-br-lang="Como criar listas e cartões"
1634            ko-lang="목록 및 카드 생성"
1635            ru-lang="Создание списков и подсказок"
1636            in-lang="Membuat Daftar dan Kartu"
1637            vi-lang="Tạo Danh sách và Thẻ"
1638            >
1639            Creating Lists and Cards
1640          </a>
1641          </li>
1642          <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html"
1643            zh-cn-lang="定义阴影与裁剪视图"
1644            zh-tw-lang="定義陰影和裁剪檢視"
1645            ja-lang="シャドウとクリッピング ビューの定義"
1646            es-lang="Definir vistas de recorte y sombras"
1647            pt-br-lang="Como definir sombras e recortar visualizações"
1648            ko-lang="그림자 정의 및 뷰 클리핑"
1649            ru-lang="Определение теней и обрезка представлений"
1650            in-lang="Mendefinisikan Bayangan dan Memangkas Tampilan"
1651            vi-lang="Định nghĩa Đổ bóng và Dạng xem Cắt hình"
1652            >
1653            Defining Shadows and Clipping Views
1654          </a>
1655          </li>
1656          <li><a href="<?cs var:toroot ?>training/material/drawables.html"
1657            zh-cn-lang="使用 Drawables"
1658            zh-tw-lang="使用可繪項目"
1659            ja-lang="ドローアブルの使用"
1660            es-lang="Trabajar con interfaces dibujables"
1661            pt-br-lang="Como trabalhar com desenháveis"
1662            ko-lang="Drawable 사용"
1663            ru-lang="Работа с элементами дизайна"
1664            in-lang="Bekerja dengan Drawable"
1665            vi-lang="Làm việc với Nội dung vẽ được"
1666            >
1667            Working with Drawables
1668          </a>
1669          </li>
1670          <li><a href="<?cs var:toroot ?>training/material/animations.html"
1671            zh-cn-lang="定义定制动画"
1672            zh-tw-lang="定義自訂動畫"
1673            ja-lang="カスタム アニメーションの定義"
1674            es-lang="Definir animaciones personalizadas"
1675            pt-br-lang="Como definir animações personalizadas"
1676            ko-lang="사용자지정 애니메이션 정의"
1677            ru-lang="Определение настраиваемой анимации"
1678            in-lang="Mendefinisikan Animasi Custom"
1679            vi-lang="Định nghĩa Hoạt hình Tùy chỉnh"
1680            >
1681            Defining Custom Animations
1682          </a>
1683          </li>
1684          <li><a href="<?cs var:toroot ?>training/material/compatibility.html"
1685            zh-cn-lang="维护兼容性"
1686            zh-tw-lang="維持相容性"
1687            ja-lang="互換性の維持"
1688            es-lang="Mantener la compatibilidad"
1689            pt-br-lang="Como manter a compatibilidade"
1690            ko-lang="호환성 유지"
1691            ru-lang="Обеспечение совместимости"
1692            in-lang="Mempertahankan Kompatibilitas"
1693            vi-lang="Duy trì Tính tương thích"
1694            >
1695            Maintaining Compatibility
1696          </a>
1697          </li>
1698        </ul>
1699      </li>
1700
1701    </ul>
1702  </li>
1703  <!-- End User Interface -->
1704
1705
1706
1707
1708  <li class="nav-section">
1709    <div class="nav-section-header">
1710      <a href="<?cs var:toroot ?>training/best-user-input.html">
1711      <span class="small">Best Practices for</span><br/>
1712              User Input
1713      </a>
1714    </div>
1715    <ul>
1716
1717      <li class="nav-section">
1718        <div class="nav-section-header">
1719          <a href="<?cs var:toroot ?>training/gestures/index.html"
1720             description=
1721             "How to write apps that allow users to interact with the touch screen via touch gestures."
1722            >Using Touch Gestures</a>
1723        </div>
1724        <ul>
1725          <li><a href="<?cs var:toroot ?>training/gestures/detector.html">
1726            Detecting Common Gestures
1727          </a>
1728          </li>
1729          <li><a href="<?cs var:toroot ?>training/gestures/movement.html">
1730            Tracking Movement
1731          </a>
1732          </li>
1733          <li><a href="<?cs var:toroot ?>training/gestures/scroll.html">
1734            Animating a Scroll Gesture
1735          </a>
1736          </li>
1737          <li><a href="<?cs var:toroot ?>training/gestures/multi.html">
1738            Handling Multi-Touch Gestures
1739          </a>
1740          </li>
1741          <li><a href="<?cs var:toroot ?>training/gestures/scale.html">
1742            Dragging and Scaling
1743          </a>
1744          </li>
1745          <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html">
1746            Managing Touch Events in a ViewGroup
1747          </a>
1748          </li>
1749        </ul>
1750      </li>
1751
1752      <li class="nav-section">
1753        <div class="nav-section-header">
1754          <a href="<?cs var:toroot ?>training/keyboard-input/index.html"
1755             description=
1756             "How to specify the appearance and behaviors of soft input methods (such
1757             as on-screen keyboards) and how to optimize the experience with
1758             hardware keyboards."
1759            >Handling Keyboard Input</a>
1760        </div>
1761        <ul>
1762          <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html">
1763            Specifying the Input Method Type
1764          </a>
1765          </li>
1766          <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html">
1767            Handling Input Method Visibility
1768          </a>
1769          </li>
1770          <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html">
1771            Supporting Keyboard Navigation
1772          </a>
1773          </li>
1774          <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html">
1775            Handling Keyboard Actions
1776          </a>
1777          </li>
1778        </ul>
1779      </li>
1780
1781      <li class="nav-section">
1782        <div class="nav-section-header">
1783          <a href="<?cs var:toroot ?>training/game-controllers/index.html"
1784             description=
1785             "How to write apps that support game controllers."
1786            >Supporting Game Controllers</a>
1787        </div>
1788        <ul>
1789          <li><a href="<?cs var:toroot ?>training/game-controllers/controller-input.html">
1790            Handling Controller Actions
1791          </a>
1792          </li>
1793          <li><a href="<?cs var:toroot ?>training/game-controllers/compatibility.html">
1794            Supporting Controllers Across Android Versions
1795          </a>
1796          </li>
1797          <li><a href="<?cs var:toroot ?>training/game-controllers/multiple-controllers.html">
1798            Supporting Multiple Game Controllers
1799          </a>
1800          </li>
1801        </ul>
1802      </li>
1803    </ul>
1804  </li> <!-- end of User Input -->
1805
1806  <li class="nav-section">
1807    <div class="nav-section-header">
1808      <a href="<?cs var:toroot ?>training/best-background.html">
1809      <span class="small">Best Practices for</span><br/>
1810              Background Jobs
1811      </a>
1812    </div>
1813    <ul>
1814
1815      <li class="nav-section">
1816        <div class="nav-section-header">
1817          <a href="<?cs var:toroot ?>training/run-background-service/index.html"
1818             description=
1819             "How to improve UI performance and responsiveness by sending work to a
1820             Service running in the background"
1821            >Running in a Background Service</a>
1822        </div>
1823        <ul>
1824          <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html">
1825            Creating a Background Service
1826          </a>
1827          </li>
1828          <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html">
1829            Sending Work Requests to the Background Service
1830          </a>
1831          </li>
1832          <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html">
1833            Reporting Work Status
1834          </a>
1835          </li>
1836        </ul>
1837      </li>
1838
1839      <li class="nav-section">
1840        <div class="nav-section-header">
1841          <a href="<?cs var:toroot ?>training/load-data-background/index.html"
1842             description="How to use CursorLoader to query data without
1843             affecting UI responsiveness."
1844            >Loading Data in the Background</a>
1845        </div>
1846        <ul>
1847          <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html">
1848            Running a Query with a CursorLoader</a>
1849          </li>
1850          <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html">
1851            Handling the Results</a>
1852          </li>
1853        </ul>
1854      </li>
1855
1856       <li class="nav-section">
1857        <div class="nav-section-header">
1858          <a href="<?cs var:toroot ?>training/scheduling/index.html"
1859             description="How to use repeating alarms and wake locks
1860             to run background jobs."
1861            >Managing Device Awake State</a>
1862        </div>
1863        <ul>
1864          <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html">
1865            Keeping the Device Awake</a>
1866          </li>
1867          <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html">
1868            Scheduling Repeating Alarms</a>
1869          </li>
1870        </ul>
1871      </li>
1872    </ul>
1873  </li> <!-- end of Background Jobs -->
1874
1875  <li class="nav-section">
1876    <div class="nav-section-header">
1877      <a href="<?cs var:toroot ?>training/best-performance.html">
1878      <span class="small">Best Practices for</span><br/>
1879              Performance
1880      </a>
1881    </div>
1882    <ul>
1883      <li>
1884        <a href="<?cs var:toroot ?>training/articles/memory.html"
1885          description=
1886          "How to keep your app's memory footprint small in order to improve performance
1887          on a variety of mobile devices."
1888          >Managing Your App's Memory</a>
1889      </li>
1890      <li>
1891        <a href="<?cs var:toroot ?>training/articles/perf-tips.html"
1892           description=
1893           "How to optimize your app's performance in various ways to improve its
1894           responsiveness and battery efficiency."
1895          >Performance Tips</a>
1896      </li>
1897      <li class="nav-section">
1898        <div class="nav-section-header">
1899          <a href="<?cs var:toroot ?>training/improving-layouts/index.html"
1900             description=
1901             "How to identify problems in your app's layout performance and improve the UI
1902             responsiveness."
1903            >Improving Layout Performance</a>
1904        </div>
1905        <ul>
1906          <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html">
1907            Optimizing Layout Hierarchies
1908          </a>
1909          </li>
1910          <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html">
1911            Re-using Layouts with &lt;include/&gt;
1912          </a>
1913          </li>
1914          <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html">
1915            Loading Views On Demand
1916          </a>
1917          </li>
1918          <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html">
1919            Making ListView Scrolling Smooth
1920          </a>
1921          </li>
1922        </ul>
1923      </li>
1924
1925      <li class="nav-section">
1926        <div class="nav-section-header">
1927          <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html"
1928             zh-cn-lang="优化电池使用时间"
1929             ja-lang="電池消費量の最適化"
1930             es-lang="mo optimizar la duración de la batería"
1931             description=
1932             "How to minimize the amount of power your app requires by adapting to current
1933             power conditions and performing power-hungry tasks at proper intervals."
1934            >Optimizing Battery Life
1935            </a>
1936        </div>
1937        <ul>
1938
1939          <li class="nav-section">
1940            <div class="nav-section-header">
1941              <a href="<?cs var:toroot ?>training/performance/battery/network/index.html">
1942                Reducing Network Battery Drain
1943              </a>
1944            </div>
1945            <ul>
1946              <li><a href="<?cs var:toroot ?>training/performance/battery/network/gather-data.html">
1947                Collecting Network Traffic Data
1948              </a>
1949              </li>
1950              <li><a href="<?cs var:toroot ?>training/performance/battery/network/analyze-data.html">
1951                Analyzing Network Traffic Data
1952              </a>
1953              </li>
1954              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-user-traffic.html">
1955                Optimizing User-Initiated Network Use
1956              </a>
1957              </li>
1958              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-app-traffic.html">
1959                Optimizing App-Initiated Network Use
1960              </a>
1961              </li>
1962              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-server-traffic.html">
1963                Optimizing Server-Initiated Network Use
1964              </a>
1965              </li>
1966              <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-any-traffic.html">
1967                Optimizing General Network Use
1968              </a>
1969              </li>
1970            </ul>
1971          </li> <!-- End of Reducing Network Battery Drain -->
1972
1973          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/doze-standby.html"
1974            >Optimizing for Doze and App Standby</a>
1975          </li>
1976          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html"
1977            zh-cn-lang="监控电池电量和充电状态"
1978            ja-lang="電池残量と充電状態の監視"
1979            es-lang="mo controlar el nivel de batería y el estado de carga"
1980            >Monitoring the Battery Level and Charging State</a>
1981          </li>
1982          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html"
1983            zh-cn-lang="确定和监控基座对接状态和类型"
1984            ja-lang="ホルダーの装着状態とタイプの特定と監視"
1985            es-lang="mo determinar y controlar el tipo de conector y el estado de la conexión"
1986            >Determining and Monitoring the Docking State and Type</a>
1987          </li>
1988          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html"
1989            zh-cn-lang="确定和监控网络连接状态"
1990            ja-lang="接続状態の特定と監視"
1991            es-lang="mo determinar y controlar el estado de la conectividad"
1992            >Determining and Monitoring the Connectivity Status</a>
1993          </li>
1994          <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html"
1995            zh-cn-lang="根据需要操作广播接收器"
1996            ja-lang="オンデマンドでのブロードキャスト レシーバ操作"
1997            es-lang="mo manipular los receptores de emisión bajo demanda"
1998            >Manipulating Broadcast Receivers On Demand</a>
1999          </li>
2000        </ul>
2001      </li>
2002      <li class="nav-section">
2003        <div class="nav-section-header">
2004          <a href="<?cs var:toroot ?>training/multiple-threads/index.html"
2005             description=
2006             "How to improve the performance and scalability of long-running operations by
2007              dispatching work to multiple threads.">
2008             Sending Operations to Multiple Threads</a>
2009        </div>
2010        <ul>
2011          <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html">
2012            Specifying the Code to Run on a Thread
2013          </a>
2014          </li>
2015          <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html">
2016            Creating a Manager for Multiple Threads
2017          </a>
2018          </li>
2019          <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html">
2020            Running Code on a Thread Pool Thread
2021          </a>
2022          </li>
2023          <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html">
2024            Communicating with the UI Thread
2025          </a>
2026          </li>
2027        </ul>
2028      </li>
2029      <li>
2030        <a href="<?cs var:toroot ?>training/articles/perf-anr.html"
2031           description=
2032           "How to keep your app responsive to user interaction so the UI does not lock-up and
2033           display an &quot;Application Not Responding&quot; dialog."
2034          >Keeping Your App Responsive</a>
2035      </li>
2036      <li>
2037        <a href="<?cs var:toroot ?>training/articles/perf-jni.html"
2038           description=
2039           "How to efficiently use the Java Native Interface with the Android NDK."
2040          >JNI Tips</a>
2041      </li>
2042      <li>
2043        <a href="<?cs var:toroot ?>training/articles/smp.html"
2044           description=
2045           "Tips for coding Android apps on symmetric multiprocessor systems."
2046          >SMP Primer for Android</a>
2047      </li>
2048    </ul>
2049  </li> <!-- end of Performance -->
2050
2051  <li class="nav-section">
2052    <div class="nav-section-header">
2053      <a href="<?cs var:toroot ?>training/best-security.html">
2054      <span class="small">Best Practices for</span><br/>
2055              Security &amp; Privacy
2056      </a>
2057    </div>
2058    <ul>
2059      <li>
2060        <a href="<?cs var:toroot ?>training/articles/security-tips.html"
2061           description=
2062           "How to perform various tasks and keep your app's data and your user's data secure."
2063          >Security Tips</a>
2064      </li>
2065
2066      <li>
2067        <a href="<?cs var:toroot ?>training/articles/security-ssl.html"
2068           description=
2069           "How to ensure that your app is secure when performing network transactions."
2070          >Security with HTTPS and SSL</a>
2071      </li>
2072
2073      <li>
2074        <a href="<?cs var:toroot ?>training/articles/security-gms-provider.html"
2075           description=
2076           "How to use and update Google Play services security provider, to
2077           protect against SSL exploits."
2078          >Updating Your Security Provider to Protect Against SSL Exploits</a>
2079      </li>
2080
2081      <li>
2082        <a href="<?cs var:toroot ?>training/safetynet/index.html"
2083           description=
2084           "How to use the SafetyNet service to analyze a device where your app is running
2085            and get information about its compatibility with your app."
2086          >Checking Device Compatibility with SafetyNet</a>
2087      </li>
2088
2089      <li>
2090        <a href="<?cs var:toroot ?>work/device-management-policy.html"
2091            description="How to create an application that enforces security policies on devices."
2092            >Enhancing Security with Device Management Policies</a>
2093      </li>
2094    </ul>
2095  </li>
2096  <!-- End security and user info -->
2097
2098  <li class="nav-section">
2099    <div class="nav-section-header">
2100      <a href="<?cs var:toroot ?>training/best-permissions-ids.html">
2101      <span class="small">Best Practices for</span><br/>
2102              Permissions &amp; Identifiers
2103      </a>
2104    </div>
2105    <ul>
2106      <li>
2107        <a href="<?cs var:toroot ?>training/articles/user-data-overview.html"
2108           description=
2109           "Overview of app permissions on Android and how they affect your users."
2110          >Permissions and User Data</a>
2111      </li>
2112      <li>
2113        <a href="<?cs var:toroot ?>training/articles/user-data-permissions.html"
2114           description=
2115           "How to manage permissions the right way for users."
2116          >Best Practices for App Permissions</a>
2117      </li>
2118      <li>
2119        <a href="<?cs var:toroot ?>training/articles/user-data-ids.html"
2120           description=
2121           "Unique identifiers available and how to choose the right one for your use case."
2122          >Best Practices for Unique Identifiers</a>
2123      </li>
2124    </ul>
2125  </li>
2126  <!-- End Permissions and identifiers -->
2127
2128  <li class="nav-section">
2129    <div class="nav-section-header">
2130      <a href="<?cs var:toroot ?>training/testing/index.html">
2131      <span class="small">Best Practices for</span><br/>
2132              Testing
2133      </a>
2134    </div>
2135    <ul>
2136      <li>
2137      <a href="<?cs var:toroot ?>training/testing/start/index.html"
2138         description="How to get started with testing your Android applications.">
2139            Getting Started with Testing
2140          </a>
2141      </li>
2142      <li class="nav-section">
2143      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/unit-testing/index.html"
2144         description="How to build effective unit tests for Android apps.">
2145            Building Effective Unit Tests
2146          </a></div>
2147        <ul>
2148          <li><a href="<?cs var:toroot ?>training/testing/unit-testing/local-unit-tests.html">
2149            <span class="en">Building Local Unit Tests</span>
2150            </a>
2151          </li>
2152          <li><a href="<?cs var:toroot ?>training/testing/unit-testing/instrumented-unit-tests.html">
2153            <span class="en">Building Instrumented Unit Tests</span>
2154            </a>
2155          </li>
2156        </ul>
2157      </li>
2158      <li class="nav-section">
2159      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/ui-testing/index.html"
2160         description="How to automate your user interface tests for Android apps.">
2161            Automating UI Tests
2162          </a></div>
2163        <ul>
2164          <li><a href="<?cs var:toroot ?>training/testing/ui-testing/espresso-testing.html">
2165            <span class="en">Testing UI for a Single App</span>
2166          </a>
2167          </li>
2168          <li><a href="<?cs var:toroot ?>training/testing/ui-testing/uiautomator-testing.html">
2169            <span class="en">Testing UI for Multiple Apps</span>
2170          </a>
2171          </li>
2172        </ul>
2173      </li>
2174      <li class="nav-section">
2175      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/integration-testing/index.html"
2176         description="How to build effective integration tests for Android apps.">
2177            Testing App Component Integrations
2178          </a></div>
2179        <ul>
2180         <li><a href="<?cs var:toroot ?>training/testing/integration-testing/service-testing.html">
2181           <span class="en">Testing Your Service</span></a></li>
2182         <li><a href="<?cs var:toroot ?>training/testing/integration-testing/content-provider-testing.html">
2183           <span class="en">Testing Your Content Provider</span></a></li>
2184        </ul>
2185      </li>
2186      <li><a href="<?cs var:toroot ?>training/testing/performance.html"
2187          description="How to automate UI performance testing.">Testing Display Performance</a>
2188      </li>
2189    </ul>
2190  </li>
2191  <!-- End best Testing -->
2192
2193  <li class="nav-section">
2194    <div class="nav-section-header">
2195      <a href="<?cs var:toroot ?>training/distribute.html">
2196      <span class="small">Using Google Play to</span><br/>
2197              Distribute &amp; Monetize
2198      </a>
2199    </div>
2200    <ul>
2201      <li class="nav-section">
2202      <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html"
2203         description="How to sell in-app products from your application using In-app Billing.">
2204            Selling In-app Products
2205          </a></div>
2206        <ul>
2207          <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html">
2208            <span class="en">Preparing Your App</span>
2209          </a>
2210          </li>
2211          <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html">
2212            <span class="en">Establishing Products for Sale</span>
2213          </a>
2214          </li>
2215          <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html">
2216            <span class="en">Purchasing Products</span>
2217          </a>
2218          </li>
2219          <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html">
2220            <span class="en">Testing Your App</span>
2221          </a>
2222          </li>
2223        </ul>
2224      </li>
2225
2226      <li class="nav-section">
2227        <div class="nav-section-header">
2228          <a href="<?cs var:toroot ?>training/multiple-apks/index.html"
2229             description=
2230             "How to publish your app on Google Play with separate APKs that target
2231             different devices, while using a single app listing."
2232            >Maintaining Multiple APKs</a>
2233        </div>
2234        <ul>
2235          <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html">
2236            Creating Multiple APKs for Different API Levels
2237          </a>
2238          </li>
2239          <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html">
2240            Creating Multiple APKs for Different Screen Sizes
2241          </a>
2242          </li>
2243          <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html">
2244            Creating Multiple APKs for Different GL Textures
2245          </a>
2246          </li>
2247          <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html">
2248            Creating Multiple APKs with 2+ Dimensions
2249          </a>
2250          </li>
2251        </ul>
2252      </li>
2253    </ul>
2254  </li>
2255  <!-- End best Publishing -->
2256
2257</ul><!-- nav -->
2258<script type="text/javascript">
2259<!--
2260    buildToggleLists();
2261    changeNavLang(getLangPref());
2262//-->
2263</script>
2264