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