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