training_toc.cs revision 421435d2bede2788b74b07b1bab893fef98047c5
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 <li class="nav-section"> 484 <div class="nav-section-header"> 485 <a href="<?cs var:toroot ?>training/contacts-provider/index.html" 486 description= 487 "How to use Android's central address book, the Contacts Provider, to 488 display contacts and their details and modify contact information."> 489 Accessing Contacts Data</a> 490 </div> 491 <ul> 492 <li> 493 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html"> 494 Retrieving a List of Contacts 495 </a> 496 </li> 497 <li> 498 <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html"> 499 Retrieving Details for a Contact 500 </a> 501 </li> 502 <li> 503 <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html"> 504 Modifying Contacts Using Intents 505 </a> 506 </li> 507 <li> 508 <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html"> 509 Displaying the Quick Contact Badge 510 </a> 511 </li> 512 </ul> 513 </li> 514 <li class="nav-section"> 515 <div class="nav-section-header"> 516 <a href="<?cs var:toroot ?>training/id-auth/index.html" 517 description= 518 "How to remember the user by account, authenticate the user, acquire user permission 519 for the user's online data, and create custom accounts on the device." 520 >Remembering Users</a> 521 </div> 522 <ul> 523 <li><a href="<?cs var:toroot ?>training/id-auth/identify.html"> 524 Remembering Your User 525 </a> 526 </li> 527 <li><a href="<?cs var:toroot ?>training/id-auth/authenticate.html"> 528 Authenticating to OAuth2 Services 529 </a> 530 </li> 531 <li><a href="<?cs var:toroot ?>training/id-auth/custom_auth.html"> 532 Creating a Custom Account Type 533 </a> 534 </li> 535 </ul> 536 </li> 537 538 <li class="nav-section"> 539 <div class="nav-section-header"> 540 <a href="<?cs var:toroot ?>training/basics/location/index.html" 541 description= 542 "How to add location-aware features to your app by aqcuiring the user's current 543 location." 544 >Making Your App Location Aware</a> 545 </div> 546 <ul> 547 <li><a href="<?cs var:toroot ?>training/basics/location/locationmanager.html"> 548 Using the Location Manager 549 </a> 550 </li> 551 <li><a href="<?cs var:toroot ?>training/basics/location/currentlocation.html"> 552 Obtaining the Current Location 553 </a> 554 </li> 555 <li><a href="<?cs var:toroot ?>training/basics/location/geocoding.html"> 556 Displaying a Location Address 557 </a> 558 </li> 559 </ul> 560 </li> 561 </ul> 562 </li> 563 <!-- End privacy and location --> 564 565 566 567 <li class="nav-section"> 568 <div class="nav-section-header"> 569 <a href="<?cs var:toroot ?>training/best-ux.html"> 570 <span class="small">Best Practices for</span><br/> 571 User Experience & UI 572 </a> 573 </div> 574 <ul> 575 576 <li class="nav-section"> 577 <div class="nav-section-header"> 578 <a href="<?cs var:toroot ?>training/design-navigation/index.html" 579 description= 580 "How to plan your app's screen hierarchy and forms of navigation so users can 581 effectively and intuitively traverse your app content using various navigation 582 patterns." 583 >Designing Effective Navigation</a> 584 </div> 585 <ul> 586 <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html"> 587 Planning Screens and Their Relationships 588 </a> 589 </li> 590 <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html"> 591 Planning for Multiple Touchscreen Sizes 592 </a> 593 </li> 594 <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html"> 595 Providing Descendant and Lateral Navigation 596 </a> 597 </li> 598 <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html"> 599 Providing Ancestral and Temporal Navigation 600 </a> 601 </li> 602 <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html"> 603 Putting it All Together: Wireframing the Example App 604 </a> 605 </li> 606 </ul> 607 </li> 608 609 <li class="nav-section"> 610 <div class="nav-section-header"> 611 <a href="<?cs var:toroot ?>training/implementing-navigation/index.html" 612 description= 613 "How to implement various navigation patterns such as swipe views and up navigation." 614 >Implementing Effective Navigation</a> 615 </div> 616 <ul> 617 <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html"> 618 Implementing Lateral Navigation 619 </a> 620 </li> 621 <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html"> 622 Implementing Ancestral Navigation 623 </a> 624 </li> 625 <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html"> 626 Implementing Temporal Navigation 627 </a> 628 </li> 629 <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html"> 630 Implementing Descendant Navigation 631 </a> 632 </li> 633 </ul> 634 </li> 635 636 <li class="nav-section"> 637 <div class="nav-section-header"> 638 <a href="<?cs var:toroot ?>training/notify-user/index.html" 639 description= 640 "How to display messages called notifications outside of 641 your application's UI." 642 >Notifying the User</a> 643 </div> 644 <ul> 645 <li> 646 <a href="<?cs var:toroot ?>training/notify-user/build-notification.html"> 647 Building a Notification 648 </a> 649 </li> 650 <li> 651 <a href="<?cs var:toroot ?>training/notify-user/navigation.html"> 652 Preserving Navigation when Starting an Activity 653 </a> 654 </li> 655 <li> 656 <a href="<?cs var:toroot ?>training/notify-user/managing.html"> 657 Updating Notifications 658 </a> 659 </li> 660 <li> 661 <a href="<?cs var:toroot ?>training/notify-user/expanded.html"> 662 Using Big View Styles 663 </a> 664 </li> 665 <li> 666 <a href="<?cs var:toroot ?>training/notify-user/display-progress.html"> 667 Displaying Progress in a Notification 668 </a> 669 </li> 670 </ul> 671 </li> 672 673 <li class="nav-section"> 674 <div class="nav-section-header"> 675 <a href="<?cs var:toroot ?>training/search/index.html" 676 description= 677 "How to properly add a search interface to your app and create a searchable database." 678 >Adding Search Functionality</a> 679 </div> 680 <ul> 681 <li><a href="<?cs var:toroot ?>training/search/setup.html"> 682 Setting up the Search Interface 683 </a> 684 </li> 685 <li><a href="<?cs var:toroot ?>training/search/search.html"> 686 Storing and Searching for Data 687 </a> 688 </li> 689 <li><a href="<?cs var:toroot ?>training/search/backward-compat.html"> 690 Remaining Backward Compatible 691 </a> 692 </li> 693 </ul> 694 </li> 695 696 697 <li class="nav-section"> 698 <div class="nav-section-header"> 699 <a href="/training/multiscreen/index.html" 700 zh-CN-lang="针对多种屏幕进行设计" 701 ja-lang="複数画面のデザイン" 702 es-lang="Cómo diseñar aplicaciones para varias pantallas" 703 description= 704 "How to build a user interface that's flexible enough to 705 fit perfectly on any screen and how to create different interaction 706 patterns that are optimized for different screen sizes." 707 >Designing for Multiple Screens</a> 708 </div> 709 <ul> 710 <li><a href="/training/multiscreen/screensizes.html" 711 zh-CN-lang="支持各种屏幕尺寸" 712 ko-lang="다양한 화면 크기 지원" 713 ja-lang="さまざまな画面サイズのサポート" 714 es-lang="Cómo admitir varios tamaños de pantalla" 715 >Supporting Different Screen Sizes</a> 716 </li> 717 <li><a href="/training/multiscreen/screendensities.html" 718 zh-CN-lang="支持各种屏幕密度" 719 ja-lang="さまざまな画面密度のサポート" 720 es-lang="Cómo admitir varias densidades de pantalla" 721 >Supporting Different Screen Densities</a> 722 </li> 723 <li><a href="/training/multiscreen/adaptui.html" 724 zh-CN-lang="实施自适应用户界面流程" 725 ja-lang="順応性のある UI フローの実装" 726 es-lang="Cómo implementar interfaces de usuario adaptables" 727 >Implementing Adaptive UI Flows</a> 728 </li> 729 </ul> 730 </li> 731 732 <li class="nav-section"> 733 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/tv/index.html" 734 description= 735 "How to optimize your app's user interface and user input for 736 the "ten foot experience" of a TV screen." 737 >Designing for TV</a> 738 </div> 739 <ul> 740 <li><a href="<?cs var:toroot ?>training/tv/optimizing-layouts-tv.html"> 741 Optimizing Layouts for TV 742 </a> 743 </li> 744 <li><a href="<?cs var:toroot ?>training/tv/optimizing-navigation-tv.html"> 745 Optimizing Navigation for TV 746 </a> 747 </li> 748 <li><a href="<?cs var:toroot ?>training/tv/unsupported-features-tv.html"> 749 Handling Features Not Supported on TV 750 </a> 751 </li> 752 </ul> 753 </li> 754 755 <li class="nav-section"> 756 <div class="nav-section-header"> 757 <a href="<?cs var:toroot ?>training/custom-views/index.html" 758 description= 759 "How to build custom UI widgets that are interactive and smooth." 760 >Creating Custom Views</a> 761 </div> 762 <ul> 763 <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html"> 764 Creating a Custom View Class 765 </a> 766 </li> 767 <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html"> 768 Implementing Custom Drawing 769 </a> 770 </li> 771 <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html"> 772 Making the View Interactive 773 </a> 774 </li> 775 <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html"> 776 Optimizing the View 777 </a> 778 </li> 779 </ul> 780 </li> 781 782 <li class="nav-section"> 783 <div class="nav-section-header"> 784 <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html" 785 description= 786 "How to use UI components and other APIs from the more recent versions of Android 787 while remaining compatible with older versions of the platform." 788 >Creating Backward-Compatible UIs</a> 789 </div> 790 <ul> 791 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html"> 792 Abstracting the New APIs 793 </a> 794 </li> 795 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html"> 796 Proxying to the New APIs 797 </a> 798 </li> 799 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html"> 800 Creating an Implementation with Older APIs 801 </a> 802 </li> 803 <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html"> 804 Using the Version-Aware Component 805 </a> 806 </li> 807 </ul> 808 </li> 809 810 <li class="nav-section"> 811 <div class="nav-section-header"> 812 <a href="<?cs var:toroot ?>training/accessibility/index.html" 813 description= 814 "How to make your app accessible to users with vision 815 impairment or other physical disabilities." 816 >Implementing Accessibility</a> 817 </div> 818 <ul> 819 <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html"> 820 Developing Accessible Applications 821 </a> 822 </li> 823 <li><a href="<?cs var:toroot ?>training/accessibility/service.html"> 824 Developing Accessibility Services 825 </a> 826 </li> 827 </ul> 828 </li> 829 830 </ul> 831 </li> 832 <!-- End best UX and UI --> 833 834 835 <li class="nav-section"> 836 <div class="nav-section-header"> 837 <a href="<?cs var:toroot ?>training/best-user-input.html"> 838 <span class="small">Best Practices for</span><br/> 839 User Input 840 </a> 841 </div> 842 <ul> 843 844 <li class="nav-section"> 845 <div class="nav-section-header"> 846 <a href="<?cs var:toroot ?>training/gestures/index.html" 847 description= 848 "How to write apps that allow users to interact with the touch screen via touch gestures." 849 >Using Touch Gestures</a> 850 </div> 851 <ul> 852 <li><a href="<?cs var:toroot ?>training/gestures/detector.html"> 853 Detecting Common Gestures 854 </a> 855 </li> 856 <li><a href="<?cs var:toroot ?>training/gestures/movement.html"> 857 Tracking Movement 858 </a> 859 </li> 860 <li><a href="<?cs var:toroot ?>training/gestures/scroll.html"> 861 Animating a Scroll Gesture 862 </a> 863 </li> 864 <li><a href="<?cs var:toroot ?>training/gestures/multi.html"> 865 Handling Multi-Touch Gestures 866 </a> 867 </li> 868 <li><a href="<?cs var:toroot ?>training/gestures/scale.html"> 869 Dragging and Scaling 870 </a> 871 </li> 872 <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html"> 873 Managing Touch Events in a ViewGroup 874 </a> 875 </li> 876 </ul> 877 </li> 878 879 <li class="nav-section"> 880 <div class="nav-section-header"> 881 <a href="<?cs var:toroot ?>training/keyboard-input/index.html" 882 description= 883 "How to specify the appearance and behaviors of soft input methods (such 884 as on-screen keyboards) and how to optimize the experience with 885 hardware keyboards." 886 >Handling Keyboard Input</a> 887 </div> 888 <ul> 889 <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html"> 890 Specifying the Input Method Type 891 </a> 892 </li> 893 <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html"> 894 Handling Input Method Visibility 895 </a> 896 </li> 897 <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html"> 898 Supporting Keyboard Navigation 899 </a> 900 </li> 901 <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html"> 902 Handling Keyboard Actions 903 </a> 904 </li> 905 </ul> 906 </li> 907 </ul> 908 </li> <!-- end of User Input --> 909 910 <li class="nav-section"> 911 <div class="nav-section-header"> 912 <a href="<?cs var:toroot ?>training/best-performance.html"> 913 <span class="small">Best Practices for</span><br/> 914 Performance 915 </a> 916 </div> 917 <ul> 918 919 <li> 920 <a href="<?cs var:toroot ?>training/articles/perf-tips.html" 921 description= 922 "How to optimize your app's performance in various ways to improve its 923 responsiveness and battery efficiency." 924 >Performance Tips</a> 925 </li> 926 927 <li class="nav-section"> 928 <div class="nav-section-header"> 929 <a href="<?cs var:toroot ?>training/improving-layouts/index.html" 930 description= 931 "How to identify problems in your app's layout performance and improve the UI 932 responsiveness." 933 >Improving Layout Performance</a> 934 </div> 935 <ul> 936 <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html"> 937 Optimizing Layout Hierarchies 938 </a> 939 </li> 940 <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html"> 941 Re-using Layouts with <include/> 942 </a> 943 </li> 944 <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html"> 945 Loading Views On Demand 946 </a> 947 </li> 948 <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html"> 949 Making ListView Scrolling Smooth 950 </a> 951 </li> 952 </ul> 953 </li> 954 955 <li class="nav-section"> 956 <div class="nav-section-header"> 957 <a href="<?cs var:toroot ?>training/run-background-service/index.html" 958 description= 959 "How to improve UI performance and responsiveness by sending work to a 960 Service running in the background" 961 >Running in a Background Service</a> 962 </div> 963 <ul> 964 <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html"> 965 Creating a Background Service 966 </a> 967 </li> 968 <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html"> 969 Sending Work Requests to the Background Service 970 </a> 971 </li> 972 <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html"> 973 Reporting Work Status 974 </a> 975 </li> 976 </ul> 977 </li> 978 979 <li class="nav-section"> 980 <div class="nav-section-header"> 981 <a href="<?cs var:toroot ?>training/load-data-background/index.html" 982 description="How to use CursorLoader to query data without 983 affecting UI responsiveness." 984 >Loading Data in the Background</a> 985 </div> 986 <ul> 987 <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html"> 988 Running a Query with a CursorLoader</a> 989 </li> 990 <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html"> 991 Handling the Results</a> 992 </li> 993 </ul> 994 </li> 995 996 <li class="nav-section"> 997 <div class="nav-section-header"> 998 <a href="/training/monitoring-device-state/index.html" 999 zh-CN-lang="优化电池使用时间" 1000 ja-lang="電池消費量の最適化" 1001 es-lang="Cómo optimizar la duración de la batería" 1002 description= 1003 "How to minimize the amount of power your app requires by adapting to current 1004 power conditions and performing power-hungry tasks at proper intervals." 1005 >Optimizing Battery Life</a> 1006 </div> 1007 <ul> 1008 <li><a href="/training/monitoring-device-state/battery-monitoring.html" 1009 zh-CN-lang="监控电池电量和充电状态" 1010 ja-lang="電池残量と充電状態の監視" 1011 es-lang="Cómo controlar el nivel de batería y el estado de carga" 1012 >Monitoring the Battery Level and Charging State</a> 1013 </li> 1014 <li><a href="/training/monitoring-device-state/docking-monitoring.html" 1015 zh-CN-lang="确定和监控基座对接状态和类型" 1016 ja-lang="ホルダーの装着状態とタイプの特定と監視" 1017 es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión" 1018 >Determining and Monitoring the Docking State and Type</a> 1019 </li> 1020 <li><a href="/training/monitoring-device-state/connectivity-monitoring.html" 1021 zh-CN-lang="确定和监控网络连接状态" 1022 ja-lang="接続状態の特定と監視" 1023 es-lang="Cómo determinar y controlar el estado de la conectividad" 1024 >Determining and Monitoring the Connectivity Status</a> 1025 </li> 1026 <li><a href="/training/monitoring-device-state/manifest-receivers.html" 1027 zh-CN-lang="根据需要操作广播接收器" 1028 ja-lang="オンデマンドでのブロードキャスト レシーバ操作" 1029 es-lang="Cómo manipular los receptores de emisión bajo demanda" 1030 >Manipulating Broadcast Receivers On Demand</a> 1031 </li> 1032 </ul> 1033 </li> 1034 <li class="nav-section"> 1035 <div class="nav-section-header"> 1036 <a href="<?cs var:toroot ?>training/multiple-threads/index.html" 1037 description= 1038 "How to improve the performance and scalability of long-running operations by 1039 dispatching work to multiple threads."> 1040 Sending Operations to Multiple Threads</a> 1041 </div> 1042 <ul> 1043 <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html"> 1044 Specifying the Code to Run on a Thread 1045 </a> 1046 </li> 1047 <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html"> 1048 Creating a Manager for Multiple Threads 1049 </a> 1050 </li> 1051 <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html"> 1052 Running Code on a Thread Pool Thread 1053 </a> 1054 </li> 1055 <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html"> 1056 Communicating with the UI Thread 1057 </a> 1058 </li> 1059 </ul> 1060 </li> 1061 1062 <li> 1063 <a href="<?cs var:toroot ?>training/articles/perf-anr.html" 1064 description= 1065 "How to keep your app responsive to user interaction so the UI does not lock-up and 1066 display an "Application Not Responding" dialog." 1067 >Keeping Your App Responsive</a> 1068 </li> 1069 1070 <li> 1071 <a href="<?cs var:toroot ?>training/articles/perf-jni.html" 1072 description= 1073 "How to efficiently use the Java Native Interface with the Android NDK." 1074 >JNI Tips</a> 1075 </li> 1076 <li> 1077 <a href="<?cs var:toroot ?>training/articles/smp.html" 1078 description= 1079 "Tips for coding Android apps on symmetric multiprocessor systems." 1080 >SMP Primer for Android</a> 1081 </li> 1082 </ul> 1083 </li> <!-- end of Performance --> 1084 1085 1086 1087 <li class="nav-section"> 1088 <div class="nav-section-header"> 1089 <a href="<?cs var:toroot ?>training/best-security.html"> 1090 <span class="small">Best Practices for</span><br/> 1091 Security & Privacy 1092 </a> 1093 </div> 1094 <ul> 1095 1096 <li> 1097 <a href="<?cs var:toroot ?>training/articles/security-tips.html" 1098 description= 1099 "How to perform various tasks and keep your app's data and your user's data secure." 1100 >Security Tips</a> 1101 </li> 1102 1103 <li> 1104 <a href="<?cs var:toroot ?>training/articles/security-ssl.html" 1105 description= 1106 "How to ensure that your app is secure when performing network transactions." 1107 >Security with HTTPS and SSL</a> 1108 </li> 1109 1110 <li class="nav-section"> 1111 <div class="nav-section-header"> 1112 <a href="<?cs var:toroot ?>training/enterprise/index.html" 1113 description= 1114 "How to implement device management policies for enterprise-oriented apps." 1115 >Developing for Enterprise</a> 1116 </div> 1117 <ul> 1118 <li><a href="<?cs var:toroot ?>training/enterprise/device-management-policy.html"> 1119 Enhancing Security with Device Management Policies 1120 </a> 1121 </li> 1122 </ul> 1123 </li> 1124 </ul> 1125 </li> 1126 <!-- End security and user info --> 1127 1128 1129 <li class="nav-section"> 1130 <div class="nav-section-header"> 1131 <a href="<?cs var:toroot ?>training/distribute.html"> 1132 <span class="small">Using Google Play to</span><br/> 1133 Distribute & Monetize 1134 </a> 1135 </div> 1136 <ul> 1137 <li class="nav-section"> 1138 <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html" 1139 description="How to sell in-app products from your application using In-app Billing."> 1140 Selling In-app Products 1141 </a></div> 1142 <ul> 1143 <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html"> 1144 <span class="en">Preparing Your App</span> 1145 </a> 1146 </li> 1147 <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html"> 1148 <span class="en">Establishing Products for Sale</span> 1149 </a> 1150 </li> 1151 <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html"> 1152 <span class="en">Purchasing Products</span> 1153 </a> 1154 </li> 1155 <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html"> 1156 <span class="en">Testing Your App</span> 1157 </a> 1158 </li> 1159 </ul> 1160 </li> 1161 1162 <li class="nav-section"> 1163 <div class="nav-section-header"> 1164 <a href="<?cs var:toroot ?>training/multiple-apks/index.html" 1165 description= 1166 "How to publish your app on Google Play with separate APKs that target 1167 different devices, while using a single app listing." 1168 >Maintaining Multiple APKs</a> 1169 </div> 1170 <ul> 1171 <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html"> 1172 Creating Multiple APKs for Different API Levels 1173 </a> 1174 </li> 1175 <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html"> 1176 Creating Multiple APKs for Different Screen Sizes 1177 </a> 1178 </li> 1179 <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html"> 1180 Creating Multiple APKs for Different GL Textures 1181 </a> 1182 </li> 1183 <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html"> 1184 Creating Multiple APKs with 2+ Dimensions 1185 </a> 1186 </li> 1187 </ul> 1188 </li> 1189 <li class="nav-section"> 1190 <div class="nav-section-header"> 1191 <a href="<?cs var:toroot ?>training/monetization/index.html" 1192 description= 1193 "How to implement monetization strategies for your app without compromising 1194 the user experience." 1195 >Monetizing Your App</a> 1196 </div> 1197 <ul> 1198 <li><a href="<?cs var:toroot ?>training/monetization/ads-and-ux.html"> 1199 Advertising without Compromising User Experience 1200 </a> 1201 </li> 1202 </ul> 1203 </li> 1204 </ul> 1205 </li> 1206 <!-- End best Publishing --> 1207 1208</ul><!-- nav --> 1209<script type="text/javascript"> 1210<!-- 1211 buildToggleLists(); 1212 changeNavLang(getLangPref()); 1213//--> 1214</script> 1215