1 <ul id="nav"> 2 <li class="nav-section"> 3 <div class="nav-section-header"> 4 <a href="<?cs var:toroot ?>training/index.html"> 5 Getting Started 6 </a> 7 </div> 8 9 <ul> 10 <li class="nav-section"> 11 <div class="nav-section-header"> 12 <a href="<?cs var:toroot ?>training/basics/firstapp/index.html" 13 description= 14 "After you've installed the Android SDK, start with this class 15 to learn the basics about Android app development." 16 >Building Your First App</a> 17 </div> 18 <ul> 19 <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html"> 20 Creating an Android Project 21 </a> 22 </li> 23 <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html"> 24 Running Your Application 25 </a> 26 </li> 27 <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html"> 28 Building a Simple User Interface 29 </a> 30 </li> 31 <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html"> 32 Starting Another Activity 33 </a> 34 </li> 35 </ul> 36 </li> 37 38 <li class="nav-section"> 39 <div class="nav-section-header"> 40 <a href="<?cs var:toroot ?>training/basics/actionbar/index.html" 41 description= 42 "The action bar is one of the most important design elements you can implement for your 43 app's activities. Although first introduced with API level 11, you can use the Support Library to 44 include the action bar on devices running Android 2.1 or higher." 45 >Adding the Action Bar</a> 46 </div> 47 <ul> 48 <li><a href="<?cs var:toroot ?>training/basics/actionbar/setting-up.html"> 49 Setting Up the Action Bar 50 </a> 51 </li> 52 <li><a href="<?cs var:toroot ?>training/basics/actionbar/adding-buttons.html"> 53 Adding Action Buttons 54 </a> 55 </li> 56 <li><a href="<?cs var:toroot ?>training/basics/actionbar/styling.html"> 57 Styling the Action Bar 58 </a> 59 </li> 60 <li><a href="<?cs var:toroot ?>training/basics/actionbar/overlaying.html"> 61 Overlaying the Action Bar 62 </a> 63 </li> 64 </ul> 65 </li> 66 67 <li class="nav-section"> 68 <div class="nav-section-header"> 69 <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html" 70 description= 71 "How to build your app with alternative resources that provide an 72 optimized user experience on multiple device form factors using a single APK." 73 >Supporting Different Devices</a> 74 </div> 75 <ul> 76 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html"> 77 Supporting Different Languages 78 </a> 79 </li> 80 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html"> 81 Supporting Different Screens 82 </a> 83 </li> 84 <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html"> 85 Supporting Different Platform Versions 86 </a> 87 </li> 88 </ul> 89 </li> 90 91 <li class="nav-section"> 92 <div class="nav-section-header"> 93 <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html" 94 description= 95 "How Android activities live and die and how to create 96 a seamless user experience by implementing lifecycle callback methods." 97 >Managing the Activity Lifecycle</a> 98 </div> 99 <ul> 100 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html"> 101 Starting an Activity 102 </a> 103 </li> 104 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html"> 105 Pausing and Resuming an Activity 106 </a> 107 </li> 108 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html"> 109 Stopping and Restarting an Activity 110 </a> 111 </li> 112 <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html"> 113 Recreating an Activity 114 </a> 115 </li> 116 </ul> 117 </li> 118 119 <li class="nav-section"> 120 <div class="nav-section-header"> 121 <a href="<?cs var:toroot ?>training/basics/fragments/index.html" 122 description= 123 "How to build a user interface for your app that is flexible enough 124 to present multiple UI components on large screens and a more constrained set of 125 UI components on smaller screens—essential for building a single APK for both 126 phones and tablets." 127 >Building a Dynamic UI with Fragments</a> 128 </div> 129 <ul> 130 <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html"> 131 Creating a Fragment 132 </a> 133 </li> 134 <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html" zh-cn-lang="构建灵活的界面"> 135 Building a Flexible UI 136 </a> 137 </li> 138 <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html"> 139 Communicating with Other Fragments 140 </a> 141 </li> 142 </ul> 143 </li> 144 145 <li class="nav-section"> 146 <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html" 147 description= 148 "How to save data on the device, whether it's temporary files, downloaded 149 app assets, user media, structured data, or something else." 150 >Saving Data</a> 151 </div> 152 <ul> 153 <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html"> 154 Saving Key-Value Sets 155 </a> 156 </li> 157 <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html"> 158 Saving Files 159 </a> 160 </li> 161 <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html"> 162 Saving Data in SQL Databases 163 </a> 164 </li> 165 </ul> 166 </li> 167 168 <li class="nav-section"> 169 <div class="nav-section-header"> 170 <a href="<?cs var:toroot ?>training/basics/intents/index.html" 171 description= 172 "How to build a user experience that leverages other apps available 173 on the device to perform advanced user tasks, such as capture a photo or view 174 an address on a map." 175 >Interacting with Other Apps</a> 176 </div> 177 <ul> 178 <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html"> 179 Sending the User to Another App 180 </a> 181 </li> 182 <li><a href="<?cs var:toroot ?>training/basics/intents/result.html"> 183 Getting a Result from the Activity 184 </a> 185 </li> 186 <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html"> 187 Allowing Other Apps to Start Your Activity 188 </a> 189 </li> 190 </ul> 191 </li> 192 193 </ul> 194 </li><!-- end getting started --> 195 <li class="nav-section"> 196 <div class="nav-section-header"> 197 <a href="<?cs var:toroot ?>training/building-content-sharing.html"> 198 <span class="small">Building Apps with</span><br/>Content Sharing 199 </a> 200 </div> 201 <ul> 202 <li class="nav-section"> 203 <div class="nav-section-header"> 204 <a href="<?cs var:toroot ?>training/sharing/index.html" 205 description= 206 "How to take your app interaction to the next level by sharing 207 information with other apps, receive information back, and provide a simple and 208 scalable way to perform Share actions with user content." 209 >Sharing Simple Data</a> 210 </div> 211 <ul> 212 <li> 213 <a href="<?cs var:toroot ?>training/sharing/send.html"> 214 Sending Simple Data to Other Apps 215 </a> 216 </li> 217 <li> 218 <a href="<?cs var:toroot ?>training/sharing/receive.html"> 219 Receiving Simple Data from Other Apps 220 </a> 221 </li> 222 <li> 223 <a href="<?cs var:toroot ?>training/sharing/shareaction.html"> 224 Adding an Easy Share Action 225 </a> 226 </li> 227 </ul> 228 </li> 229 <li class="nav-section"> 230 <div class="nav-section-header"> 231 <a href="<?cs var:toroot?>training/secure-file-sharing/index.html" 232 description= 233 "How to provide secure access to a file associated with your app using a content 234 URI and temporary access permissions." 235 >Sharing Files</a> 236 </div> 237 <ul> 238 <li> 239 <a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html"> 240 Setting Up File Sharing 241 </a> 242 </li> 243 <li> 244 <a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html"> 245 Sharing a File 246 </a> 247 </li> 248 <li> 249 <a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html"> 250 Requesting a Shared File 251 </a> 252 </li> 253 <li> 254 <a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html"> 255 Retrieving File Information 256 </a> 257 </li> 258 </ul> 259 </li> 260 <li class="nav-section"> 261 <div class="nav-section-header"> 262 <a href="<?cs var:toroot ?>training/beam-files/index.html" 263 description= 264 "How to transfer files between devices using the NFC Android Beam feature." 265 >Sharing Files with NFC</a> 266 </div> 267 <ul> 268 <li> 269 <a href="<?cs var:toroot ?>training/beam-files/send-files.html" 270 >Sending Files to Another Device</a> 271 </li> 272 <li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html" 273 >Receiving Files from Another Device</a></li> 274 </ul> 275 </li> 276 </ul> 277 </li> 278 279 280 281 <li class="nav-section"> 282 <div class="nav-section-header"> 283 <a href="<?cs var:toroot ?>training/building-multimedia.html"> 284 <span class="small">Building Apps with</span><br/>Multimedia 285 </a> 286 </div> 287 <ul> 288 289 <li class="nav-section"> 290 <div class="nav-section-header"> 291 <a href="<?cs var:toroot ?>training/managing-audio/index.html" 292 description= 293 "How to respond to hardware audio key presses, request audio focus 294 when playing audio, and respond appropriately to changes in audio focus." 295 >Managing Audio Playback</a> 296 </div> 297 <ul> 298 <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html"> 299 Controlling Your App's Volume and Playback 300 </a> 301 </li> 302 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html"> 303 Managing Audio Focus 304 </a> 305 </li> 306 <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html"> 307 Dealing with Audio Output Hardware 308 </a> 309 </li> 310 </ul> 311 </li> 312 313 <li class="nav-section"> 314 <div class="nav-section-header"> 315 <a href="<?cs var:toroot ?>training/camera/index.html" 316 description= 317 "How to leverage existing camera apps on the user's device to capture 318 photos or control the camera hardware directly and build your own camera app." 319 >Capturing Photos</a> 320 </div> 321 <ul> 322 <li><a href="<?cs var:toroot ?>training/camera/photobasics.html"> 323 Taking Photos Simply 324 </a> 325 </li> 326 <li><a href="<?cs var:toroot ?>training/camera/videobasics.html"> 327 Recording Videos Simply 328 </a> 329 </li> 330 <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html"> 331 Controlling the Camera 332 </a> 333 </li> 334 </ul> 335 </li> 336 337 <li class="nav-section"> 338 <div class="nav-section-header"> 339 <a href="<?cs var:toroot ?>training/printing/index.html" 340 description= 341 "How to print photos, HTML documents, and custom documents from your app." 342 >Printing Content</a> 343 </div> 344 <ul> 345 <li><a href="<?cs var:toroot ?>training/printing/photos.html"> 346 Photos 347 </a> 348 </li> 349 <li><a href="<?cs var:toroot ?>training/printing/html-docs.html"> 350 HTML Documents 351 </a> 352 </li> 353 <li><a href="<?cs var:toroot ?>training/printing/custom-docs.html"> 354 Custom Documents 355 </a> 356 </li> 357 </ul> 358 </li> 359 360 </ul> 361 </li> 362 <!-- End multimedia --> 363 364 365 366 <li class="nav-section"> 367 <div class="nav-section-header"> 368 <a href="<?cs var:toroot ?>training/building-graphics.html"> 369 <span class="small">Building Apps with</span><br/>Graphics & Animation 370 </a> 371 </div> 372 <ul> 373 374 <li class="nav-section"> 375 <div class="nav-section-header"> 376 <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html" 377 description= 378 "How to load and process bitmaps while keeping your user interface 379 responsive and avoid exceeding memory limits." 380 >Displaying Bitmaps Efficiently</a> 381 </div> 382 <ul> 383 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html"> 384 Loading Large Bitmaps Efficiently 385 </a> 386 </li> 387 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html"> 388 Processing Bitmaps Off the UI Thread 389 </a> 390 </li> 391 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html"> 392 Caching Bitmaps 393 </a> 394 </li> 395 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html"> 396 Managing Bitmap Memory 397 </a> 398 </li> 399 <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html"> 400 Displaying Bitmaps in Your UI 401 </a></li> 402 </ul> 403 </li> 404 405 <li class="nav-section"> 406 <div class="nav-section-header"> 407 <a href="<?cs var:toroot?>training/graphics/opengl/index.html" 408 description= 409 "How to create OpenGL graphics within the Android app framework 410 and respond to touch input." 411 >Displaying Graphics with OpenGL ES</a> 412 </div> 413 <ul> 414 <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html"> 415 Building an OpenGL ES Environment 416 </a> 417 </li> 418 <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html"> 419 Defining Shapes 420 </a> 421 </li> 422 <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html"> 423 Drawing Shapes 424 </a> 425 </li> 426 <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html"> 427 Applying Projection and Camera Views 428 </a> 429 </li> 430 <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html"> 431 Adding Motion 432 </a> 433 </li> 434 <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html"> 435 Responding to Touch Events 436 </a> 437 </li> 438 </ul> 439 </li> 440 441 <li class="nav-section"> 442 <div class="nav-section-header"> 443 <a href="<?cs var:toroot?>training/transitions/index.html" 444 description= 445 "How to animate state changes in a view hierarchy using transitions." 446 >Animating Views Using Scenes and Transitions</a> 447 </div> 448 <ul> 449 <li><a href="<?cs var:toroot ?>training/transitions/overview.html"> 450 The Transitions Framework 451 </a> 452 </li> 453 <li><a href="<?cs var:toroot ?>training/transitions/scenes.html"> 454 Creating a Scene 455 </a> 456 </li> 457 <li><a href="<?cs var:toroot ?>training/transitions/transitions.html"> 458 Applying a Transition 459 </a> 460 </li> 461 <li><a href="<?cs var:toroot ?>training/transitions/custom-transitions.html"> 462 Creating Custom Transitions 463 </a> 464 </li> 465 466 </ul> 467 </li> 468 469 <li class="nav-section"> 470 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html" 471 description= 472 "How to add transitional animations to your user interface."> 473 Adding Animations 474 </a></div> 475 <ul> 476 <li><a href="<?cs var:toroot ?>training/animation/crossfade.html"> 477 Crossfading Two Views 478 </a> 479 </li> 480 <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html"> 481 Using ViewPager for Screen Slide 482 </a> 483 </li> 484 <li><a href="<?cs var:toroot ?>training/animation/cardflip.html"> 485 Displaying Card Flip Animations 486 </a> 487 </li> 488 <li><a href="<?cs var:toroot ?>training/animation/zoom.html"> 489 Zooming a View 490 </a> 491 </li> 492 <li><a href="<?cs var:toroot ?>training/animation/layout.html"> 493 Animating Layout Changes 494 </a> 495 </li> 496 </ul> 497 </li> 498 </ul> 499 </li> 500 <!-- End graphics and animation --> 501 502 503 <li class="nav-section"> 504 <div class="nav-section-header"> 505 <a href="<?cs var:toroot ?>training/building-connectivity.html"> 506 <span class="small">Building Apps with</span><br/> 507 Connectivity & the Cloud 508 </a> 509 </div> 510 <ul> 511 512 <li class="nav-section"> 513 <div class="nav-section-header"> 514 <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html" 515 description= 516 "How to find and connect to local devices using Network Service 517 Discovery and how to create peer-to-peer connections with Wi-Fi." 518 >Connecting Devices Wirelessly</a> 519 </div> 520 <ul> 521 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html"> 522 Using Network Service Discovery 523 </a> 524 </li> 525 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html"> 526 Creating P2P Connections with Wi-Fi 527 </a> 528 </li> 529 <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html"> 530 Using Wi-Fi P2P for Service Discovery 531 </a> 532 </li> 533 </ul> 534 </li> 535 <li class="nav-section"> 536 <div class="nav-section-header"> 537 <a href="<?cs var:toroot ?>training/basics/network-ops/index.html" 538 description= 539 "How to create a network connection, monitor the connection for changes 540 in connectivity, and perform transactions with XML data." 541 >Performing Network Operations</a> 542 </div> 543 <ul> 544 <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html"> 545 Connecting to the Network 546 </a> 547 </li> 548 <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html"> 549 Managing Network Usage 550 </a> 551 </li> 552 <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html"> 553 Parsing XML Data 554 </a> 555 </li> 556 </ul> 557 </li> 558 <li class="nav-section"> 559 <div class="nav-section-header"> 560 <a href="<?cs var:toroot ?>training/efficient-downloads/index.html" 561 description= 562 "How to minimize your app's impact on the battery when performing downloads 563 and other network transactions." 564 >Transferring Data Without Draining the Battery</a> 565 </div> 566 <ul> 567 <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html"> 568 Optimizing Downloads for Efficient Network Access 569 </a> 570 </li> 571 <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html"> 572 Minimizing the Effect of Regular Updates 573 </a> 574 </li> 575 <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html"> 576 Redundant Downloads are Redundant 577 </a> 578 </li> 579 <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html"> 580 Modifying Patterns Based on the Connectivity Type 581 </a> 582 </li> 583 </ul> 584 </li> 585 586 <li class="nav-section"> 587 <div class="nav-section-header"> 588 <a href="<?cs var:toroot ?>training/cloudsync/index.html" 589 description= 590 "How to sync and back up app and user data to remote web services in the 591 cloud and how to restore the data back to multiple devices." 592 >Syncing to the Cloud</a> 593 </div> 594 <ul> 595 <li><a href="<?cs var:toroot ?>training/cloudsync/backupapi.html"> 596 Using the Backup API 597 </a> 598 </li> 599 <li><a href="<?cs var:toroot ?>training/cloudsync/gcm.html"> 600 Making the Most of Google Cloud Messaging 601 </a> 602 </li> 603 </ul> 604 <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html" 605 description= 606 "How to design a robust conflict resolution strategy for apps that save data to the cloud." 607 >Resolving Cloud Save Conflicts 608 </a> 609 </li> 610 </li> 611 <li class="nav-section"> 612 <div class="nav-section-header"> 613 <a href="<?cs var:toroot ?>training/sync-adapters/index.html" 614 description="How to transfer data between the cloud and the device using the Android 615 sync adapter framework" 616 >Transferring Data Using Sync Adapters</a> 617 </div> 618 <ul> 619 <li> 620 <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html"> 621 Creating a Stub Authenticator 622 </a> 623 </li> 624 <li> 625 <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html"> 626 Creating a Stub Content Provider 627 </a> 628 </li> 629 <li> 630 <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html"> 631 Creating a Sync Adapter 632 </a> 633 </li> 634 <li> 635 <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html"> 636 Running a Sync Adapter 637 </a> 638 </li> 639 </ul> 640 </li> 641 <li class="nav-section"> 642 <div class="nav-section-header"> 643 <a href="<?cs var:toroot ?>training/volley/index.html" 644 description="How to perform fast, scalable UI operations over the network using Volley" 645 >Transmitting Network Data Using Volley</a> 646 </div> 647 <ul> 648 <li> 649 <a href="<?cs var:toroot ?>training/volley/simple.html"> 650 Sending a Simple Request 651 </a> 652 </li> 653 <li> 654 <a href="<?cs var:toroot ?>training/volley/requestqueue.html"> 655 Setting Up a RequestQueue 656 </a> 657 </li> 658 <li> 659 <a href="<?cs var:toroot ?>training/volley/request.html"> 660 Making a Standard Request 661 </a> 662 </li> 663 <li> 664 <a href="<?cs var:toroot ?>training/volley/request-custom.html"> 665 Implementing a Custom Request 666 </a> 667 </li> 668 </ul> 669 </li> 670 </ul> 671 </li> 672 <!-- End connectivity and cloud --> 673 674 675 676 <li class="nav-section"> 677 <div class="nav-section-header"> 678 <a href="<?cs var:toroot ?>training/building-userinfo.html"> 679 <span class="small">Building Apps with</span><br/> 680 User Info & Location 681 </a> 682 </div> 683 <ul> 684 <li class="nav-section"> 685 <div class="nav-section-header"> 686 <a href="<?cs var:toroot ?>training/contacts-provider/index.html" 687 description= 688 "How to use Android's central address book, the Contacts Provider, to 689 display contacts and their details and modify contact information."> 690 Accessing Contacts Data</a> 691 </div> 692 <ul> 693 <li> 694 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html"> 695 Retrieving a List of Contacts 696 </a> 697 </li> 698 <li> 699 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html"> 700 Retrieving Details for a Contact 701 </a> 702 </li> 703 <li> 704 <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html"> 705 Modifying Contacts Using Intents 706 </a> 707 </li> 708 <li> 709 <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html"> 710 Displaying the Quick Contact Badge 711 </a> 712 </li> 713 </ul> 714 </li> 715 716 <li class="nav-section"> 717 <div class="nav-section-header"> 718 <a href="<?cs var:toroot ?>training/location/index.html" 719 description="How to add location-aware features to your app by getting the user's current location."> 720 Making Your App Location-Aware 721 </a> 722 </div> 723 <ul> 724 <li> 725 <a href="<?cs var:toroot ?>training/location/retrieve-current.html"> 726 Getting the Last Known Location 727 </a> 728 </li> 729 <li> 730 <a href="<?cs var:toroot ?>training/location/receive-location-updates.html"> 731 Receiving Location Updates 732 </a> 733 </li> 734 <li> 735 <a href="<?cs var:toroot ?>training/location/display-address.html"> 736 Displaying a Location Address 737 </a> 738 </li> 739 </ul> 740 </li> 741 </ul> 742 </li> 743 <!-- End privacy and location --> 744 745 746 <li class="nav-section"> 747 <div class="nav-section-header"> 748 <a href="<?cs var:toroot ?>training/building-wearables.html"> 749 <span class="small">Building Apps for</span><br/> 750 Wearables 751 </a> 752 </div> 753 <ul> 754 <li class="nav-section"> 755 <div class="nav-section-header"> 756 <a href="<?cs var:toroot ?>training/wearables/notifications/index.html" 757 description="How to build handheld notifications that are synced to 758 and look great on wearables." 759 >Adding Wearable Features to Notifications</a> 760 </div> 761 <ul> 762 <li> 763 <a href="<?cs var:toroot ?>training/wearables/notifications/creating.html">Creating a Notification</a> 764 </li> 765 <li> 766 <a href="<?cs var:toroot ?>training/wearables/notifications/voice-input.html">Receiving Voice Input in a Notification</a> 767 </li> 768 <li> 769 <a href="<?cs var:toroot ?>training/wearables/notifications/pages.html">Adding Pages to a Notification</a> 770 </li> 771 <li> 772 <a href="<?cs var:toroot ?>training/wearables/notifications/stacks.html">Stacking Notifications</a> 773 </li> 774 </ul> 775 </li> 776 777 <li class="nav-section"> 778 <div class="nav-section-header"> 779 <a href="<?cs var:toroot ?>training/wearables/apps/index.html" 780 description="How to build apps that run directly on wearables." 781 >Creating Wearable Apps</a> 782 </div> 783 <ul> 784 <li> 785 <a href="<?cs var:toroot ?>training/wearables/apps/creating.html">Creating and Running a Wearable App</a> 786 </li> 787 <li> 788 <a href="<?cs var:toroot ?>training/wearables/apps/layouts.html">Creating Custom Layouts</a> 789 </li> 790 <li> 791 <a href="<?cs var:toroot ?>training/wearables/apps/voice.html">Adding Voice Capabilities</a> 792 </li> 793 <li> 794 <a href="<?cs var:toroot ?>training/wearables/apps/packaging.html">Packaging Wearable Apps</a> 795 </li> 796 <li> 797 <a href="<?cs var:toroot ?>training/wearables/apps/bt-debugging.html">Debugging over Bluetooth</a> 798 </li> 799 </ul> 800 </li> 801 802 <li class="nav-section"> 803 <div class="nav-section-header"> 804 <a href="<?cs var:toroot ?>training/wearables/ui/index.html" 805 description="How to create custom user interfaces for wearable apps." 806 >Creating Custom UIs</a> 807 </div> 808 <ul> 809 <li> 810 <a href="<?cs var:toroot ?>training/wearables/ui/layouts.html">Defining Layouts</a> 811 </li> 812 <li> 813 <a href="<?cs var:toroot ?>training/wearables/ui/cards.html">Creating Cards</a> 814 </li> 815 <li> 816 <a href="<?cs var:toroot ?>training/wearables/ui/lists.html">Creating Lists</a> 817 </li> 818 <li> 819 <a href="<?cs var:toroot ?>training/wearables/ui/2d-picker.html">Creating a 2D Picker</a> 820 </li> 821 <li> 822 <a href="<?cs var:toroot ?>training/wearables/ui/confirm.html">Showing Confirmations</a> 823 </li> 824 <li> 825 <a href="<?cs var:toroot ?>training/wearables/ui/exit.html">Exiting Full-Screen Activities</a> 826 </li> 827 </ul> 828 </li> 829 830 <li class="nav-section"> 831 <div class="nav-section-header"> 832 <a href="<?cs var:toroot ?>training/wearables/data-layer/index.html" 833 description="How to sync data between handhelds and wearables." 834 >Sending and Syncing Data</a> 835 </div> 836 <ul> 837 <li> 838 <a href="<?cs var:toroot ?>training/wearables/data-layer/accessing.html">Accessing the Wearable Data Layer</a> 839 </li> 840 <li> 841 <a href="<?cs var:toroot ?>training/wearables/data-layer/data-items.html">Syncing Data Items</a> 842 </li> 843 <li> 844 <a href="<?cs var:toroot ?>training/wearables/data-layer/assets.html">Transferring Assets</a> 845 </li> 846 <li> 847 <a href="<?cs var:toroot ?>training/wearables/data-layer/messages.html">Sending and Receiving Messages</a> 848 </li> 849 <li> 850 <a href="<?cs var:toroot ?>training/wearables/data-layer/events.html">Handling Data Layer Events</a> 851 </li> 852 </ul> 853 </li> 854 855 <li class="nav-section"> 856 <div class="nav-section-header"> 857 <a href="<?cs var:toroot ?>training/wearables/watch-faces/index.html" 858 description="How to create watch faces for wearables." 859 >Creating Watch Faces</a> 860 </div> 861 <ul> 862 <li> 863 <a href="<?cs var:toroot ?>training/wearables/watch-faces/designing.html">Designing Watch Faces</a> 864 </li> 865 <li> 866 <a href="<?cs var:toroot ?>training/wearables/watch-faces/service.html">Building a Watch Face Service</a> 867 </li> 868 <li> 869 <a href="<?cs var:toroot ?>training/wearables/watch-faces/drawing.html">Drawing Watch Faces</a> 870 </li> 871 <li> 872 <a href="<?cs var:toroot ?>training/wearables/watch-faces/information.html">Showing Information in Watch Faces</a> 873 </li> 874 <li> 875 <a href="<?cs var:toroot ?>training/wearables/watch-faces/configuration.html">Providing Configuration Activities</a> 876 </li> 877 <li> 878 <a href="<?cs var:toroot ?>training/wearables/watch-faces/issues.html">Addressing Common Issues</a> 879 </li> 880 <li> 881 <a href="<?cs var:toroot ?>training/wearables/watch-faces/performance.html">Optimizing Performance and Battery Life</a> 882 </li> 883 </ul> 884 </li> 885 886 <li> 887 <a href="<?cs var:toroot ?>training/articles/wear-location-detection.html" 888 description= 889 "How to detect location data on Android Wear devices." 890 >Detecting Location</a> 891 </li> 892 </ul> 893 </li> 894 <!-- End Building for wearables --> 895 896 897 <!-- Start: Building for TV --> 898 <li class="nav-section"> 899 <div class="nav-section-header"> 900 <a href="<?cs var:toroot ?>training/tv/index.html"> 901 <span class="small">Building Apps for</span><br/> 902 TV 903 </a> 904 </div> 905 <ul> 906 907 <li class="nav-section"> 908 <div class="nav-section-header"> 909 910 <a href="<?cs var:toroot ?>training/tv/start/index.html" 911 ja-lang="TV アプリのビルド" 912 description="How to start building TV apps or extend your existing app to run on TV 913 devices."> 914 Building TV Apps</a> 915 </div> 916 <ul> 917 <li> 918 <a href="<?cs var:toroot ?>training/tv/start/start.html" 919 ja-lang="TV アプリのビルドを開始する"> 920 Getting Started with TV Apps</a> 921 </li> 922 <li> 923 <a href="<?cs var:toroot ?>training/tv/start/hardware.html" 924 ja-lang="TV ハードウェアを処理する"> 925 Handling TV Hardware</a> 926 </li> 927 <li> 928 <a href="<?cs var:toroot ?>training/tv/start/layouts.html" 929 ja-lang="TV 向けレイアウトをビルドする"> 930 Building TV Layouts</a> 931 </li> 932 <li> 933 <a href="<?cs var:toroot ?>training/tv/start/navigation.html" 934 ja-lang="TV 用のナビゲーションを作成する"> 935 Creating TV Navigation</a> 936 </li> 937 </ul> 938 </li> 939 940 <li class="nav-section"> 941 <div class="nav-section-header"> 942 <a href="<?cs var:toroot ?>training/tv/playback/index.html" 943 ja-lang="TV 再生アプリのビルド" 944 description="How to build apps that provide media catalogs and play content."> 945 Building TV Playback Apps</a> 946 </div> 947 <ul> 948 <li> 949 <a href="<?cs var:toroot ?>training/tv/playback/browse.html" 950 ja-lang="カタログ ブラウザを作成する"> 951 Creating a Catalog Browser</a> 952 </li> 953 <li> 954 <a href="<?cs var:toroot ?>training/tv/playback/card.html"> 955 Providing a Card View</a> 956 </li> 957 <li> 958 <a href="<?cs var:toroot ?>training/tv/playback/details.html" 959 ja-lang="詳細ビューをビルドする"> 960 Building a Details View</a> 961 </li> 962 <li> 963 <a href="<?cs var:toroot ?>training/tv/playback/now-playing.html" 964 ja-lang="再生中カードを表示する"> 965 Displaying a Now Playing Card</a> 966 </li> 967 </ul> 968 </li> 969 970 <li class="nav-section"> 971 <div class="nav-section-header"> 972 <a href="<?cs var:toroot ?>training/tv/discovery/index.html" 973 description="How to help users discover content from your app."> 974 Helping Users Find Content on TV</a> 975 </div> 976 <ul> 977 <li> 978 <a href="<?cs var:toroot ?>training/tv/discovery/recommendations.html"> 979 Recommending TV Content</a> 980 </li> 981 <li> 982 <a href="<?cs var:toroot ?>training/tv/discovery/searchable.html"> 983 Making TV Apps Searchable</a> 984 <li> 985 <a href="<?cs var:toroot ?>training/tv/discovery/in-app-search.html"> 986 Searching within TV Apps</a> 987 </li> 988 </ul> 989 </li> 990 991 <li> 992 <a href="<?cs var:toroot ?>training/tv/games/index.html" 993 description="How to build games for TV."> 994 Building TV Games</a> 995 </li> 996 997 <li> 998 <a href="<?cs var:toroot ?>training/tv/tif/index.html" 999 description="How to build Live TV apps."> 1000 Building Live TV Apps</a> 1001 </li> 1002 1003 <li> 1004 <a href="<?cs var:toroot ?>training/tv/publishing/checklist.html" 1005 description="An itemized list of requirements for TV apps."> 1006 TV Apps Checklist</a> 1007 </li> 1008 </ul> 1009 </li> 1010 <!-- End: Building for TV --> 1011 1012 1013 <!-- Start: Building for Auto --> 1014 <li class="nav-section"> 1015 <div class="nav-section-header"> 1016 <a href="<?cs var:toroot ?>training/auto/index.html"> 1017 <span class="small">Building Apps for</span><br/> 1018 Auto 1019 </a> 1020 </div> 1021 <ul> 1022 <li> 1023 <a href="<?cs var:toroot ?>training/auto/start/index.html" 1024 description="How to start building or extending apps that work 1025 with Auto devices."> 1026 Getting Started with Auto</a> 1027 </li> 1028 <li> 1029 <a href="<?cs var:toroot ?>training/auto/audio/index.html" 1030 description="How to extend audio apps to play content on Auto devices."> 1031 Playing Audio for Auto</a> 1032 </li> 1033 <li> 1034 <a href="<?cs var:toroot ?>training/auto/messaging/index.html" 1035 description="How to extend text messaging apps to work with Auto devices."> 1036 Messaging for Auto</a> 1037 </li> 1038 </ul> 1039 </li> 1040 <!-- End: Building for Auto --> 1041 1042 1043 <li class="nav-section"> 1044 <div class="nav-section-header"> 1045 <a href="<?cs var:toroot ?>training/best-ux.html"> 1046 <span class="small">Best Practices for</span><br/> 1047 Interaction & Engagement 1048 </a> 1049 </div> 1050 <ul> 1051 1052 <li class="nav-section"> 1053 <div class="nav-section-header"> 1054 <a href="<?cs var:toroot ?>training/design-navigation/index.html" 1055 description= 1056 "How to plan your app's screen hierarchy and forms of navigation so users can 1057 effectively and intuitively traverse your app content using various navigation 1058 patterns." 1059 >Designing Effective Navigation</a> 1060 </div> 1061 <ul> 1062 <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html"> 1063 Planning Screens and Their Relationships 1064 </a> 1065 </li> 1066 <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html"> 1067 Planning for Multiple Touchscreen Sizes 1068 </a> 1069 </li> 1070 <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html"> 1071 Providing Descendant and Lateral Navigation 1072 </a> 1073 </li> 1074 <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html"> 1075 Providing Ancestral and Temporal Navigation 1076 </a> 1077 </li> 1078 <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html"> 1079 Putting it All Together: Wireframing the Example App 1080 </a> 1081 </li> 1082 </ul> 1083 </li> 1084 1085 <li class="nav-section"> 1086 <div class="nav-section-header"> 1087 <a href="<?cs var:toroot ?>training/implementing-navigation/index.html" 1088 description= 1089 "How to implement various navigation patterns such as swipe views, 1090 a navigation drawer, and up navigation." 1091 >Implementing Effective Navigation</a> 1092 </div> 1093 <ul> 1094 <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html"> 1095 Creating Swipe Views with Tabs 1096 </a> 1097 </li> 1098 <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html"> 1099 Creating a Navigation Drawer 1100 </a> 1101 </li> 1102 <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html"> 1103 Providing Up Navigation 1104 </a> 1105 </li> 1106 <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html"> 1107 Providing Proper Back Navigation 1108 </a> 1109 </li> 1110 <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html"> 1111 Implementing Descendant Navigation 1112 </a> 1113 </li> 1114 </ul> 1115 </li> 1116 1117 <li class="nav-section"> 1118 <div class="nav-section-header"> 1119 <a href="<?cs var:toroot ?>training/notify-user/index.html" 1120 description= 1121 "How to display messages called notifications outside of 1122 your application's UI." 1123 >Notifying the User</a> 1124 </div> 1125 <ul> 1126 <li> 1127 <a href="<?cs var:toroot ?>training/notify-user/build-notification.html"> 1128 Building a Notification 1129 </a> 1130 </li> 1131 <li> 1132 <a href="<?cs var:toroot ?>training/notify-user/navigation.html"> 1133 Preserving Navigation when Starting an Activity 1134 </a> 1135 </li> 1136 <li> 1137 <a href="<?cs var:toroot ?>training/notify-user/managing.html"> 1138 Updating Notifications 1139 </a> 1140 </li> 1141 <li> 1142 <a href="<?cs var:toroot ?>training/notify-user/expanded.html"> 1143 Using Big View Styles 1144 </a> 1145 </li> 1146 <li> 1147 <a href="<?cs var:toroot ?>training/notify-user/display-progress.html"> 1148 Displaying Progress in a Notification 1149 </a> 1150 </li> 1151 </ul> 1152 </li> 1153 1154 <li class="nav-section"> 1155 <div class="nav-section-header"> 1156 <a href="<?cs var:toroot ?>training/search/index.html" 1157 description= 1158 "How to properly add a search interface to your app and create a searchable database." 1159 >Adding Search Functionality</a> 1160 </div> 1161 <ul> 1162 <li><a href="<?cs var:toroot ?>training/search/setup.html"> 1163 Setting up the Search Interface 1164 </a> 1165 </li> 1166 <li><a href="<?cs var:toroot ?>training/search/search.html"> 1167 Storing and Searching for Data 1168 </a> 1169 </li> 1170 <li><a href="<?cs var:toroot ?>training/search/backward-compat.html"> 1171 Remaining Backward Compatible 1172 </a> 1173 </li> 1174 </ul> 1175 </li> 1176 1177 <li class="nav-section"> 1178 <div class="nav-section-header"> 1179 <a href="<?cs var:toroot ?>training/app-indexing/index.html" 1180 description= 1181 "How to enable deep linking and indexing of your application 1182 content so that users can open this content directly from their mobile search 1183 results." 1184 >Making Your App Content Searchable by Google</a> 1185 </div> 1186 <ul> 1187 <li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html"> 1188 Enabling Deep Links for App Content 1189 </a> 1190 </li> 1191 <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html"> 1192 Specifying App Content for Indexing 1193 </a> 1194 </li> 1195 </ul> 1196 </li> 1197 </ul> 1198 </li> 1199 <!-- End Interaction and Engagement --> 1200 1201 1202 1203 1204 <li class="nav-section"> 1205 <div class="nav-section-header"> 1206 <a href="<?cs var:toroot ?>training/best-ui.html"> 1207 <span class="small">Best Practices for</span><br/> 1208 User Interface 1209 </a> 1210 </div> 1211 <ul> 1212 1213 1214 <li class="nav-section"> 1215 <div class="nav-section-header"> 1216 <a href="<?cs var:toroot ?>training/multiscreen/index.html" 1217 zh-cn-lang="针对多种屏幕进行设计" 1218 ja-lang="複数画面のデザイン" 1219 es-lang="Cómo diseñar aplicaciones para varias pantallas" 1220 description= 1221 "How to build a user interface that's flexible enough to 1222 fit perfectly on any screen and how to create different interaction 1223 patterns that are optimized for different screen sizes." 1224 >Designing for Multiple Screens</a> 1225 </div> 1226 <ul> 1227 <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html" 1228 zh-cn-lang="支持各种屏幕尺寸" 1229 ko-lang="다양한 화면 크기 지원" 1230 ja-lang="さまざまな画面サイズのサポート" 1231 es-lang="Cómo admitir varios tamaños de pantalla" 1232 >Supporting Different Screen Sizes</a> 1233 </li> 1234 <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html" 1235 zh-cn-lang="支持各种屏幕密度" 1236 ja-lang="さまざまな画面密度のサポート" 1237 es-lang="Cómo admitir varias densidades de pantalla" 1238 >Supporting Different Screen Densities</a> 1239 </li> 1240 <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html" 1241 zh-cn-lang="实施自适应用户界面流程" 1242 ja-lang="順応性のある UI フローの実装" 1243 es-lang="Cómo implementar interfaces de usuario adaptables" 1244 >Implementing Adaptive UI Flows</a> 1245 </li> 1246 </ul> 1247 </li> 1248 1249 <li class="nav-section"> 1250 <div class="nav-section-header"> 1251 <a href="<?cs var:toroot ?>training/custom-views/index.html" 1252 description= 1253 "How to build custom UI widgets that are interactive and smooth." 1254 >Creating Custom Views</a> 1255 </div> 1256 <ul> 1257 <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html"> 1258 Creating a Custom View Class 1259 </a> 1260 </li> 1261 <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html"> 1262 Implementing Custom Drawing 1263 </a> 1264 </li> 1265 <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html"> 1266 Making the View Interactive 1267 </a> 1268 </li> 1269 <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html"> 1270 Optimizing the View 1271 </a> 1272 </li> 1273 </ul> 1274 </li> 1275 1276 <li class="nav-section"> 1277 <div class="nav-section-header"> 1278 <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html" 1279 description= 1280 "How to use UI components and other APIs from the more recent versions of Android 1281 while remaining compatible with older versions of the platform." 1282 >Creating Backward-Compatible UIs</a> 1283 </div> 1284 <ul> 1285 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html"> 1286 Abstracting the New APIs 1287 </a> 1288 </li> 1289 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html"> 1290 Proxying to the New APIs 1291 </a> 1292 </li> 1293 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html"> 1294 Creating an Implementation with Older APIs 1295 </a> 1296 </li> 1297 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html"> 1298 Using the Version-Aware Component 1299 </a> 1300 </li> 1301 </ul> 1302 </li> 1303 1304 <li class="nav-section"> 1305 <div class="nav-section-header"> 1306 <a href="<?cs var:toroot ?>training/accessibility/index.html" 1307 description= 1308 "How to make your app accessible to users with vision 1309 impairment or other physical disabilities." 1310 >Implementing Accessibility</a> 1311 </div> 1312 <ul> 1313 <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html"> 1314 Developing Accessible Applications 1315 </a> 1316 </li> 1317 <li><a href="<?cs var:toroot ?>training/accessibility/service.html"> 1318 Developing Accessibility Services 1319 </a> 1320 </li> 1321 </ul> 1322 </li> 1323 1324 <li class="nav-section"> 1325 <div class="nav-section-header"> 1326 <a href="<?cs var:toroot ?>training/system-ui/index.html" 1327 description= 1328 "How to hide and show status and navigation bars across different versions of Android, 1329 while managing the display of other screen components." 1330 >Managing the System UI</a> 1331 </div> 1332 <ul> 1333 <li><a href="<?cs var:toroot ?>training/system-ui/dim.html"> 1334 Dimming the System Bars 1335 </a> 1336 </li> 1337 <li><a href="<?cs var:toroot ?>training/system-ui/status.html"> 1338 Hiding the Status Bar 1339 </a> 1340 </li> 1341 <li><a href="<?cs var:toroot ?>training/system-ui/navigation.html"> 1342 Hiding the Navigation Bar 1343 </a> 1344 </li> 1345 <li><a href="<?cs var:toroot ?>training/system-ui/immersive.html"> 1346 Using Immersive Full-Screen Mode 1347 </a> 1348 </li> 1349 <li><a href="<?cs var:toroot ?>training/system-ui/visibility.html"> 1350 Responding to UI Visibility Changes 1351 </a> 1352 </li> 1353 </ul> 1354 </li> 1355 1356 <li class="nav-section"> 1357 <div class="nav-section-header"> 1358 <a href="<?cs var:toroot ?>training/material/index.html" 1359 description= 1360 "How to implement material design on Android." 1361 >Creating Apps with Material Design</a> 1362 </div> 1363 <ul> 1364 <li><a href="<?cs var:toroot ?>training/material/get-started.html"> 1365 Getting Started 1366 </a> 1367 </li> 1368 <li><a href="<?cs var:toroot ?>training/material/theme.html"> 1369 Using the Material Theme 1370 </a> 1371 </li> 1372 <li><a href="<?cs var:toroot ?>training/material/lists-cards.html"> 1373 Creating Lists and Cards 1374 </a> 1375 </li> 1376 <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html"> 1377 Defining Shadows and Clipping Views 1378 </a> 1379 </li> 1380 <li><a href="<?cs var:toroot ?>training/material/drawables.html"> 1381 Working with Drawables 1382 </a> 1383 </li> 1384 <li><a href="<?cs var:toroot ?>training/material/animations.html"> 1385 Defining Custom Animations 1386 </a> 1387 </li> 1388 <li><a href="<?cs var:toroot ?>training/material/compatibility.html"> 1389 Maintaining Compatibility 1390 </a> 1391 </li> 1392 </ul> 1393 </li> 1394 1395 </ul> 1396 </li> 1397 <!-- End User Interface --> 1398 1399 1400 1401 1402 <li class="nav-section"> 1403 <div class="nav-section-header"> 1404 <a href="<?cs var:toroot ?>training/best-user-input.html"> 1405 <span class="small">Best Practices for</span><br/> 1406 User Input 1407 </a> 1408 </div> 1409 <ul> 1410 1411 <li class="nav-section"> 1412 <div class="nav-section-header"> 1413 <a href="<?cs var:toroot ?>training/gestures/index.html" 1414 description= 1415 "How to write apps that allow users to interact with the touch screen via touch gestures." 1416 >Using Touch Gestures</a> 1417 </div> 1418 <ul> 1419 <li><a href="<?cs var:toroot ?>training/gestures/detector.html"> 1420 Detecting Common Gestures 1421 </a> 1422 </li> 1423 <li><a href="<?cs var:toroot ?>training/gestures/movement.html"> 1424 Tracking Movement 1425 </a> 1426 </li> 1427 <li><a href="<?cs var:toroot ?>training/gestures/scroll.html"> 1428 Animating a Scroll Gesture 1429 </a> 1430 </li> 1431 <li><a href="<?cs var:toroot ?>training/gestures/multi.html"> 1432 Handling Multi-Touch Gestures 1433 </a> 1434 </li> 1435 <li><a href="<?cs var:toroot ?>training/gestures/scale.html"> 1436 Dragging and Scaling 1437 </a> 1438 </li> 1439 <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html"> 1440 Managing Touch Events in a ViewGroup 1441 </a> 1442 </li> 1443 </ul> 1444 </li> 1445 1446 <li class="nav-section"> 1447 <div class="nav-section-header"> 1448 <a href="<?cs var:toroot ?>training/keyboard-input/index.html" 1449 description= 1450 "How to specify the appearance and behaviors of soft input methods (such 1451 as on-screen keyboards) and how to optimize the experience with 1452 hardware keyboards." 1453 >Handling Keyboard Input</a> 1454 </div> 1455 <ul> 1456 <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html"> 1457 Specifying the Input Method Type 1458 </a> 1459 </li> 1460 <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html"> 1461 Handling Input Method Visibility 1462 </a> 1463 </li> 1464 <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html"> 1465 Supporting Keyboard Navigation 1466 </a> 1467 </li> 1468 <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html"> 1469 Handling Keyboard Actions 1470 </a> 1471 </li> 1472 </ul> 1473 </li> 1474 1475 <li class="nav-section"> 1476 <div class="nav-section-header"> 1477 <a href="<?cs var:toroot ?>training/game-controllers/index.html" 1478 description= 1479 "How to write apps that support game controllers." 1480 >Supporting Game Controllers</a> 1481 </div> 1482 <ul> 1483 <li><a href="<?cs var:toroot ?>training/game-controllers/controller-input.html"> 1484 Handling Controller Actions 1485 </a> 1486 </li> 1487 <li><a href="<?cs var:toroot ?>training/game-controllers/compatibility.html"> 1488 Supporting Controllers Across Android Versions 1489 </a> 1490 </li> 1491 <li><a href="<?cs var:toroot ?>training/game-controllers/multiple-controllers.html"> 1492 Supporting Multiple Game Controllers 1493 </a> 1494 </li> 1495 </ul> 1496 </li> 1497 </ul> 1498 </li> <!-- end of User Input --> 1499 1500 <li class="nav-section"> 1501 <div class="nav-section-header"> 1502 <a href="<?cs var:toroot ?>training/best-background.html"> 1503 <span class="small">Best Practices for</span><br/> 1504 Background Jobs 1505 </a> 1506 </div> 1507 <ul> 1508 1509 <li class="nav-section"> 1510 <div class="nav-section-header"> 1511 <a href="<?cs var:toroot ?>training/run-background-service/index.html" 1512 description= 1513 "How to improve UI performance and responsiveness by sending work to a 1514 Service running in the background" 1515 >Running in a Background Service</a> 1516 </div> 1517 <ul> 1518 <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html"> 1519 Creating a Background Service 1520 </a> 1521 </li> 1522 <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html"> 1523 Sending Work Requests to the Background Service 1524 </a> 1525 </li> 1526 <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html"> 1527 Reporting Work Status 1528 </a> 1529 </li> 1530 </ul> 1531 </li> 1532 1533 <li class="nav-section"> 1534 <div class="nav-section-header"> 1535 <a href="<?cs var:toroot ?>training/load-data-background/index.html" 1536 description="How to use CursorLoader to query data without 1537 affecting UI responsiveness." 1538 >Loading Data in the Background</a> 1539 </div> 1540 <ul> 1541 <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html"> 1542 Running a Query with a CursorLoader</a> 1543 </li> 1544 <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html"> 1545 Handling the Results</a> 1546 </li> 1547 </ul> 1548 </li> 1549 1550 <li class="nav-section"> 1551 <div class="nav-section-header"> 1552 <a href="<?cs var:toroot ?>training/scheduling/index.html" 1553 description="How to use repeating alarms and wake locks 1554 to run background jobs." 1555 >Managing Device Awake State</a> 1556 </div> 1557 <ul> 1558 <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html"> 1559 Keeping the Device Awake</a> 1560 </li> 1561 <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html"> 1562 Scheduling Repeating Alarms</a> 1563 </li> 1564 </ul> 1565 </li> 1566 </ul> 1567 </li> <!-- end of Background Jobs --> 1568 1569 <li class="nav-section"> 1570 <div class="nav-section-header"> 1571 <a href="<?cs var:toroot ?>training/best-performance.html"> 1572 <span class="small">Best Practices for</span><br/> 1573 Performance 1574 </a> 1575 </div> 1576 <ul> 1577 1578 <li> 1579 <a href="<?cs var:toroot ?>training/articles/memory.html" 1580 description= 1581 "How to keep your app's memory footprint small in order to improve performance 1582 on a variety of mobile devices." 1583 >Managing Your App's Memory</a> 1584 </li> 1585 1586 <li> 1587 <a href="<?cs var:toroot ?>training/articles/perf-tips.html" 1588 description= 1589 "How to optimize your app's performance in various ways to improve its 1590 responsiveness and battery efficiency." 1591 >Performance Tips</a> 1592 </li> 1593 1594 <li class="nav-section"> 1595 <div class="nav-section-header"> 1596 <a href="<?cs var:toroot ?>training/improving-layouts/index.html" 1597 description= 1598 "How to identify problems in your app's layout performance and improve the UI 1599 responsiveness." 1600 >Improving Layout Performance</a> 1601 </div> 1602 <ul> 1603 <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html"> 1604 Optimizing Layout Hierarchies 1605 </a> 1606 </li> 1607 <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html"> 1608 Re-using Layouts with <include/> 1609 </a> 1610 </li> 1611 <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html"> 1612 Loading Views On Demand 1613 </a> 1614 </li> 1615 <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html"> 1616 Making ListView Scrolling Smooth 1617 </a> 1618 </li> 1619 </ul> 1620 </li> 1621 1622 <li class="nav-section"> 1623 <div class="nav-section-header"> 1624 <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html" 1625 zh-cn-lang="优化电池使用时间" 1626 ja-lang="電池消費量の最適化" 1627 es-lang="Cómo optimizar la duración de la batería" 1628 description= 1629 "How to minimize the amount of power your app requires by adapting to current 1630 power conditions and performing power-hungry tasks at proper intervals." 1631 >Optimizing Battery Life</a> 1632 </div> 1633 <ul> 1634 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html" 1635 zh-cn-lang="监控电池电量和充电状态" 1636 ja-lang="電池残量と充電状態の監視" 1637 es-lang="Cómo controlar el nivel de batería y el estado de carga" 1638 >Monitoring the Battery Level and Charging State</a> 1639 </li> 1640 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html" 1641 zh-cn-lang="确定和监控基座对接状态和类型" 1642 ja-lang="ホルダーの装着状態とタイプの特定と監視" 1643 es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión" 1644 >Determining and Monitoring the Docking State and Type</a> 1645 </li> 1646 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html" 1647 zh-cn-lang="确定和监控网络连接状态" 1648 ja-lang="接続状態の特定と監視" 1649 es-lang="Cómo determinar y controlar el estado de la conectividad" 1650 >Determining and Monitoring the Connectivity Status</a> 1651 </li> 1652 <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html" 1653 zh-cn-lang="根据需要操作广播接收器" 1654 ja-lang="オンデマンドでのブロードキャスト レシーバ操作" 1655 es-lang="Cómo manipular los receptores de emisión bajo demanda" 1656 >Manipulating Broadcast Receivers On Demand</a> 1657 </li> 1658 </ul> 1659 </li> 1660 <li class="nav-section"> 1661 <div class="nav-section-header"> 1662 <a href="<?cs var:toroot ?>training/multiple-threads/index.html" 1663 description= 1664 "How to improve the performance and scalability of long-running operations by 1665 dispatching work to multiple threads."> 1666 Sending Operations to Multiple Threads</a> 1667 </div> 1668 <ul> 1669 <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html"> 1670 Specifying the Code to Run on a Thread 1671 </a> 1672 </li> 1673 <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html"> 1674 Creating a Manager for Multiple Threads 1675 </a> 1676 </li> 1677 <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html"> 1678 Running Code on a Thread Pool Thread 1679 </a> 1680 </li> 1681 <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html"> 1682 Communicating with the UI Thread 1683 </a> 1684 </li> 1685 </ul> 1686 </li> 1687 1688 <li> 1689 <a href="<?cs var:toroot ?>training/articles/perf-anr.html" 1690 description= 1691 "How to keep your app responsive to user interaction so the UI does not lock-up and 1692 display an "Application Not Responding" dialog." 1693 >Keeping Your App Responsive</a> 1694 </li> 1695 1696 <li> 1697 <a href="<?cs var:toroot ?>training/articles/perf-jni.html" 1698 description= 1699 "How to efficiently use the Java Native Interface with the Android NDK." 1700 >JNI Tips</a> 1701 </li> 1702 <li> 1703 <a href="<?cs var:toroot ?>training/articles/smp.html" 1704 description= 1705 "Tips for coding Android apps on symmetric multiprocessor systems." 1706 >SMP Primer for Android</a> 1707 </li> 1708 </ul> 1709 </li> <!-- end of Performance --> 1710 1711 1712 1713 <li class="nav-section"> 1714 <div class="nav-section-header"> 1715 <a href="<?cs var:toroot ?>training/best-security.html"> 1716 <span class="small">Best Practices for</span><br/> 1717 Security & Privacy 1718 </a> 1719 </div> 1720 <ul> 1721 <li> 1722 <a href="<?cs var:toroot ?>training/articles/security-tips.html" 1723 description= 1724 "How to perform various tasks and keep your app's data and your user's data secure." 1725 >Security Tips</a> 1726 </li> 1727 1728 <li> 1729 <a href="<?cs var:toroot ?>training/articles/security-ssl.html" 1730 description= 1731 "How to ensure that your app is secure when performing network transactions." 1732 >Security with HTTPS and SSL</a> 1733 </li> 1734 1735 <li> 1736 <a href="<?cs var:toroot ?>training/articles/security-gms-provider.html" 1737 description= 1738 "How to use and update Google Play services security provider, to 1739 protect against SSL exploits." 1740 >Updating Your Security Provider to Protect Against SSL Exploits</a> 1741 </li> 1742 1743 <li class="nav-section"> 1744 <div class="nav-section-header"> 1745 <a href="<?cs var:toroot ?>training/enterprise/index.html" 1746 description= 1747 "How to implement device management policies for enterprise-oriented apps." 1748 >Developing for Enterprise</a> 1749 </div> 1750 <ul> 1751 <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html"> 1752 Enhancing Security with Device Management Policies 1753 </a> 1754 </li> 1755 <li><a href="<?cs var:toroot ?>training/enterprise/app-compatibility.html"> 1756 Ensuring Compatibility with Managed Profiles 1757 </a> 1758 </li> 1759 </ul> 1760 </li> 1761 </ul> 1762 </li> 1763 <!-- End security and user info --> 1764 1765 <li class="nav-section"> 1766 <div class="nav-section-header"> 1767 <a href="<?cs var:toroot ?>training/testing.html"> 1768 <span class="small">Best Practices for</span><br/> 1769 Testing 1770 </a> 1771 </div> 1772 <ul> 1773 <li class="nav-section"> 1774 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/activity-testing/index.html" 1775 description="How to test Activities in your Android applications."> 1776 Testing Your Activity 1777 </a></div> 1778 <ul> 1779 <li><a href="<?cs var:toroot ?>training/activity-testing/preparing-activity-testing.html"> 1780 <span class="en">Setting Up Your Test Environment</span> 1781 </a> 1782 </li> 1783 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-basic-testing.html"> 1784 <span class="en">Creating and Running a Test Case</span> 1785 </a> 1786 </li> 1787 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-ui-testing.html"> 1788 <span class="en">Testing UI Components</span> 1789 </a> 1790 </li> 1791 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-unit-testing.html"> 1792 <span class="en">Creating Unit Tests</span> 1793 </a> 1794 </li> 1795 <li><a href="<?cs var:toroot ?>training/activity-testing/activity-functional-testing.html"> 1796 <span class="en">Creating Functional Tests</span> 1797 </a> 1798 </li> 1799 </ul> 1800 </li> 1801 </ul> 1802 </li> 1803 <!-- End best Testing --> 1804 1805 <li class="nav-section"> 1806 <div class="nav-section-header"> 1807 <a href="<?cs var:toroot ?>training/distribute.html"> 1808 <span class="small">Using Google Play to</span><br/> 1809 Distribute & Monetize 1810 </a> 1811 </div> 1812 <ul> 1813 <li class="nav-section"> 1814 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html" 1815 description="How to sell in-app products from your application using In-app Billing."> 1816 Selling In-app Products 1817 </a></div> 1818 <ul> 1819 <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html"> 1820 <span class="en">Preparing Your App</span> 1821 </a> 1822 </li> 1823 <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html"> 1824 <span class="en">Establishing Products for Sale</span> 1825 </a> 1826 </li> 1827 <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html"> 1828 <span class="en">Purchasing Products</span> 1829 </a> 1830 </li> 1831 <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html"> 1832 <span class="en">Testing Your App</span> 1833 </a> 1834 </li> 1835 </ul> 1836 </li> 1837 1838 <li class="nav-section"> 1839 <div class="nav-section-header"> 1840 <a href="<?cs var:toroot ?>training/multiple-apks/index.html" 1841 description= 1842 "How to publish your app on Google Play with separate APKs that target 1843 different devices, while using a single app listing." 1844 >Maintaining Multiple APKs</a> 1845 </div> 1846 <ul> 1847 <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html"> 1848 Creating Multiple APKs for Different API Levels 1849 </a> 1850 </li> 1851 <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html"> 1852 Creating Multiple APKs for Different Screen Sizes 1853 </a> 1854 </li> 1855 <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html"> 1856 Creating Multiple APKs for Different GL Textures 1857 </a> 1858 </li> 1859 <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html"> 1860 Creating Multiple APKs with 2+ Dimensions 1861 </a> 1862 </li> 1863 </ul> 1864 </li> 1865 <li class="nav-section"> 1866 <div class="nav-section-header"> 1867 <a href="<?cs var:toroot ?>training/monetization/index.html" 1868 description= 1869 "How to implement monetization strategies for your app without compromising 1870 the user experience." 1871 >Monetizing Your App</a> 1872 </div> 1873 <ul> 1874 <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html"> 1875 Advertising without Compromising User Experience 1876 </a> 1877 </li> 1878 </ul> 1879 </li> 1880 </ul> 1881 </li> 1882 <!-- End best Publishing --> 1883 1884 </ul><!-- nav --> 1885 <script type="text/javascript"> 1886 <!-- 1887 buildToggleLists(); 1888 changeNavLang(getLangPref()); 1889 //--> 1890 </script>