diff options
| -rw-r--r-- | docs/html/_redirects.yaml | 24 | ||||
| -rw-r--r-- | docs/html/jd_extras_en.js | 67 | ||||
| -rw-r--r-- | docs/html/topic/performance/_book.yaml | 35 | ||||
| -rw-r--r-- | docs/html/topic/performance/index.jd | 39 | ||||
| -rw-r--r-- | docs/html/topic/performance/performance_toc.cs | 2289 | ||||
| -rw-r--r-- | docs/html/topic/performance/power/network/action-any-traffic.jd (renamed from docs/html/training/performance/battery/network/action-any-traffic.jd) | 0 | ||||
| -rw-r--r-- | docs/html/topic/performance/power/network/action-app-traffic.jd (renamed from docs/html/training/performance/battery/network/action-app-traffic.jd) | 0 | ||||
| -rw-r--r-- | docs/html/topic/performance/power/network/action-server-traffic.jd (renamed from docs/html/training/performance/battery/network/action-server-traffic.jd) | 0 | ||||
| -rw-r--r-- | docs/html/topic/performance/power/network/action-user-traffic.jd (renamed from docs/html/training/performance/battery/network/action-user-traffic.jd) | 0 | ||||
| -rw-r--r-- | docs/html/topic/performance/power/network/analyze-data.jd (renamed from docs/html/training/performance/battery/network/analyze-data.jd) | 0 | ||||
| -rw-r--r-- | docs/html/topic/performance/power/network/gather-data.jd (renamed from docs/html/training/performance/battery/network/gather-data.jd) | 0 | ||||
| -rw-r--r-- | docs/html/topic/performance/power/network/index.jd (renamed from docs/html/training/performance/battery/network/index.jd) | 0 | ||||
| -rw-r--r-- | docs/html/training/auto/index.jd | 6 |
13 files changed, 2453 insertions, 7 deletions
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml index 774339a964db..cf56f2bb1268 100644 --- a/docs/html/_redirects.yaml +++ b/docs/html/_redirects.yaml @@ -799,10 +799,24 @@ redirects: to: http://android-developers.blogspot.com/2016/03/first-preview-of-android-n-developer.html - from: /reference/org/apache/http/... to: /about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client -- from: /shareables/... - to: https://commondatastorage.googleapis.com/androiddevelopers/shareables/... -- from: /downloads/... - to: https://commondatastorage.googleapis.com/androiddevelopers/... +- from: /shareables/ + to: https://commondatastorage.googleapis.com/androiddevelopers/shareables/ +- from: /downloads/ + to: https://commondatastorage.googleapis.com/androiddevelopers/ +- from: /training/performance/battery/network/action-any-traffic.html + to: /topic/performance/power/network/action-any-traffic.html +- from: /training/performance/battery/network/action-app-traffic.html + to: /topic/performance/power/network/action-app-traffic.html +- from: /training/performance/battery/network/action-server-traffic.html + to: /topic/performance/power/network/action-server-traffic.html +- from: /training/performance/battery/network/action-user-traffic.html + to: /topic/performance/power/network/action-user-traffic.html +- from: /training/performance/battery/network/analyze-data.html + to: /topic/performance/power/network/analyze-data.html +- from: /training/performance/battery/network/gather-data.html + to: /topic/performance/power/network/gather-data.html +- from: /training/performance/battery/network/index.html + to: /topic/performance/power/network/index.html # Redirects for the new [dac]/topic/libraries/ area @@ -1176,4 +1190,4 @@ redirects: - from: /r/studio-ui/experimental-to-stable-gradle.html to: http://tools.android.com/tech-docs/new-build-system/gradle-experimental/experimental-to-stable-gradle - from: /r/studio-ui/sdk-manager.html - to: https://developer.android.com/studio/intro/update.html#sdk-manager
\ No newline at end of file + to: https://developer.android.com/studio/intro/update.html#sdk-manager diff --git a/docs/html/jd_extras_en.js b/docs/html/jd_extras_en.js index dc152f87837b..5784179a0058 100644 --- a/docs/html/jd_extras_en.js +++ b/docs/html/jd_extras_en.js @@ -3613,6 +3613,59 @@ METADATA['en'].extras = METADATA['en'].extras.concat([ "lang":"en", "type":"Video" }, + + { + "title":"Android Performance Testing Codelab", + "titleFriendly":"", + "summary":"This codelab shows how to create a stable and reusable testing harness to run performance tests on a very simple existing app.", + "url":"https://codelabs.developers.google.com/codelabs/android-perf-testing/index.html", + "group":"", + "keywords": ["testing"], + "tags": [ + ], + "image":"images/testing/testing-icon.png", + "type":"google" + }, + + { + "title":"Introduction to Doze", + "category":"android developers", + "summary":"A new way for the device to preserve battery by entering into an idle state.", + "url":"https://www.youtube.com/watch?v=N72ksDKrX6c", + "group":"", + "keywords": ["android, performance","battery"], + "tags": ["video, performance"], + "image":"https://i1.ytimg.com/vi/N72ksDKrX6c/maxresdefault.jpg", + "lang":"en", + "type":"develop" + }, + + { + "title":"Performance Profiling Tools", + "category":"training", + "summary":"Take a look under the hood to identify performance bottlenecks.", + "url":"https://developer.android.com/tools/performance/index.html", + "group":"", + "keywords": ["android, performance","profiling"], + "tags": ["android, performance"], + "image":"/assets/images/resource-card-default-android.jpg", + "lang":"en", + "type":"develop" + }, + + { + "title":"Managing Your App's Memory", + "category":"training", + "summary":"Learn how you can proactively reduce memory usage while developing for Android.", + "url":"https://developer.android.com/training/articles/memory.html", + "group":"", + "keywords": ["android, performance","profiling"], + "tags": ["android, performance"], + "image":"/assets/images/resource-card-default-android.jpg", + "lang":"en", + "type":"develop" + }, + { "url":"https://www.youtube.com/watch?v=QDM52bblwlg", "image": "images/distribute/hero-family-discovery.jpg", @@ -5379,12 +5432,26 @@ METADATA['en'].collections = { "preview/support.html" ] }, + "preview/landing/videos/first": { "title": "", "resources": [ "https://www.youtube.com/watch?v=CsulIu3UaUM" ] }, + + "develop/performance/landing": { + "title": "", + "resources": [ + "https://android-developers.blogspot.com/2010/07/multithreading-for-performance.html", + "https://www.udacity.com/course/ud825", + "https://www.youtube.com/watch?v=N72ksDKrX6c", + "https://developer.android.com/tools/performance/index.html", + "https://codelabs.developers.google.com/codelabs/android-perf-testing/index.html", + "https://developer.android.com/training/articles/memory.html", + ] + }, + "preview/landing/more": { "title": "", "resources": [ diff --git a/docs/html/topic/performance/_book.yaml b/docs/html/topic/performance/_book.yaml new file mode 100644 index 000000000000..fb9c1d2ee594 --- /dev/null +++ b/docs/html/topic/performance/_book.yaml @@ -0,0 +1,35 @@ +toc: +- title: Optimizing Power Consumption + path: /topic/performance/power/index.html + section: + - title: Reducing Network Battery Drain + path: /topic/performance/power/network/index.html + path_attributes: + - name: description + value: Access the network while going easy on battery life. + section: + - title: Collecting Network Traffic Data + path: /topic/performance/power/network/gather-data.html + - title: Analyzing Network Traffic Data + path: /topic/performance/power/network/analyze-data.html + - title: Optimizing User-Initiated Network Use + path: /topic/performance/power/network/action-user-traffic.html + - title: Optimizing Server-Initiated Network Use + path: /topic/performance/power/network/action-server-traffic.html + - title: Optimizing General Network Use + path: /topic/performance/power/network/action-any-traffic.html + - title: Implementing Doze + path: /monitoring-device-state/doze-standby.html + path_attributes: + - name: description + value: Help ensure the device isn't depleting the battery when not in use. +- title: Launch-Time Performance + path: /topic/performance/launch-time.html +- title: Better Performance through Threading + path: /topic/performance/threads.html +- title: Optimizing View Hierarchies + path: /topic/performance/optimizing-view-hierarchies.html +- title: Intelligent Job-Scheduling + path: /topic/performance/scheduling.html +- title: Reducing APK Size + path: /topic/performance/apk/reduce-apk-size.html diff --git a/docs/html/topic/performance/index.jd b/docs/html/topic/performance/index.jd new file mode 100644 index 000000000000..8f64404e4e0c --- /dev/null +++ b/docs/html/topic/performance/index.jd @@ -0,0 +1,39 @@ +page.title=Performance +page.article=true +page.metaDescription=Android Performance does nice things. Details to come. + +meta.tags="performance" +page.tags="performance" + +@jd:body + +<iframe width="448" height="252" src="//www.youtube.com/embed/qk5F6Bxqhr4?utm_source=dac&utm_medium=video&utm_content=andfuntrain&utm_campaign=udacint?rel=0&hd=1" frameborder="0" allowfullscreen style="float: right; margin: 0 0 20px 20px;"></iframe> + +<p>Implementing a cool idea is a great start toward an app that delights users, +but it's just the beginning. The next step is maximizing your app's performance. +For example, users want apps that:</p> + +<ul> + <li>Use power sparingly.</li> + <li>Start up quickly.</li> + <li>Respond quickly to user interaction.</li> +</ul> + +<p>This section provides you with the know-how you need in order to make +your apps not only cool, but also performant. Read on to discover how to +develop apps that are power-thrifty, responsive, efficient, and well-behaved.</p> + + + + +<section class="dac-section dac-small" id="latest-games"><div class="wrap"> + <h2 class="norule" style="margin:0 0">More resources</h2> + <div class="resource-widget resource-flow-layout col-16" + data-query="collection:develop/performance/landing" + data-sortOrder="random" + data-cardSizes="6x6" + data-maxResults="24" + data-items-per-page="24" + data-initial-results="6"></div> + </div> +</section>
\ No newline at end of file diff --git a/docs/html/topic/performance/performance_toc.cs b/docs/html/topic/performance/performance_toc.cs new file mode 100644 index 000000000000..49191bcd85b5 --- /dev/null +++ b/docs/html/topic/performance/performance_toc.cs @@ -0,0 +1,2289 @@ +<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." + >It worked!!</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"> + <div class="nav-section-header"> + <a href="<?cs var:toroot ?>training/backup/index.html" + description= + "How to sync and back up app and user data to remote web services in the + cloud and how to restore the data back to multiple devices." + >Syncing to the Cloud</a> + </div> + <ul> + <li><a href="<?cs var:toroot ?>training/backup/autosyncapi.html"> + Configuring Auto Backup + </a> + </li> + <li><a href="<?cs var:toroot ?>training/backup/backupapi.html"> + Using the Backup API + </a> + </li> + </ul> + <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> + </ul> + </li> + <!-- End: Building for Auto --> + + + <!-- Start: Building for Work --> + <li class="nav-section"> + <div class="nav-section-header"> + <a href="<?cs var:toroot ?>training/enterprise/index.html"> + <span class="small">Building Apps for</span><br/> + Work + </a> + </div> + <ul> + <li><a href="<?cs var:toroot ?>training/enterprise/app-compatibility.html"> + Ensuring Compatibility with Managed Profiles + </a> + </li> + <li><a href="<?cs var:toroot ?>training/enterprise/app-restrictions.html"> + Implementing App Restrictions + </a> + </li> + <li><a href="<?cs var:toroot ?>training/enterprise/work-policy-ctrl.html"> + Building a Device Policy Controller + </a> + </li> + <li><a href="<?cs var:toroot ?>training/enterprise/cosu.html"> + Configuring Corporate-Owned, Single-Use Devices + </a> + </li> + </ul> + </li> + <!-- End: Building for Work --> + + + <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/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 ?>training/enterprise/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> diff --git a/docs/html/training/performance/battery/network/action-any-traffic.jd b/docs/html/topic/performance/power/network/action-any-traffic.jd index eafb3b894f67..eafb3b894f67 100644 --- a/docs/html/training/performance/battery/network/action-any-traffic.jd +++ b/docs/html/topic/performance/power/network/action-any-traffic.jd diff --git a/docs/html/training/performance/battery/network/action-app-traffic.jd b/docs/html/topic/performance/power/network/action-app-traffic.jd index d62461eb630c..d62461eb630c 100644 --- a/docs/html/training/performance/battery/network/action-app-traffic.jd +++ b/docs/html/topic/performance/power/network/action-app-traffic.jd diff --git a/docs/html/training/performance/battery/network/action-server-traffic.jd b/docs/html/topic/performance/power/network/action-server-traffic.jd index e568c8a35e98..e568c8a35e98 100644 --- a/docs/html/training/performance/battery/network/action-server-traffic.jd +++ b/docs/html/topic/performance/power/network/action-server-traffic.jd diff --git a/docs/html/training/performance/battery/network/action-user-traffic.jd b/docs/html/topic/performance/power/network/action-user-traffic.jd index e3ddaa25337f..e3ddaa25337f 100644 --- a/docs/html/training/performance/battery/network/action-user-traffic.jd +++ b/docs/html/topic/performance/power/network/action-user-traffic.jd diff --git a/docs/html/training/performance/battery/network/analyze-data.jd b/docs/html/topic/performance/power/network/analyze-data.jd index 593201af8a16..593201af8a16 100644 --- a/docs/html/training/performance/battery/network/analyze-data.jd +++ b/docs/html/topic/performance/power/network/analyze-data.jd diff --git a/docs/html/training/performance/battery/network/gather-data.jd b/docs/html/topic/performance/power/network/gather-data.jd index 32edcd541fd7..32edcd541fd7 100644 --- a/docs/html/training/performance/battery/network/gather-data.jd +++ b/docs/html/topic/performance/power/network/gather-data.jd diff --git a/docs/html/training/performance/battery/network/index.jd b/docs/html/topic/performance/power/network/index.jd index 1da30cfb869e..1da30cfb869e 100644 --- a/docs/html/training/performance/battery/network/index.jd +++ b/docs/html/topic/performance/power/network/index.jd diff --git a/docs/html/training/auto/index.jd b/docs/html/training/auto/index.jd index 0a7ceb34298d..a0d0bb87457b 100644 --- a/docs/html/training/auto/index.jd +++ b/docs/html/training/auto/index.jd @@ -8,7 +8,9 @@ page.metaDescription=Starting point for building apps for Auto, with guidelines, @jd:body -<iframe width="448" height="252" src="//www.youtube.com/embed/ctiaVxgclsg?autohide=1&showinfo=0" frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe> + <iframe width="338" height="169" src="//www.youtube.com/embed/LfVBFFoy9Y0?utm_source=dac&utm_medium=video&utm_content=andfuntrain&utm_campaign=udacint?rel=0&hd=1" frameborder="0" allowfullscreen></iframe> + <p><a href="https://www.udacity.com/course/ud853" class="button" + style="width:100%">Start the video course</a> <p> The Android platform enables you to extend your app to work with in-vehicle console systems @@ -27,7 +29,7 @@ page.metaDescription=Starting point for building apps for Auto, with guidelines, For more information, follow the links below to learn how to extend your Android app to support use in vehicles. </p> - + <h2 id="overview">Get Started</h2> <p> |