<ul id="nav"> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/index.html"> Getting Started </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/basics/firstapp/index.html" description= "After you've installed the Android SDK, start with this class to learn the basics about Android app development." >Building Your First App</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/basics/firstapp/creating-project.html"> Creating an Android Project </a> </li> <li><a href="<?cs var:toroot ?>training/basics/firstapp/running-app.html"> Running Your Application </a> </li> <li><a href="<?cs var:toroot ?>training/basics/firstapp/building-ui.html"> Building a Simple User Interface </a> </li> <li><a href="<?cs var:toroot ?>training/basics/firstapp/starting-activity.html"> Starting Another Activity </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/basics/supporting-devices/index.html" description= "How to build your app with alternative resources that provide an optimized user experience on multiple device form factors using a single APK." >Supporting Different Devices</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/languages.html"> Supporting Different Languages </a> </li> <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/screens.html"> Supporting Different Screens </a> </li> <li><a href="<?cs var:toroot ?>training/basics/supporting-devices/platforms.html"> Supporting Different Platform Versions </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/basics/activity-lifecycle/index.html" ja-lang="アクティビティのライフサイクル 管理" ko-lang="액티비티 수명 주기 관리하기" pt-br-lang="Como gerenciar o ciclo de vida da atividade" ru-lang="Управление жизненным циклом операций" zh-cn-lang="管理活动生命周期" zh-tw-lang="管理應用行為顯示生命週期" description= "How Android activities live and die and how to create a seamless user experience by implementing lifecycle callback methods." >Managing the Activity Lifecycle</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/starting.html" ja-lang="アクティビティを開始する" ko-lang="액티비티 시작하기" pt-br-lang="Iniciando uma atividade" ru-lang="Запуск операции" zh-cn-lang="开始活动" zh-tw-lang="啟動應用行為顯示"> Starting an Activity </a> </li> <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/pausing.html"> Pausing and Resuming an Activity </a> </li> <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/stopping.html" ja-lang="アクティビティの一時停止と再開" ko-lang="액티비티 일시정지 및 재개하기" pt-br-lang="Pausando e reiniciando uma atividade" ru-lang="Приостановка и возобновление операции" zh-cn-lang="暂停和继续活动" zh-tw-lang="暫停並繼續應用行為顯示"> Stopping and Restarting an Activity </a> </li> <li><a href="<?cs var:toroot ?>training/basics/activity-lifecycle/recreating.html" ja-lang="アクティビティを再作成する" ko-lang="액티비티 재생성하기" pt-br-lang="Recriando uma atividade" ru-lang="Воссоздание операции" zh-cn-lang="重新创建活动" zh-tw-lang="重新建立應用行為顯示"> Recreating an Activity </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/basics/fragments/index.html" description= "How to build a user interface for your app that is flexible enough to present multiple UI components on large screens and a more constrained set of UI components on smaller screens—essential for building a single APK for both phones and tablets." >Building a Dynamic UI with Fragments</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/basics/fragments/creating.html"> Creating a Fragment </a> </li> <li><a href="<?cs var:toroot ?>training/basics/fragments/fragment-ui.html" zh-cn-lang="构建灵活的界面"> Building a Flexible UI </a> </li> <li><a href="<?cs var:toroot ?>training/basics/fragments/communicating.html"> Communicating with Other Fragments </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"><a href="<?cs var:toroot?>training/basics/data-storage/index.html" ja-lang="データの保存" ko-lang="데이터 저장하기" pt-br-lang="Salvando dados" ru-lang="Сохранение данных" zh-cn-lang="保存数据" zh-tw-lang="儲存資料" description= "How to save data on the device, whether it's temporary files, downloaded app assets, user media, structured data, or something else." >Saving Data</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/basics/data-storage/shared-preferences.html" ja-lang="キー値セットを保存する" ko-lang="키-값 세트 저장하기" pt-br-lang="Salvando conjuntos de valor-chave" ru-lang="Сохранение наборов "\"ключ-значение\"" zh-cn-lang="保存键值集" zh-tw-lang="儲存索引鍵值組"> Saving Key-Value Sets </a> </li> <li><a href="<?cs var:toroot ?>training/basics/data-storage/files.html" ja-lang="ファイルを保存する" ko-lang="파일 저장하기" pt-br-lang="Salvando arquivos" ru-lang="Сохранение файлов" zh-cn-lang="保存文件" zh-tw-lang="儲存檔案"> Saving Files </a> </li> <li><a href="<?cs var:toroot ?>training/basics/data-storage/databases.html" ja-lang="SQL データベースにデータを保存する" ko-lang="SQL 데이터베이스에 데이터 저장하기" pt-br-lang="Salvando dados em bancos de dados do SQL" ru-lang="Сохранение данных в базах данных SQL" zh-cn-lang="在 SQL 数据库中保存数据" zh-tw-lang="在 SQL 資料庫中儲存資料"> Saving Data in SQL Databases </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/basics/intents/index.html" ja-lang="他のアプリとの相互操作" ko-lang="액티비티 수명 주기 관리하기" pt-br-lang="Interagindo com outros aplicativos" ru-lang="Взаимодействие с другими приложениями" zh-cn-lang="与其他应用交互" zh-tw-lang="與其他應用程式互動" description= "How to build a user experience that leverages other apps available on the device to perform advanced user tasks, such as capture a photo or view an address on a map." >Interacting with Other Apps</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/basics/intents/sending.html" ja-lang="別のアプリにユーザーを送る" ko-lang="다른 앱으로 사용자 보내기" pt-br-lang="Enviando o usuário para outro aplicativo" ru-lang="Направление пользователя в другое приложение" zh-cn-lang="向另一个应用发送用户" zh-tw-lang="將使用者傳送至其他應用程式"> Sending the User to Another App </a> </li> <li><a href="<?cs var:toroot ?>training/basics/intents/result.html" ja-lang="アクティビティから結果を取得する" ko-lang="액티비티로부터 결과 가져오기" pt-br-lang="Obtendo resultados de uma atividade" ru-lang="Получение результата операции" zh-cn-lang="获取活动的结果" zh-tw-lang="從應用行為顯示取得結果"> Getting a Result from the Activity </a> </li> <li><a href="<?cs var:toroot ?>training/basics/intents/filters.html" ja-lang="他のアプリからのアクティビティの開始を許可する" ko-lang="다른 앱이 자신의 액티비티를 시작하도록 허용하기" pt-br-lang="Permitindo que outros aplicativos iniciem sua atividade" ru-lang="Разрешение другим приложениям на запуск вашей операции" zh-cn-lang="允许其他应用开始您的活动" zh-tw-lang="允許其他應用程式啟動您的應用行為顯示"> Allowing Other Apps to Start Your Activity </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/permissions/index.html" description= "How to declare that your app needs access to features and resources outside of its 'sandbox', and how to request those privileges at runtime." >Working with System Permissions</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/permissions/declaring.html"> Declaring Permissions </a> </li> <li><a href="<?cs var:toroot ?>training/permissions/requesting.html"> Requesting Permissions at Run Time </a> </li> <li><a href="<?cs var:toroot ?>training/permissions/best-practices.html"> Best Practices for Runtime Permissions </a> </li> </ul> </li> </ul> </li><!-- end getting started --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/building-content-sharing.html"> <span class="small">Building Apps with</span><br/>Content Sharing </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/sharing/index.html" description= "How to take your app interaction to the next level by sharing information with other apps, receive information back, and provide a simple and scalable way to perform Share actions with user content." >Sharing Simple Data</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/sharing/send.html"> Sending Simple Data to Other Apps </a> </li> <li> <a href="<?cs var:toroot ?>training/sharing/receive.html"> Receiving Simple Data from Other Apps </a> </li> <li> <a href="<?cs var:toroot ?>training/sharing/shareaction.html"> Adding an Easy Share Action </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot?>training/secure-file-sharing/index.html" description= "How to provide secure access to a file associated with your app using a content URI and temporary access permissions." >Sharing Files</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/secure-file-sharing/setup-sharing.html"> Setting Up File Sharing </a> </li> <li> <a href="<?cs var:toroot ?>training/secure-file-sharing/share-file.html"> Sharing a File </a> </li> <li> <a href="<?cs var:toroot ?>training/secure-file-sharing/request-file.html"> Requesting a Shared File </a> </li> <li> <a href="<?cs var:toroot ?>training/secure-file-sharing/retrieve-info.html"> Retrieving File Information </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/beam-files/index.html" description= "How to transfer files between devices using the NFC Android Beam feature." >Sharing Files with NFC</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/beam-files/send-files.html" >Sending Files to Another Device</a> </li> <li><a href="<?cs var:toroot ?>training/beam-files/receive-files.html" >Receiving Files from Another Device</a></li> </ul> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/building-multimedia.html"> <span class="small">Building Apps with</span><br/>Multimedia </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/managing-audio/index.html" description= "How to respond to hardware audio key presses, request audio focus when playing audio, and respond appropriately to changes in audio focus." >Managing Audio Playback</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/managing-audio/volume-playback.html"> Controlling Your App's Volume and Playback </a> </li> <li><a href="<?cs var:toroot ?>training/managing-audio/audio-focus.html"> Managing Audio Focus </a> </li> <li><a href="<?cs var:toroot ?>training/managing-audio/audio-output.html"> Dealing with Audio Output Hardware </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/camera/index.html" description= "How to leverage existing camera apps on the user's device to capture photos or control the camera hardware directly and build your own camera app." >Capturing Photos</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/camera/photobasics.html"> Taking Photos Simply </a> </li> <li><a href="<?cs var:toroot ?>training/camera/videobasics.html"> Recording Videos Simply </a> </li> <li><a href="<?cs var:toroot ?>training/camera/cameradirect.html"> Controlling the Camera </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/printing/index.html" description= "How to print photos, HTML documents, and custom documents from your app." >Printing Content</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/printing/photos.html"> Photos </a> </li> <li><a href="<?cs var:toroot ?>training/printing/html-docs.html"> HTML Documents </a> </li> <li><a href="<?cs var:toroot ?>training/printing/custom-docs.html"> Custom Documents </a> </li> </ul> </li> </ul> </li> <!-- End multimedia --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/building-graphics.html"> <span class="small">Building Apps with</span><br/>Graphics & Animation </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/displaying-bitmaps/index.html" description= "How to load and process bitmaps while keeping your user interface responsive and avoid exceeding memory limits." >Displaying Bitmaps Efficiently</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/load-bitmap.html"> Loading Large Bitmaps Efficiently </a> </li> <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/process-bitmap.html"> Processing Bitmaps Off the UI Thread </a> </li> <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/cache-bitmap.html"> Caching Bitmaps </a> </li> <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/manage-memory.html"> Managing Bitmap Memory </a> </li> <li><a href="<?cs var:toroot ?>training/displaying-bitmaps/display-bitmap.html"> Displaying Bitmaps in Your UI </a></li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot?>training/graphics/opengl/index.html" description= "How to create OpenGL graphics within the Android app framework and respond to touch input." >Displaying Graphics with OpenGL ES</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/graphics/opengl/environment.html"> Building an OpenGL ES Environment </a> </li> <li><a href="<?cs var:toroot ?>training/graphics/opengl/shapes.html"> Defining Shapes </a> </li> <li><a href="<?cs var:toroot ?>training/graphics/opengl/draw.html"> Drawing Shapes </a> </li> <li><a href="<?cs var:toroot ?>training/graphics/opengl/projection.html"> Applying Projection and Camera Views </a> </li> <li><a href="<?cs var:toroot ?>training/graphics/opengl/motion.html"> Adding Motion </a> </li> <li><a href="<?cs var:toroot ?>training/graphics/opengl/touch.html"> Responding to Touch Events </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot?>training/transitions/index.html" description= "How to animate state changes in a view hierarchy using transitions." >Animating Views Using Scenes and Transitions</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/transitions/overview.html"> The Transitions Framework </a> </li> <li><a href="<?cs var:toroot ?>training/transitions/scenes.html"> Creating a Scene </a> </li> <li><a href="<?cs var:toroot ?>training/transitions/transitions.html"> Applying a Transition </a> </li> <li><a href="<?cs var:toroot ?>training/transitions/custom-transitions.html"> Creating Custom Transitions </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"><a href="<?cs var:toroot ?>training/animation/index.html" description= "How to add transitional animations to your user interface."> Adding Animations </a></div> <ul> <li><a href="<?cs var:toroot ?>training/animation/crossfade.html"> Crossfading Two Views </a> </li> <li><a href="<?cs var:toroot ?>training/animation/screen-slide.html"> Using ViewPager for Screen Slide </a> </li> <li><a href="<?cs var:toroot ?>training/animation/cardflip.html"> Displaying Card Flip Animations </a> </li> <li><a href="<?cs var:toroot ?>training/animation/zoom.html"> Zooming a View </a> </li> <li><a href="<?cs var:toroot ?>training/animation/layout.html"> Animating Layout Changes </a> </li> </ul> </li> </ul> </li> <!-- End graphics and animation --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/building-connectivity.html"> <span class="small">Building Apps with</span><br/> Connectivity & the Cloud </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/connect-devices-wirelessly/index.html" description= "How to find and connect to local devices using Network Service Discovery and how to create peer-to-peer connections with Wi-Fi." >Connecting Devices Wirelessly</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd.html"> Using Network Service Discovery </a> </li> <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/wifi-direct.html"> Creating P2P Connections with Wi-Fi </a> </li> <li><a href="<?cs var:toroot ?>training/connect-devices-wirelessly/nsd-wifi-direct.html"> Using Wi-Fi P2P for Service Discovery </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/basics/network-ops/index.html" description= "How to create a network connection, monitor the connection for changes in connectivity, and perform transactions with XML data." >Performing Network Operations</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/basics/network-ops/connecting.html"> Connecting to the Network </a> </li> <li><a href="<?cs var:toroot ?>training/basics/network-ops/managing.html"> Managing Network Usage </a> </li> <li><a href="<?cs var:toroot ?>training/basics/network-ops/xml.html"> Parsing XML Data </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/efficient-downloads/index.html" description= "How to minimize your app's impact on the battery when performing downloads and other network transactions." >Transferring Data Without Draining the Battery</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/efficient-downloads/efficient-network-access.html"> Optimizing Downloads for Efficient Network Access </a> </li> <li><a href="<?cs var:toroot ?>training/efficient-downloads/regular_updates.html"> Minimizing the Effect of Regular Updates </a> </li> <li><a href="<?cs var:toroot ?>training/efficient-downloads/redundant_redundant.html"> Redundant Downloads are Redundant </a> </li> <li><a href="<?cs var:toroot ?>training/efficient-downloads/connectivity_patterns.html"> Modifying Patterns Based on the Connectivity Type </a> </li> </ul> </li> <li class="nav-section"> <li><a href="<?cs var:toroot ?>training/cloudsave/conflict-res.html" description= "How to design a robust conflict resolution strategy for apps that save data to the cloud." >Resolving Cloud Save Conflicts </a> </li> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/sync-adapters/index.html" description="How to transfer data between the cloud and the device using the Android sync adapter framework" >Transferring Data Using Sync Adapters</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/sync-adapters/creating-authenticator.html"> Creating a Stub Authenticator </a> </li> <li> <a href="<?cs var:toroot ?>training/sync-adapters/creating-stub-provider.html"> Creating a Stub Content Provider </a> </li> <li> <a href="<?cs var:toroot ?>training/sync-adapters/creating-sync-adapter.html"> Creating a Sync Adapter </a> </li> <li> <a href="<?cs var:toroot ?>training/sync-adapters/running-sync-adapter.html"> Running a Sync Adapter </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/volley/index.html" description="How to perform fast, scalable UI operations over the network using Volley" >Transmitting Network Data Using Volley</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/volley/simple.html"> Sending a Simple Request </a> </li> <li> <a href="<?cs var:toroot ?>training/volley/requestqueue.html"> Setting Up a RequestQueue </a> </li> <li> <a href="<?cs var:toroot ?>training/volley/request.html"> Making a Standard Request </a> </li> <li> <a href="<?cs var:toroot ?>training/volley/request-custom.html"> Implementing a Custom Request </a> </li> </ul> </li> </ul> </li> <!-- End connectivity and cloud --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/building-location.html"> <span class="small">Building Apps with</span><br/> Location & Maps </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/location/index.html" description="How to add location-aware features to your app by getting the user's current location."> Making Your App Location-Aware </a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/location/retrieve-current.html"> Getting the Last Known Location </a> </li> <li> <a href="<?cs var:toroot ?>training/location/change-location-settings.html"> Changing Location Settings </a> </li> <li> <a href="<?cs var:toroot ?>training/location/receive-location-updates.html"> Receiving Location Updates </a> </li> <li> <a href="<?cs var:toroot ?>training/location/display-address.html"> Displaying a Location Address </a> </li> <li><a href="<?cs var:toroot ?>training/location/geofencing.html"> Creating and Monitoring Geofences </a> </li> </ul> </li> <li class="nav-section"> <a href="<?cs var:toroot ?>training/maps/index.html" description="How to add maps and mapping information to your app."> Adding Maps </a> </li> </ul> </li> <!-- End location and maps --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/building-userinfo.html"> <span class="small">Building Apps with</span><br/> User Info & Sign-In </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/contacts-provider/index.html" description= "How to use Android's central address book, the Contacts Provider, to display contacts and their details and modify contact information."> Accessing Contacts Data</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-names.html"> Retrieving a List of Contacts </a> </li> <li> <a href="<?cs var:toroot ?>training/contacts-provider/retrieve-details.html"> Retrieving Details for a Contact </a> </li> <li> <a href="<?cs var:toroot ?>training/contacts-provider/modify-data.html"> Modifying Contacts Using Intents </a> </li> <li> <a href="<?cs var:toroot ?>training/contacts-provider/display-contact-badge.html"> Displaying the Quick Contact Badge </a> </li> </ul> </li> <li class="nav-section"> <a href="<?cs var:toroot ?>training/sign-in/index.html" description="How to add user sign-in functionality to your app."> Adding Sign-In </a> </li> </ul> </li> <!-- End user info and sign-in --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/building-wearables.html"> <span class="small">Building Apps for</span><br/> Wearables </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/wearables/notifications/index.html" description="How to build handheld notifications that are synced to and look great on wearables." >Adding Wearable Features to Notifications</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/wearables/notifications/creating.html">Creating a Notification</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/notifications/voice-input.html">Receiving Voice Input in a Notification</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/notifications/pages.html">Adding Pages to a Notification</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/notifications/stacks.html">Stacking Notifications</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/wearables/apps/index.html" description="How to build apps that run directly on wearables." >Creating Wearable Apps</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/wearables/apps/creating.html">Creating and Running a Wearable App</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/apps/layouts.html">Creating Custom Layouts</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/apps/always-on.html">Keeping Your App Visible</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/apps/voice.html">Adding Voice Capabilities</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/apps/packaging.html">Packaging Wearable Apps</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/apps/bt-debugging.html">Debugging over Bluetooth</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/wearables/ui/index.html" description="How to create custom user interfaces for wearable apps." >Creating Custom UIs</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/wearables/ui/layouts.html">Defining Layouts</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/ui/cards.html">Creating Cards</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/ui/lists.html">Creating Lists</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/ui/2d-picker.html">Creating a 2D Picker</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/ui/confirm.html">Showing Confirmations</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/ui/exit.html">Exiting Full-Screen Activities</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/wearables/data-layer/index.html" description="How to sync data between handhelds and wearables." >Sending and Syncing Data</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/wearables/data-layer/accessing.html">Accessing the Wearable Data Layer</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/data-layer/data-items.html">Syncing Data Items</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/data-layer/assets.html">Transferring Assets</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/data-layer/messages.html">Sending and Receiving Messages</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/data-layer/events.html">Handling Data Layer Events</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/wearables/watch-faces/index.html" description="How to create watch faces for wearables." >Creating Watch Faces</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/designing.html">Designing Watch Faces</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/service.html">Building a Watch Face Service</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/drawing.html">Drawing Watch Faces</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/information.html">Showing Information in Watch Faces</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/interacting.html">Creating Interactive Watch Faces</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/configuration.html">Providing Configuration Activities</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/issues.html">Addressing Common Issues</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/watch-faces/performance.html">Optimizing Performance and Battery Life</a> </li> </ul> </li> <li> <a href="<?cs var:toroot ?>training/articles/wear-location-detection.html" description= "How to detect location data on Android Wear devices." >Detecting Location</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/wear-permissions.html" description= "How to request permissions on Android Wear devices." >Requesting Permissions</a> </li> <li> <a href="<?cs var:toroot ?>training/wearables/wearable-sounds.html" description= "How to use the speaker on Android Wear devices." >Using the Speaker</a> </li> </ul> </li> <!-- End Building for wearables --> <!-- Start: Building for TV --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/tv/index.html"> <span class="small">Building Apps for</span><br/> TV </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/tv/start/index.html" ja-lang="TV アプリのビルド" description="How to start building TV apps or extend your existing app to run on TV devices."> Building TV Apps</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/tv/start/start.html" ja-lang="TV アプリのビルドを開始する"> Getting Started with TV Apps</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/start/hardware.html" ja-lang="TV ハードウェアを処理する"> Handling TV Hardware</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/start/layouts.html" ja-lang="TV 向けレイアウトをビルドする"> Building TV Layouts</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/start/navigation.html" ja-lang="TV 用のナビゲーションを作成する"> Creating TV Navigation</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/tv/playback/index.html" ja-lang="TV 再生アプリのビルド" description="How to build apps that provide media catalogs and play content."> Building TV Playback Apps</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/tv/playback/browse.html" ja-lang="カタログ ブラウザを作成する"> Creating a Catalog Browser</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/playback/card.html"> Providing a Card View</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/playback/details.html" ja-lang="詳細ビューをビルドする"> Building a Details View</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/playback/now-playing.html" ja-lang="再生中カードを表示する"> Displaying a Now Playing Card</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/playback/guided-step.html"> Adding a Guided Step</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/playback/options.html"> Enabling Background Playback</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/tv/discovery/index.html" description="How to help users discover content from your app."> Helping Users Find Content on TV</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/tv/discovery/recommendations.html"> Recommending TV Content</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/discovery/searchable.html"> Making TV Apps Searchable</a> <li> <a href="<?cs var:toroot ?>training/tv/discovery/in-app-search.html"> Searching within TV Apps</a> </li> </ul> </li> <li> <a href="<?cs var:toroot ?>training/tv/games/index.html" description="How to build games for TV."> Building TV Games</a> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/tv/tif/index.html" description="How to build channels for TV."> Building TV Channels</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/tv/tif/tvinput.html"> Developing a TV Input Service</a> <li> <a href="<?cs var:toroot ?>training/tv/tif/channel.html"> Working with Channel Data</a> </li> <li> <a href="<?cs var:toroot ?>training/tv/tif/ui.html"> Managing User Interaction</a> </li> </ul> </li> <li> <a href="<?cs var:toroot ?>training/tv/publishing/checklist.html" description="An itemized list of requirements for TV apps."> TV Apps Checklist</a> </li> </ul> </li> <!-- End: Building for TV --> <!-- Start: Building for Auto --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/auto/index.html"> <span class="small">Building Apps for</span><br/> Auto </a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/auto/start/index.html" description="How to start building or extending apps that work with Auto devices."> Getting Started with Auto</a> </li> <li> <a href="<?cs var:toroot ?>training/auto/audio/index.html" description="How to extend audio apps to play content on Auto devices."> Playing Audio for Auto</a> </li> <li> <a href="<?cs var:toroot ?>training/auto/messaging/index.html" description="How to extend text messaging apps to work with Auto devices."> Messaging for Auto</a> </li> <li> <a href="<?cs var:toroot ?>training/auto/testing/index.html" description= "How to run and test Auto apps."> Testing Auto Apps</a> </li> </ul> </li> <!-- End: Building for Auto --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/best-ux.html"> <span class="small">Best Practices for</span><br/> Interaction & Engagement </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/design-navigation/index.html" description= "How to plan your app's screen hierarchy and forms of navigation so users can effectively and intuitively traverse your app content using various navigation patterns." >Designing Effective Navigation</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/design-navigation/screen-planning.html"> Planning Screens and Their Relationships </a> </li> <li><a href="<?cs var:toroot ?>training/design-navigation/multiple-sizes.html"> Planning for Multiple Touchscreen Sizes </a> </li> <li><a href="<?cs var:toroot ?>training/design-navigation/descendant-lateral.html"> Providing Descendant and Lateral Navigation </a> </li> <li><a href="<?cs var:toroot ?>training/design-navigation/ancestral-temporal.html"> Providing Ancestral and Temporal Navigation </a> </li> <li><a href="<?cs var:toroot ?>training/design-navigation/wireframing.html"> Putting it All Together: Wireframing the Example App </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/implementing-navigation/index.html" description= "How to implement various navigation patterns such as swipe views, a navigation drawer, and up navigation." >Implementing Effective Navigation</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/implementing-navigation/lateral.html"> Creating Swipe Views with Tabs </a> </li> <li><a href="<?cs var:toroot ?>training/implementing-navigation/nav-drawer.html"> Creating a Navigation Drawer </a> </li> <li><a href="<?cs var:toroot ?>training/implementing-navigation/ancestral.html"> Providing Up Navigation </a> </li> <li><a href="<?cs var:toroot ?>training/implementing-navigation/temporal.html"> Providing Proper Back Navigation </a> </li> <li><a href="<?cs var:toroot ?>training/implementing-navigation/descendant.html"> Implementing Descendant Navigation </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/notify-user/index.html" description= "How to display messages called notifications outside of your application's UI." >Notifying the User</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/notify-user/build-notification.html"> Building a Notification </a> </li> <li> <a href="<?cs var:toroot ?>training/notify-user/navigation.html"> Preserving Navigation when Starting an Activity </a> </li> <li> <a href="<?cs var:toroot ?>training/notify-user/managing.html"> Updating Notifications </a> </li> <li> <a href="<?cs var:toroot ?>training/notify-user/expanded.html"> Using Big View Styles </a> </li> <li> <a href="<?cs var:toroot ?>training/notify-user/display-progress.html"> Displaying Progress in a Notification </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/swipe/index.html" description= "How to modify your app's layout to support manual content updates triggered by the swipe-to-refresh gesture." >Supporting Swipe-to-Refresh</a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/swipe/add-swipe-interface.html" >Adding Swipe-to-Refresh To Your App</a></li> <li> <a href="<?cs var:toroot ?>training/swipe/respond-refresh-request.html" >Responding to a Refresh Gesture</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/search/index.html" description= "How to properly add a search interface to your app and create a searchable database." >Adding Search Functionality</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/search/setup.html"> Setting up the Search Interface </a> </li> <li><a href="<?cs var:toroot ?>training/search/search.html"> Storing and Searching for Data </a> </li> <li><a href="<?cs var:toroot ?>training/search/backward-compat.html"> Remaining Backward Compatible </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/app-indexing/index.html" description= "How to enable deep linking and indexing of your application content so that users can open this content directly from their mobile search results." >Making Your App Content Searchable by Google</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/app-indexing/deep-linking.html"> Enabling Deep Links for App Content </a> </li> <li><a href="<?cs var:toroot ?>training/app-indexing/enabling-app-indexing.html"> Specifying App Content for Indexing </a> </li> </ul> </li> <li> <a href="<?cs var:toroot ?>training/articles/assistant.html" description= "Support contextually relevant actions through the Assist API." >Optimizing Content for the Assistant</a> </li> <li class="nav-section"> <div class="nav-section"> <a href="<?cs var:toroot ?>training/app-links/index.html" description= "How to enable the system to handle web requests by taking the user directly to your app instead of your website." >Handling App Links</a> </div> </li> <!-- End Interaction and Engagement --> </ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/best-ui.html"> <span class="small">Best Practices for</span><br/> User Interface </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/multiscreen/index.html" zh-cn-lang="针对多种屏幕进行设计" ja-lang="複数画面のデザイン" es-lang="Cómo diseñar aplicaciones para varias pantallas" description= "How to build a user interface that's flexible enough to fit perfectly on any screen and how to create different interaction patterns that are optimized for different screen sizes." >Designing for Multiple Screens</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/multiscreen/screensizes.html" zh-cn-lang="支持各种屏幕尺寸" ko-lang="다양한 화면 크기 지원" ja-lang="さまざまな画面サイズのサポート" es-lang="Cómo admitir varios tamaños de pantalla" >Supporting Different Screen Sizes</a> </li> <li><a href="<?cs var:toroot ?>training/multiscreen/screendensities.html" zh-cn-lang="支持各种屏幕密度" ja-lang="さまざまな画面密度のサポート" es-lang="Cómo admitir varias densidades de pantalla" >Supporting Different Screen Densities</a> </li> <li><a href="<?cs var:toroot ?>training/multiscreen/adaptui.html" zh-cn-lang="实施自适应用户界面流程" ja-lang="順応性のある UI フローの実装" es-lang="Cómo implementar interfaces de usuario adaptables" >Implementing Adaptive UI Flows</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/appbar/index.html" description= "How to use the support library's toolbar widget to implement an app bar that displays properly on a wide range of devices." >Adding the App Bar</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/appbar/setting-up.html" >Setting Up the App Bar</a> </li> <li><a href="<?cs var:toroot ?>training/appbar/actions.html" >Adding and Handling Actions</a> </li> <li><a href="<?cs var:toroot ?>training/appbar/up-action.html" >Adding an Up Action</a> </li> <li><a href="<?cs var:toroot ?>training/appbar/action-views.html" >Action Views and Action Providers</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/snackbar/index.html" description= "How to use the support library's Snackbar widget to display a brief pop-up message." >Showing Pop-Up Messages</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/snackbar/showing.html" >Building and Displaying a Pop-Up Message</a> </li> <li><a href="<?cs var:toroot ?>training/snackbar/action.html" >Adding an Action to a Message</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/custom-views/index.html" description= "How to build custom UI widgets that are interactive and smooth." >Creating Custom Views</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/custom-views/create-view.html"> Creating a Custom View Class </a> </li> <li><a href="<?cs var:toroot ?>training/custom-views/custom-drawing.html"> Implementing Custom Drawing </a> </li> <li><a href="<?cs var:toroot ?>training/custom-views/making-interactive.html"> Making the View Interactive </a> </li> <li><a href="<?cs var:toroot ?>training/custom-views/optimizing-view.html"> Optimizing the View </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/backward-compatible-ui/index.html" description= "How to use UI components and other APIs from the more recent versions of Android while remaining compatible with older versions of the platform." >Creating Backward-Compatible UIs</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/abstracting.html"> Abstracting the New APIs </a> </li> <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/new-implementation.html"> Proxying to the New APIs </a> </li> <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/older-implementation.html"> Creating an Implementation with Older APIs </a> </li> <li><a href="<?cs var:toroot ?>training/backward-compatible-ui/using-component.html"> Using the Version-Aware Component </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/accessibility/index.html" description= "How to make your app accessible to users with vision impairment or other physical disabilities." >Implementing Accessibility</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/accessibility/accessible-app.html"> Developing Accessible Applications </a> </li> <li><a href="<?cs var:toroot ?>training/accessibility/service.html"> Developing Accessibility Services </a> </li> <li><a href="<?cs var:toroot ?>training/accessibility/testing.html"> Accessibility Testing Checklist </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/system-ui/index.html" description= "How to hide and show status and navigation bars across different versions of Android, while managing the display of other screen components." >Managing the System UI</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/system-ui/dim.html"> Dimming the System Bars </a> </li> <li><a href="<?cs var:toroot ?>training/system-ui/status.html"> Hiding the Status Bar </a> </li> <li><a href="<?cs var:toroot ?>training/system-ui/navigation.html"> Hiding the Navigation Bar </a> </li> <li><a href="<?cs var:toroot ?>training/system-ui/immersive.html"> Using Immersive Full-Screen Mode </a> </li> <li><a href="<?cs var:toroot ?>training/system-ui/visibility.html"> Responding to UI Visibility Changes </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/material/index.html" description= "How to implement material design on Android." zh-cn-lang="面向开发者的材料设计" zh-tw-lang="開發人員材料設計" ja-lang="マテリアル デザインでのアプリ作成" es-lang="Crear aplicaciones con Material Design" pt-br-lang="Material Design para desenvolvedores" ko-lang="개발자를 위한 머티리얼 디자인" ru-lang="Создание приложений с помощью Material Design" in-lang="Desain Bahan untuk Pengembang" vi-lang="Material Design cho Nhà phát triển" >Creating Apps with Material Design</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/material/get-started.html" zh-cn-lang="入门指南" zh-tw-lang="開始使用" ja-lang="スタート ガイド" es-lang="Comencemos" pt-br-lang="Como iniciar" ko-lang="시작하기" ru-lang="Начало работы" in-lang="Memulai" vi-lang="Bắt đầu" > Getting Started </a> </li> <li><a href="<?cs var:toroot ?>training/material/theme.html" zh-cn-lang="使用材料主题" zh-tw-lang="使用材料設計風格" ja-lang="マテリアル テーマの使用" es-lang="Usar el tema Material" pt-br-lang="Como usar o tema do Material" ko-lang="머티어리얼 테마 사용" ru-lang="Использование темы Material Design" in-lang="Menggunakan Tema Bahan" vi-lang="Sử dụng Chủ đề Material" > Using the Material Theme </a> </li> <li><a href="<?cs var:toroot ?>training/material/lists-cards.html" zh-cn-lang="创建列表与卡片" zh-tw-lang="建立清單和卡片" ja-lang="リストとカードの作成" es-lang="Crear listas y tarjetas" pt-br-lang="Como criar listas e cartões" ko-lang="목록 및 카드 생성" ru-lang="Создание списков и подсказок" in-lang="Membuat Daftar dan Kartu" vi-lang="Tạo Danh sách và Thẻ" > Creating Lists and Cards </a> </li> <li><a href="<?cs var:toroot ?>training/material/shadows-clipping.html" zh-cn-lang="定义阴影与裁剪视图" zh-tw-lang="定義陰影和裁剪檢視" ja-lang="シャドウとクリッピング ビューの定義" es-lang="Definir vistas de recorte y sombras" pt-br-lang="Como definir sombras e recortar visualizações" ko-lang="그림자 정의 및 뷰 클리핑" ru-lang="Определение теней и обрезка представлений" in-lang="Mendefinisikan Bayangan dan Memangkas Tampilan" vi-lang="Định nghĩa Đổ bóng và Dạng xem Cắt hình" > Defining Shadows and Clipping Views </a> </li> <li><a href="<?cs var:toroot ?>training/material/drawables.html" zh-cn-lang="使用 Drawables" zh-tw-lang="使用可繪項目" ja-lang="ドローアブルの使用" es-lang="Trabajar con interfaces dibujables" pt-br-lang="Como trabalhar com desenháveis" ko-lang="Drawable 사용" ru-lang="Работа с элементами дизайна" in-lang="Bekerja dengan Drawable" vi-lang="Làm việc với Nội dung vẽ được" > Working with Drawables </a> </li> <li><a href="<?cs var:toroot ?>training/material/animations.html" zh-cn-lang="定义定制动画" zh-tw-lang="定義自訂動畫" ja-lang="カスタム アニメーションの定義" es-lang="Definir animaciones personalizadas" pt-br-lang="Como definir animações personalizadas" ko-lang="사용자지정 애니메이션 정의" ru-lang="Определение настраиваемой анимации" in-lang="Mendefinisikan Animasi Custom" vi-lang="Định nghĩa Hoạt hình Tùy chỉnh" > Defining Custom Animations </a> </li> <li><a href="<?cs var:toroot ?>training/material/compatibility.html" zh-cn-lang="维护兼容性" zh-tw-lang="維持相容性" ja-lang="互換性の維持" es-lang="Mantener la compatibilidad" pt-br-lang="Como manter a compatibilidade" ko-lang="호환성 유지" ru-lang="Обеспечение совместимости" in-lang="Mempertahankan Kompatibilitas" vi-lang="Duy trì Tính tương thích" > Maintaining Compatibility </a> </li> </ul> </li> </ul> </li> <!-- End User Interface --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/best-user-input.html"> <span class="small">Best Practices for</span><br/> User Input </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/gestures/index.html" description= "How to write apps that allow users to interact with the touch screen via touch gestures." >Using Touch Gestures</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/gestures/detector.html"> Detecting Common Gestures </a> </li> <li><a href="<?cs var:toroot ?>training/gestures/movement.html"> Tracking Movement </a> </li> <li><a href="<?cs var:toroot ?>training/gestures/scroll.html"> Animating a Scroll Gesture </a> </li> <li><a href="<?cs var:toroot ?>training/gestures/multi.html"> Handling Multi-Touch Gestures </a> </li> <li><a href="<?cs var:toroot ?>training/gestures/scale.html"> Dragging and Scaling </a> </li> <li><a href="<?cs var:toroot ?>training/gestures/viewgroup.html"> Managing Touch Events in a ViewGroup </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/keyboard-input/index.html" description= "How to specify the appearance and behaviors of soft input methods (such as on-screen keyboards) and how to optimize the experience with hardware keyboards." >Handling Keyboard Input</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/keyboard-input/style.html"> Specifying the Input Method Type </a> </li> <li><a href="<?cs var:toroot ?>training/keyboard-input/visibility.html"> Handling Input Method Visibility </a> </li> <li><a href="<?cs var:toroot ?>training/keyboard-input/navigation.html"> Supporting Keyboard Navigation </a> </li> <li><a href="<?cs var:toroot ?>training/keyboard-input/commands.html"> Handling Keyboard Actions </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/game-controllers/index.html" description= "How to write apps that support game controllers." >Supporting Game Controllers</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/game-controllers/controller-input.html"> Handling Controller Actions </a> </li> <li><a href="<?cs var:toroot ?>training/game-controllers/compatibility.html"> Supporting Controllers Across Android Versions </a> </li> <li><a href="<?cs var:toroot ?>training/game-controllers/multiple-controllers.html"> Supporting Multiple Game Controllers </a> </li> </ul> </li> </ul> </li> <!-- end of User Input --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/best-background.html"> <span class="small">Best Practices for</span><br/> Background Jobs </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/run-background-service/index.html" description= "How to improve UI performance and responsiveness by sending work to a Service running in the background" >Running in a Background Service</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/run-background-service/create-service.html"> Creating a Background Service </a> </li> <li><a href="<?cs var:toroot ?>training/run-background-service/send-request.html"> Sending Work Requests to the Background Service </a> </li> <li><a href="<?cs var:toroot ?>training/run-background-service/report-status.html"> Reporting Work Status </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/load-data-background/index.html" description="How to use CursorLoader to query data without affecting UI responsiveness." >Loading Data in the Background</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/load-data-background/setup-loader.html"> Running a Query with a CursorLoader</a> </li> <li><a href="<?cs var:toroot ?>training/load-data-background/handle-results.html"> Handling the Results</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/scheduling/index.html" description="How to use repeating alarms and wake locks to run background jobs." >Managing Device Awake State</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/scheduling/wakelock.html"> Keeping the Device Awake</a> </li> <li><a href="<?cs var:toroot ?>training/scheduling/alarms.html"> Scheduling Repeating Alarms</a> </li> </ul> </li> </ul> </li> <!-- end of Background Jobs --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/best-performance.html"> <span class="small">Best Practices for</span><br/> Performance </a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/articles/memory.html" description= "How to keep your app's memory footprint small in order to improve performance on a variety of mobile devices." >Managing Your App's Memory</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/memory-overview.html" description= "How Android manages app process and memory allocation." >Overview of Android Memory Management</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/perf-tips.html" description= "How to optimize your app's performance in various ways to improve its responsiveness and battery efficiency." >Performance Tips</a> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/improving-layouts/index.html" description= "How to identify problems in your app's layout performance and improve the UI responsiveness." >Improving Layout Performance</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/improving-layouts/optimizing-layout.html"> Optimizing Layout Hierarchies </a> </li> <li><a href="<?cs var:toroot ?>training/improving-layouts/reusing-layouts.html"> Re-using Layouts with <include/> </a> </li> <li><a href="<?cs var:toroot ?>training/improving-layouts/loading-ondemand.html"> Loading Views On Demand </a> </li> <li><a href="<?cs var:toroot ?>training/improving-layouts/smooth-scrolling.html"> Making ListView Scrolling Smooth </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/monitoring-device-state/index.html" zh-cn-lang="优化电池使用时间" ja-lang="電池消費量の最適化" es-lang="Cómo optimizar la duración de la batería" description= "How to minimize the amount of power your app requires by adapting to current power conditions and performing power-hungry tasks at proper intervals." >Optimizing Battery Life </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/performance/battery/network/index.html"> Reducing Network Battery Drain </a> </div> <ul> <li><a href="<?cs var:toroot ?>training/performance/battery/network/gather-data.html"> Collecting Network Traffic Data </a> </li> <li><a href="<?cs var:toroot ?>training/performance/battery/network/analyze-data.html"> Analyzing Network Traffic Data </a> </li> <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-user-traffic.html"> Optimizing User-Initiated Network Use </a> </li> <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-app-traffic.html"> Optimizing App-Initiated Network Use </a> </li> <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-server-traffic.html"> Optimizing Server-Initiated Network Use </a> </li> <li><a href="<?cs var:toroot ?>training/performance/battery/network/action-any-traffic.html"> Optimizing General Network Use </a> </li> </ul> </li> <!-- End of Reducing Network Battery Drain --> <li><a href="<?cs var:toroot ?>training/monitoring-device-state/doze-standby.html" >Optimizing for Doze and App Standby</a> </li> <li><a href="<?cs var:toroot ?>training/monitoring-device-state/battery-monitoring.html" zh-cn-lang="监控电池电量和充电状态" ja-lang="電池残量と充電状態の監視" es-lang="Cómo controlar el nivel de batería y el estado de carga" >Monitoring the Battery Level and Charging State</a> </li> <li><a href="<?cs var:toroot ?>training/monitoring-device-state/docking-monitoring.html" zh-cn-lang="确定和监控基座对接状态和类型" ja-lang="ホルダーの装着状態とタイプの特定と監視" es-lang="Cómo determinar y controlar el tipo de conector y el estado de la conexión" >Determining and Monitoring the Docking State and Type</a> </li> <li><a href="<?cs var:toroot ?>training/monitoring-device-state/connectivity-monitoring.html" zh-cn-lang="确定和监控网络连接状态" ja-lang="接続状態の特定と監視" es-lang="Cómo determinar y controlar el estado de la conectividad" >Determining and Monitoring the Connectivity Status</a> </li> <li><a href="<?cs var:toroot ?>training/monitoring-device-state/manifest-receivers.html" zh-cn-lang="根据需要操作广播接收器" ja-lang="オンデマンドでのブロードキャスト レシーバ操作" es-lang="Cómo manipular los receptores de emisión bajo demanda" >Manipulating Broadcast Receivers On Demand</a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/multiple-threads/index.html" description= "How to improve the performance and scalability of long-running operations by dispatching work to multiple threads."> Sending Operations to Multiple Threads</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/multiple-threads/define-runnable.html"> Specifying the Code to Run on a Thread </a> </li> <li><a href="<?cs var:toroot ?>training/multiple-threads/create-threadpool.html"> Creating a Manager for Multiple Threads </a> </li> <li><a href="<?cs var:toroot ?>training/multiple-threads/run-code.html"> Running Code on a Thread Pool Thread </a> </li> <li><a href="<?cs var:toroot ?>training/multiple-threads/communicate-ui.html"> Communicating with the UI Thread </a> </li> </ul> </li> <li> <a href="<?cs var:toroot ?>training/articles/perf-anr.html" description= "How to keep your app responsive to user interaction so the UI does not lock-up and display an "Application Not Responding" dialog." >Keeping Your App Responsive</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/perf-jni.html" description= "How to efficiently use the Java Native Interface with the Android NDK." >JNI Tips</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/smp.html" description= "Tips for coding Android apps on symmetric multiprocessor systems." >SMP Primer for Android</a> </li> </ul> </li> <!-- end of Performance --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/best-security.html"> <span class="small">Best Practices for</span><br/> Security & Privacy </a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/articles/security-tips.html" description= "How to perform various tasks and keep your app's data and your user's data secure." >Security Tips</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/security-ssl.html" description= "How to ensure that your app is secure when performing network transactions." >Security with HTTPS and SSL</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/security-gms-provider.html" description= "How to use and update Google Play services security provider, to protect against SSL exploits." >Updating Your Security Provider to Protect Against SSL Exploits</a> </li> <li> <a href="<?cs var:toroot ?>training/safetynet/index.html" description= "How to use the SafetyNet service to analyze a device where your app is running and get information about its compatibility with your app." >Checking Device Compatibility with SafetyNet</a> </li> <li> <a href="<?cs var:toroot ?>work/device-management-policy.html" description="How to create an application that enforces security policies on devices." >Enhancing Security with Device Management Policies</a> </li> </ul> </li> <!-- End security and user info --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/best-permissions-ids.html"> <span class="small">Best Practices for</span><br/> Permissions & Identifiers </a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/articles/user-data-overview.html" description= "Overview of app permissions on Android and how they affect your users." >Permissions and User Data</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/user-data-permissions.html" description= "How to manage permissions the right way for users." >Best Practices for App Permissions</a> </li> <li> <a href="<?cs var:toroot ?>training/articles/user-data-ids.html" description= "Unique identifiers available and how to choose the right one for your use case." >Best Practices for Unique Identifiers</a> </li> </ul> </li> <!-- End Permissions and identifiers --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/testing/index.html"> <span class="small">Best Practices for</span><br/> Testing </a> </div> <ul> <li> <a href="<?cs var:toroot ?>training/testing/start/index.html" description="How to get started with testing your Android applications."> Getting Started with Testing </a> </li> <li class="nav-section"> <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/unit-testing/index.html" description="How to build effective unit tests for Android apps."> Building Effective Unit Tests </a></div> <ul> <li><a href="<?cs var:toroot ?>training/testing/unit-testing/local-unit-tests.html"> <span class="en">Building Local Unit Tests</span> </a> </li> <li><a href="<?cs var:toroot ?>training/testing/unit-testing/instrumented-unit-tests.html"> <span class="en">Building Instrumented Unit Tests</span> </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/ui-testing/index.html" description="How to automate your user interface tests for Android apps."> Automating UI Tests </a></div> <ul> <li><a href="<?cs var:toroot ?>training/testing/ui-testing/espresso-testing.html"> <span class="en">Testing UI for a Single App</span> </a> </li> <li><a href="<?cs var:toroot ?>training/testing/ui-testing/uiautomator-testing.html"> <span class="en">Testing UI for Multiple Apps</span> </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"><a href="<?cs var:toroot ?>training/testing/integration-testing/index.html" description="How to build effective integration tests for Android apps."> Testing App Component Integrations </a></div> <ul> <li><a href="<?cs var:toroot ?>training/testing/integration-testing/service-testing.html"> <span class="en">Testing Your Service</span></a></li> <li><a href="<?cs var:toroot ?>training/testing/integration-testing/content-provider-testing.html"> <span class="en">Testing Your Content Provider</span></a></li> </ul> </li> <li><a href="<?cs var:toroot ?>training/testing/performance.html" description="How to automate UI performance testing.">Testing Display Performance</a> </li> </ul> </li> <!-- End best Testing --> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/distribute.html"> <span class="small">Using Google Play to</span><br/> Distribute & Monetize </a> </div> <ul> <li class="nav-section"> <div class="nav-section-header"><a href="<?cs var:toroot ?>training/in-app-billing/index.html" description="How to sell in-app products from your application using In-app Billing."> Selling In-app Products </a></div> <ul> <li><a href="<?cs var:toroot ?>training/in-app-billing/preparing-iab-app.html"> <span class="en">Preparing Your App</span> </a> </li> <li><a href="<?cs var:toroot ?>training/in-app-billing/list-iab-products.html"> <span class="en">Establishing Products for Sale</span> </a> </li> <li><a href="<?cs var:toroot ?>training/in-app-billing/purchase-iab-products.html"> <span class="en">Purchasing Products</span> </a> </li> <li><a href="<?cs var:toroot ?>training/in-app-billing/test-iab-app.html"> <span class="en">Testing Your App</span> </a> </li> </ul> </li> <li class="nav-section"> <div class="nav-section-header"> <a href="<?cs var:toroot ?>training/multiple-apks/index.html" description= "How to publish your app on Google Play with separate APKs that target different devices, while using a single app listing." >Maintaining Multiple APKs</a> </div> <ul> <li><a href="<?cs var:toroot ?>training/multiple-apks/api.html"> Creating Multiple APKs for Different API Levels </a> </li> <li><a href="<?cs var:toroot ?>training/multiple-apks/screensize.html"> Creating Multiple APKs for Different Screen Sizes </a> </li> <li><a href="<?cs var:toroot ?>training/multiple-apks/texture.html"> Creating Multiple APKs for Different GL Textures </a> </li> <li><a href="<?cs var:toroot ?>training/multiple-apks/multiple.html"> Creating Multiple APKs with 2+ Dimensions </a> </li> </ul> </li> </ul> </li> <!-- End best Publishing --> </ul><!-- nav --> <script type="text/javascript"> <!-- buildToggleLists(); changeNavLang(getLangPref()); //--> </script>