Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1 | toc: |
| 2 | - title: Getting Started |
| 3 | path: /training/index.html |
| 4 | section: |
| 5 | - title: Building Your First App |
| 6 | path: /training/basics/firstapp/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 7 | path_attributes: |
| 8 | - name: description |
| 9 | value: After you've installed the Android SDK, start with this class to learn the basics about Android app development. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 10 | section: |
| 11 | - title: Creating an Android Project |
| 12 | path: /training/basics/firstapp/creating-project.html |
| 13 | - title: Running Your Application |
| 14 | path: /training/basics/firstapp/running-app.html |
| 15 | - title: Building a Simple User Interface |
| 16 | path: /training/basics/firstapp/building-ui.html |
| 17 | - title: Starting Another Activity |
| 18 | path: /training/basics/firstapp/starting-activity.html |
| 19 | - title: Supporting Different Devices |
| 20 | path: /training/basics/supporting-devices/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 21 | path_attributes: |
| 22 | - name: description |
| 23 | value: How to build your app with alternative resources that provide an optimized user experience on multiple device form factors using a single APK. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 24 | section: |
| 25 | - title: Supporting Different Languages |
| 26 | path: /training/basics/supporting-devices/languages.html |
| 27 | - title: Supporting Different Screens |
| 28 | path: /training/basics/supporting-devices/screens.html |
| 29 | - title: Supporting Different Platform Versions |
| 30 | path: /training/basics/supporting-devices/platforms.html |
| 31 | - title: Managing the Activity Lifecycle |
| 32 | path: /training/basics/activity-lifecycle/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 33 | path_attributes: |
| 34 | - name: ja-lang |
| 35 | value: アクティビティのライフサイクル 管理 |
| 36 | - name: ko-lang |
| 37 | value: 액티비티 수명 주기 관리하기 |
| 38 | - name: pt-br-lang |
| 39 | value: Como gerenciar o ciclo de vida da atividade |
| 40 | - name: ru-lang |
| 41 | value: Управление жизненным циклом операций |
| 42 | - name: zh-cn-lang |
| 43 | value: 管理活动生命周期 |
| 44 | - name: zh-tw-lang |
| 45 | value: 管理應用行為顯示生命週期 |
| 46 | - name: description |
| 47 | value: How Android activities live and die and how to create a seamless user experience by implementing lifecycle callback methods. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 48 | section: |
| 49 | - title: Starting an Activity |
| 50 | path: /training/basics/activity-lifecycle/starting.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 51 | path_attributes: |
| 52 | - name: ja-lang |
| 53 | value: アクティビティを開始する |
| 54 | - name: ko-lang |
| 55 | value: 액티비티 시작하기 |
| 56 | - name: pt-br-lang |
| 57 | value: Iniciando uma atividade |
| 58 | - name: ru-lang |
| 59 | value: Запуск операции |
| 60 | - name: zh-cn-lang |
| 61 | value: 开始活动 |
| 62 | - name: zh-tw-lang |
| 63 | value: 啟動應用行為顯示 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 64 | - title: Pausing and Resuming an Activity |
| 65 | path: /training/basics/activity-lifecycle/pausing.html |
| 66 | - title: Stopping and Restarting an Activity |
| 67 | path: /training/basics/activity-lifecycle/stopping.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 68 | path_attributes: |
| 69 | - name: ja-lang |
| 70 | value: アクティビティの一時停止と再開 |
| 71 | - name: ko-lang |
| 72 | value: 액티비티 일시정지 및 재개하기 |
| 73 | - name: pt-br-lang |
| 74 | value: Pausando e reiniciando uma atividade |
| 75 | - name: ru-lang |
| 76 | value: Приостановка и возобновление операции |
| 77 | - name: zh-cn-lang |
| 78 | value: 暂停和继续活动 |
| 79 | - name: zh-tw-lang |
| 80 | value: 暫停並繼續應用行為顯示 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 81 | - title: Recreating an Activity |
| 82 | path: /training/basics/activity-lifecycle/recreating.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 83 | path_attributes: |
| 84 | - name: ja-lang |
| 85 | value: アクティビティを再作成する |
| 86 | - name: ko-lang |
| 87 | value: 액티비티 재생성하기 |
| 88 | - name: pt-br-lang |
| 89 | value: Recriando uma atividade |
| 90 | - name: ru-lang |
| 91 | value: Воссоздание операции |
| 92 | - name: zh-cn-lang |
| 93 | value: 重新创建活动 |
| 94 | - name: zh-tw-lang |
| 95 | value: 重新建立應用行為顯示 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 96 | - title: Building a Dynamic UI with Fragments |
| 97 | path: /training/basics/fragments/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 98 | path_attributes: |
| 99 | - name: description |
| 100 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 101 | section: |
| 102 | - title: Creating a Fragment |
| 103 | path: /training/basics/fragments/creating.html |
| 104 | - title: Building a Flexible UI |
| 105 | path: /training/basics/fragments/fragment-ui.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 106 | path_attributes: |
| 107 | - name: zh-cn-lang |
| 108 | value: 构建灵活的界面 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 109 | - title: Communicating with Other Fragments |
| 110 | path: /training/basics/fragments/communicating.html |
| 111 | - title: Saving Data |
| 112 | path: /training/basics/data-storage/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 113 | path_attributes: |
| 114 | - name: ja-lang |
| 115 | value: データの保存 |
| 116 | - name: ko-lang |
| 117 | value: 데이터 저장하기 |
| 118 | - name: pt-br-lang |
| 119 | value: Salvando dados |
| 120 | - name: ru-lang |
| 121 | value: Сохранение данных |
| 122 | - name: zh-cn-lang |
| 123 | value: 保存数据 |
| 124 | - name: zh-tw-lang |
| 125 | value: 儲存資料 |
| 126 | - name: description |
| 127 | value: How to save data on the device, whether it's temporary files, downloaded app assets, user media, structured data, or something else. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 128 | section: |
| 129 | - title: Saving Key-Value Sets |
| 130 | path: /training/basics/data-storage/shared-preferences.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 131 | path_attributes: |
| 132 | - name: ja-lang |
| 133 | value: キー値セットを保存する |
| 134 | - name: ko-lang |
| 135 | value: 키-값 세트 저장하기 |
| 136 | - name: pt-br-lang |
| 137 | value: Salvando conjuntos de valor-chave |
| 138 | - name: ru-lang |
| 139 | value: Сохранение наборов "ключ-значение" |
| 140 | - name: zh-cn-lang |
| 141 | value: 保存键值集 |
| 142 | - name: zh-tw-lang |
| 143 | value: 儲存索引鍵值組 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 144 | - title: Saving Files |
| 145 | path: /training/basics/data-storage/files.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 146 | path_attributes: |
| 147 | - name: ja-lang |
| 148 | value: ファイルを保存する |
| 149 | - name: ko-lang |
| 150 | value: 파일 저장하기 |
| 151 | - name: pt-br-lang |
| 152 | value: Salvando arquivos |
| 153 | - name: ru-lang |
| 154 | value: Сохранение файлов |
| 155 | - name: zh-cn-lang |
| 156 | value: 保存文件 |
| 157 | - name: zh-tw-lang |
| 158 | value: 儲存檔案 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 159 | - title: Saving Data in SQL Databases |
| 160 | path: /training/basics/data-storage/databases.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 161 | path_attributes: |
| 162 | - name: ja-lang |
| 163 | value: SQL データベースにデータを保存する |
| 164 | - name: ko-lang |
| 165 | value: SQL 데이터베이스에 데이터 저장하기 |
| 166 | - name: pt-br-lang |
| 167 | value: Salvando dados em bancos de dados do SQL |
| 168 | - name: ru-lang |
| 169 | value: Сохранение данных в базах данных SQL |
| 170 | - name: zh-cn-lang |
| 171 | value: 在 SQL 数据库中保存数据 |
| 172 | - name: zh-tw-lang |
| 173 | value: 在 SQL 資料庫中儲存資料 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 174 | - title: Interacting with Other Apps |
| 175 | path: /training/basics/intents/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 176 | path_attributes: |
| 177 | - name: ja-lang |
| 178 | value: 他のアプリとの相互操作 |
| 179 | - name: ko-lang |
| 180 | value: 액티비티 수명 주기 관리하기 |
| 181 | - name: pt-br-lang |
| 182 | value: Interagindo com outros aplicativos |
| 183 | - name: ru-lang |
| 184 | value: Взаимодействие с другими приложениями |
| 185 | - name: zh-cn-lang |
| 186 | value: 与其他应用交互 |
| 187 | - name: zh-tw-lang |
| 188 | value: 與其他應用程式互動 |
| 189 | - name: description |
| 190 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 191 | section: |
| 192 | - title: Sending the User to Another App |
| 193 | path: /training/basics/intents/sending.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 194 | path_attributes: |
| 195 | - name: ja-lang |
| 196 | value: 別のアプリにユーザーを送る |
| 197 | - name: ko-lang |
| 198 | value: 다른 앱으로 사용자 보내기 |
| 199 | - name: pt-br-lang |
| 200 | value: Enviando o usuário para outro aplicativo |
| 201 | - name: ru-lang |
| 202 | value: Направление пользователя в другое приложение |
| 203 | - name: zh-cn-lang |
| 204 | value: 向另一个应用发送用户 |
| 205 | - name: zh-tw-lang |
| 206 | value: 將使用者傳送至其他應用程式 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 207 | - title: Getting a Result from the Activity |
| 208 | path: /training/basics/intents/result.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 209 | path_attributes: |
| 210 | - name: ja-lang |
| 211 | value: アクティビティから結果を取得する |
| 212 | - name: ko-lang |
| 213 | value: 액티비티로부터 결과 가져오기 |
| 214 | - name: pt-br-lang |
| 215 | value: Obtendo resultados de uma atividade |
| 216 | - name: ru-lang |
| 217 | value: Получение результата операции |
| 218 | - name: zh-cn-lang |
| 219 | value: 获取活动的结果 |
| 220 | - name: zh-tw-lang |
| 221 | value: 從應用行為顯示取得結果 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 222 | - title: Allowing Other Apps to Start Your Activity |
| 223 | path: /training/basics/intents/filters.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 224 | path_attributes: |
| 225 | - name: ja-lang |
| 226 | value: 他のアプリからのアクティビティの開始を許可する |
| 227 | - name: ko-lang |
| 228 | value: 다른 앱이 자신의 액티비티를 시작하도록 허용하기 |
| 229 | - name: pt-br-lang |
| 230 | value: Permitindo que outros aplicativos iniciem sua atividade |
| 231 | - name: ru-lang |
| 232 | value: Разрешение другим приложениям на запуск вашей операции |
| 233 | - name: zh-cn-lang |
| 234 | value: 允许其他应用开始您的活动 |
| 235 | - name: zh-tw-lang |
| 236 | value: 允許其他應用程式啟動您的應用行為顯示 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 237 | - title: Working with System Permissions |
| 238 | path: /training/permissions/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 239 | path_attributes: |
| 240 | - name: description |
| 241 | value: How to declare that your app needs access to features and resources outside of its 'sandbox', and how to request those privileges at runtime. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 242 | section: |
| 243 | - title: Declaring Permissions |
| 244 | path: /training/permissions/declaring.html |
| 245 | - title: Requesting Permissions at Run Time |
| 246 | path: /training/permissions/requesting.html |
| 247 | - title: Best Practices for Runtime Permissions |
| 248 | path: /training/permissions/best-practices.html |
| 249 | |
| 250 | - title: Building Apps with Content Sharing |
| 251 | path: /training/building-content-sharing.html |
| 252 | section: |
| 253 | - title: Sharing Simple Data |
| 254 | path: /training/sharing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 255 | path_attributes: |
| 256 | - name: description |
| 257 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 258 | section: |
| 259 | - title: Sending Simple Data to Other Apps |
| 260 | path: /training/sharing/send.html |
| 261 | - title: Receiving Simple Data from Other Apps |
| 262 | path: /training/sharing/receive.html |
| 263 | - title: Adding an Easy Share Action |
| 264 | path: /training/sharing/shareaction.html |
| 265 | - title: Sharing Files |
| 266 | path: /training/secure-file-sharing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 267 | path_attributes: |
| 268 | - name: description |
| 269 | value: How to provide secure access to a file associated with your app using a content URI and temporary access permissions. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 270 | section: |
| 271 | - title: Setting Up File Sharing |
| 272 | path: /training/secure-file-sharing/setup-sharing.html |
| 273 | - title: Sharing a File |
| 274 | path: /training/secure-file-sharing/share-file.html |
| 275 | - title: Requesting a Shared File |
| 276 | path: /training/secure-file-sharing/request-file.html |
| 277 | - title: Retrieving File Information |
| 278 | path: /training/secure-file-sharing/retrieve-info.html |
| 279 | - title: Sharing Files with NFC |
| 280 | path: /training/beam-files/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 281 | path_attributes: |
| 282 | - name: description |
| 283 | value: How to transfer files between devices using the NFC Android Beam feature. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 284 | section: |
| 285 | - title: Sending Files to Another Device |
| 286 | path: /training/beam-files/send-files.html |
| 287 | - title: Receiving Files from Another Device |
| 288 | path: /training/beam-files/receive-files.html |
| 289 | |
| 290 | - title: Building Apps with Multimedia |
| 291 | path: /training/building-multimedia.html |
| 292 | section: |
| 293 | - title: Managing Audio Playback |
| 294 | path: /training/managing-audio/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 295 | path_attributes: |
| 296 | - name: description |
| 297 | value: How to respond to hardware audio key presses, request audio focus when playing audio, and respond appropriately to changes in audio focus. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 298 | section: |
| 299 | - title: Controlling Your App's Volume and Playback |
| 300 | path: /training/managing-audio/volume-playback.html |
| 301 | - title: Managing Audio Focus |
| 302 | path: /training/managing-audio/audio-focus.html |
| 303 | - title: Dealing with Audio Output Hardware |
| 304 | path: /training/managing-audio/audio-output.html |
| 305 | - title: Capturing Photos |
| 306 | path: /training/camera/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 307 | path_attributes: |
| 308 | - name: description |
| 309 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 310 | section: |
| 311 | - title: Taking Photos Simply |
| 312 | path: /training/camera/photobasics.html |
| 313 | - title: Recording Videos Simply |
| 314 | path: /training/camera/videobasics.html |
| 315 | - title: Controlling the Camera |
| 316 | path: /training/camera/cameradirect.html |
| 317 | - title: Printing Content |
| 318 | path: /training/printing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 319 | path_attributes: |
| 320 | - name: description |
| 321 | value: How to print photos, HTML documents, and custom documents from your app. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 322 | section: |
| 323 | - title: Photos |
| 324 | path: /training/printing/photos.html |
| 325 | - title: HTML Documents |
| 326 | path: /training/printing/html-docs.html |
| 327 | - title: Custom Documents |
| 328 | path: /training/printing/custom-docs.html |
| 329 | |
| 330 | - title: Building Apps with Graphics & Animation |
| 331 | path: /training/building-graphics.html |
| 332 | section: |
| 333 | - title: Displaying Bitmaps Efficiently |
| 334 | path: /training/displaying-bitmaps/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 335 | path_attributes: |
| 336 | - name: description |
| 337 | value: How to load and process bitmaps while keeping your user interface responsive and avoid exceeding memory limits. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 338 | section: |
| 339 | - title: Loading Large Bitmaps Efficiently |
| 340 | path: /training/displaying-bitmaps/load-bitmap.html |
| 341 | - title: Processing Bitmaps Off the UI Thread |
| 342 | path: /training/displaying-bitmaps/process-bitmap.html |
| 343 | - title: Caching Bitmaps |
| 344 | path: /training/displaying-bitmaps/cache-bitmap.html |
| 345 | - title: Managing Bitmap Memory |
| 346 | path: /training/displaying-bitmaps/manage-memory.html |
| 347 | - title: Displaying Bitmaps in Your UI |
| 348 | path: /training/displaying-bitmaps/display-bitmap.html |
| 349 | - title: Displaying Graphics with OpenGL ES |
| 350 | path: /training/graphics/opengl/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 351 | path_attributes: |
| 352 | - name: description |
| 353 | value: How to create OpenGL graphics within the Android app framework and respond to touch input. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 354 | section: |
| 355 | - title: Building an OpenGL ES Environment |
| 356 | path: /training/graphics/opengl/environment.html |
| 357 | - title: Defining Shapes |
| 358 | path: /training/graphics/opengl/shapes.html |
| 359 | - title: Drawing Shapes |
| 360 | path: /training/graphics/opengl/draw.html |
| 361 | - title: Applying Projection and Camera Views |
| 362 | path: /training/graphics/opengl/projection.html |
| 363 | - title: Adding Motion |
| 364 | path: /training/graphics/opengl/motion.html |
| 365 | - title: Responding to Touch Events |
| 366 | path: /training/graphics/opengl/touch.html |
| 367 | - title: Animating Views Using Scenes and Transitions |
| 368 | path: /training/transitions/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 369 | path_attributes: |
| 370 | - name: description |
| 371 | value: How to animate state changes in a view hierarchy using transitions. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 372 | section: |
| 373 | - title: The Transitions Framework |
| 374 | path: /training/transitions/overview.html |
| 375 | - title: Creating a Scene |
| 376 | path: /training/transitions/scenes.html |
| 377 | - title: Applying a Transition |
| 378 | path: /training/transitions/transitions.html |
| 379 | - title: Creating Custom Transitions |
| 380 | path: /training/transitions/custom-transitions.html |
| 381 | - title: Adding Animations |
| 382 | path: /training/animation/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 383 | path_attributes: |
| 384 | - name: description |
| 385 | value: How to add transitional animations to your user interface. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 386 | section: |
| 387 | - title: Crossfading Two Views |
| 388 | path: /training/animation/crossfade.html |
| 389 | - title: Using ViewPager for Screen Slide |
| 390 | path: /training/animation/screen-slide.html |
| 391 | - title: Displaying Card Flip Animations |
| 392 | path: /training/animation/cardflip.html |
| 393 | - title: Zooming a View |
| 394 | path: /training/animation/zoom.html |
| 395 | - title: Animating Layout Changes |
| 396 | path: /training/animation/layout.html |
| 397 | |
| 398 | - title: Building Apps with Connectivity & the Cloud |
| 399 | path: /training/building-connectivity.html |
| 400 | section: |
| 401 | - title: Connecting Devices Wirelessly |
| 402 | path: /training/connect-devices-wirelessly/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 403 | path_attributes: |
| 404 | - name: description |
| 405 | value: How to find and connect to local devices using Network Service Discovery and how to create peer-to-peer connections with Wi-Fi. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 406 | section: |
| 407 | - title: Using Network Service Discovery |
| 408 | path: /training/connect-devices-wirelessly/nsd.html |
| 409 | - title: Creating P2P Connections with Wi-Fi |
| 410 | path: /training/connect-devices-wirelessly/wifi-direct.html |
| 411 | - title: Using Wi-Fi P2P for Service Discovery |
| 412 | path: /training/connect-devices-wirelessly/nsd-wifi-direct.html |
| 413 | - title: Performing Network Operations |
| 414 | path: /training/basics/network-ops/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 415 | path_attributes: |
| 416 | - name: description |
| 417 | value: How to create a network connection, monitor the connection for changes in connectivity, and perform transactions with XML data. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 418 | section: |
| 419 | - title: Connecting to the Network |
| 420 | path: /training/basics/network-ops/connecting.html |
| 421 | - title: Managing Network Usage |
| 422 | path: /training/basics/network-ops/managing.html |
| 423 | - title: Parsing XML Data |
| 424 | path: /training/basics/network-ops/xml.html |
| 425 | - title: Transferring Data Without Draining the Battery |
| 426 | path: /training/efficient-downloads/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 427 | path_attributes: |
| 428 | - name: description |
| 429 | value: How to minimize your app's impact on the battery when performing downloads and other network transactions. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 430 | section: |
| 431 | - title: Optimizing Downloads for Efficient Network Access |
| 432 | path: /training/efficient-downloads/efficient-network-access.html |
| 433 | - title: Minimizing the Effect of Regular Updates |
| 434 | path: /training/efficient-downloads/regular_updates.html |
| 435 | - title: Redundant Downloads are Redundant |
| 436 | path: /training/efficient-downloads/redundant_redundant.html |
| 437 | - title: Modifying Patterns Based on the Connectivity Type |
| 438 | path: /training/efficient-downloads/connectivity_patterns.html |
| 439 | - title: Syncing to the Cloud |
| 440 | path: /training/backup/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 441 | path_attributes: |
| 442 | - name: description |
| 443 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 444 | section: |
| 445 | - title: Configuring Auto Backup |
| 446 | path: /training/backup/autosyncapi.html |
| 447 | - title: Using the Backup API |
| 448 | path: /training/backup/backupapi.html |
| 449 | - title: Resolving Cloud Save Conflicts |
| 450 | path: /training/cloudsave/conflict-res.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 451 | path_attributes: |
| 452 | - name: description |
| 453 | value: How to design a robust conflict resolution strategy for apps that save data to the cloud. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 454 | - title: Transferring Data Using Sync Adapters |
| 455 | path: /training/sync-adapters/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 456 | path_attributes: |
| 457 | - name: description |
| 458 | value: How to transfer data between the cloud and the device using the Android sync adapter framework |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 459 | section: |
| 460 | - title: Creating a Stub Authenticator |
| 461 | path: /training/sync-adapters/creating-authenticator.html |
| 462 | - title: Creating a Stub Content Provider |
| 463 | path: /training/sync-adapters/creating-stub-provider.html |
| 464 | - title: Creating a Sync Adapter |
| 465 | path: /training/sync-adapters/creating-sync-adapter.html |
| 466 | - title: Running a Sync Adapter |
| 467 | path: /training/sync-adapters/running-sync-adapter.html |
| 468 | - title: Transmitting Network Data Using Volley |
| 469 | path: /training/volley/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 470 | path_attributes: |
| 471 | - name: description |
| 472 | value: How to perform fast, scalable UI operations over the network using Volley |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 473 | section: |
| 474 | - title: Sending a Simple Request |
| 475 | path: /training/volley/simple.html |
| 476 | - title: Setting Up a RequestQueue |
| 477 | path: /training/volley/requestqueue.html |
| 478 | - title: Making a Standard Request |
| 479 | path: /training/volley/request.html |
| 480 | - title: Implementing a Custom Request |
| 481 | path: /training/volley/request-custom.html |
| 482 | |
| 483 | - title: Building Apps with Location & Maps |
| 484 | path: /training/building-location.html |
| 485 | section: |
| 486 | - title: Making Your App Location-Aware |
| 487 | path: /training/location/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 488 | path_attributes: |
| 489 | - name: description |
| 490 | value: How to add location-aware features to your app by getting the user's current location. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 491 | section: |
| 492 | - title: Getting the Last Known Location |
| 493 | path: /training/location/retrieve-current.html |
| 494 | - title: Changing Location Settings |
| 495 | path: /training/location/change-location-settings.html |
| 496 | - title: Receiving Location Updates |
| 497 | path: /training/location/receive-location-updates.html |
| 498 | - title: Displaying a Location Address |
| 499 | path: /training/location/display-address.html |
| 500 | - title: Creating and Monitoring Geofences |
| 501 | path: /training/location/geofencing.html |
| 502 | - title: Adding Maps |
| 503 | path: /training/maps/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 504 | path_attributes: |
| 505 | - name: description |
| 506 | value: How to add maps and mapping information to your app. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 507 | |
| 508 | - title: Building Apps with User Info & Sign-In |
| 509 | path: /training/building-userinfo.html |
| 510 | section: |
| 511 | - title: Accessing Contacts Data |
| 512 | path: /training/contacts-provider/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 513 | path_attributes: |
| 514 | - name: description |
| 515 | value: How to use Android's central address book, the Contacts Provider, to display contacts and their details and modify contact information. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 516 | section: |
| 517 | - title: Retrieving a List of Contacts |
| 518 | path: /training/contacts-provider/retrieve-names.html |
| 519 | - title: Retrieving Details for a Contact |
| 520 | path: /training/contacts-provider/retrieve-details.html |
| 521 | - title: Modifying Contacts Using Intents |
| 522 | path: /training/contacts-provider/modify-data.html |
| 523 | - title: Displaying the Quick Contact Badge |
| 524 | path: /training/contacts-provider/display-contact-badge.html |
| 525 | - title: Adding Sign-In |
| 526 | path: /training/sign-in/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 527 | path_attributes: |
| 528 | - name: description |
| 529 | value: How to add user sign-in functionality to your app. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 530 | |
| 531 | - title: Building Apps for Wearables |
| 532 | path: /training/building-wearables.html |
| 533 | section: |
| 534 | - title: Adding Wearable Features to Notifications |
| 535 | path: /training/wearables/notifications/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 536 | path_attributes: |
| 537 | - name: description |
| 538 | value: How to build handheld notifications that are synced to and look great on wearables. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 539 | section: |
| 540 | - title: Creating a Notification |
| 541 | path: /training/wearables/notifications/creating.html |
| 542 | - title: Receiving Voice Input in a Notification |
| 543 | path: /training/wearables/notifications/voice-input.html |
| 544 | - title: Adding Pages to a Notification |
| 545 | path: /training/wearables/notifications/pages.html |
| 546 | - title: Stacking Notifications |
| 547 | path: /training/wearables/notifications/stacks.html |
| 548 | - title: Creating Wearable Apps |
| 549 | path: /training/wearables/apps/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 550 | path_attributes: |
| 551 | - name: description |
| 552 | value: How to build apps that run directly on wearables. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 553 | section: |
| 554 | - title: Creating and Running a Wearable App |
| 555 | path: /training/wearables/apps/creating.html |
| 556 | - title: Creating Custom Layouts |
| 557 | path: /training/wearables/apps/layouts.html |
| 558 | - title: Keeping Your App Visible |
| 559 | path: /training/wearables/apps/always-on.html |
| 560 | - title: Adding Voice Capabilities |
| 561 | path: /training/wearables/apps/voice.html |
| 562 | - title: Packaging Wearable Apps |
| 563 | path: /training/wearables/apps/packaging.html |
| 564 | - title: Debugging over Bluetooth |
| 565 | path: /training/wearables/apps/bt-debugging.html |
| 566 | - title: Creating Custom UIs |
| 567 | path: /training/wearables/ui/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 568 | path_attributes: |
| 569 | - name: description |
| 570 | value: How to create custom user interfaces for wearable apps. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 571 | section: |
| 572 | - title: Defining Layouts |
| 573 | path: /training/wearables/ui/layouts.html |
| 574 | - title: Creating Cards |
| 575 | path: /training/wearables/ui/cards.html |
| 576 | - title: Creating Lists |
| 577 | path: /training/wearables/ui/lists.html |
| 578 | - title: Creating a 2D Picker |
| 579 | path: /training/wearables/ui/2d-picker.html |
| 580 | - title: Showing Confirmations |
| 581 | path: /training/wearables/ui/confirm.html |
| 582 | - title: Exiting Full-Screen Activities |
| 583 | path: /training/wearables/ui/exit.html |
| 584 | - title: Sending and Syncing Data |
| 585 | path: /training/wearables/data-layer/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 586 | path_attributes: |
| 587 | - name: description |
| 588 | value: How to sync data between handhelds and wearables. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 589 | section: |
| 590 | - title: Accessing the Wearable Data Layer |
| 591 | path: /training/wearables/data-layer/accessing.html |
| 592 | - title: Syncing Data Items |
| 593 | path: /training/wearables/data-layer/data-items.html |
| 594 | - title: Transferring Assets |
| 595 | path: /training/wearables/data-layer/assets.html |
| 596 | - title: Sending and Receiving Messages |
| 597 | path: /training/wearables/data-layer/messages.html |
| 598 | - title: Handling Data Layer Events |
| 599 | path: /training/wearables/data-layer/events.html |
| 600 | - title: Creating Watch Faces |
| 601 | path: /training/wearables/watch-faces/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 602 | path_attributes: |
| 603 | - name: description |
| 604 | value: How to create watch faces for wearables. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 605 | section: |
| 606 | - title: Designing Watch Faces |
| 607 | path: /training/wearables/watch-faces/designing.html |
| 608 | - title: Building a Watch Face Service |
| 609 | path: /training/wearables/watch-faces/service.html |
| 610 | - title: Drawing Watch Faces |
| 611 | path: /training/wearables/watch-faces/drawing.html |
| 612 | - title: Showing Information in Watch Faces |
| 613 | path: /training/wearables/watch-faces/information.html |
| 614 | - title: Creating Interactive Watch Faces |
| 615 | path: /training/wearables/watch-faces/interacting.html |
| 616 | - title: Providing Configuration Activities |
| 617 | path: /training/wearables/watch-faces/configuration.html |
| 618 | - title: Addressing Common Issues |
| 619 | path: /training/wearables/watch-faces/issues.html |
| 620 | - title: Optimizing Performance and Battery Life |
| 621 | path: /training/wearables/watch-faces/performance.html |
| 622 | - title: Detecting Location |
| 623 | path: /training/articles/wear-location-detection.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 624 | path_attributes: |
| 625 | - name: description |
| 626 | value: How to detect location data on Android Wear devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 627 | - title: Requesting Permissions |
| 628 | path: /training/articles/wear-permissions.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 629 | path_attributes: |
| 630 | - name: description |
| 631 | value: How to request permissions on Android Wear devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 632 | - title: Using the Speaker |
| 633 | path: /training/wearables/wearable-sounds.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 634 | path_attributes: |
| 635 | - name: description |
| 636 | value: How to use the speaker on Android Wear devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 637 | |
| 638 | - title: Building Apps for TV |
| 639 | path: /training/tv/index.html |
| 640 | section: |
| 641 | - title: Building TV Apps |
| 642 | path: /training/tv/start/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 643 | path_attributes: |
| 644 | - name: ja-lang |
| 645 | value: TV アプリのビルド |
| 646 | - name: description |
| 647 | value: How to start building TV apps or extend your existing app to run on TV devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 648 | section: |
| 649 | - title: Getting Started with TV Apps |
| 650 | path: /training/tv/start/start.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 651 | path_attributes: |
| 652 | - name: ja-lang |
| 653 | value: TV アプリのビルドを開始する |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 654 | - title: Handling TV Hardware |
| 655 | path: /training/tv/start/hardware.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 656 | path_attributes: |
| 657 | - name: ja-lang |
| 658 | value: TV ハードウェアを処理する |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 659 | - title: Building TV Layouts |
| 660 | path: /training/tv/start/layouts.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 661 | path_attributes: |
| 662 | - name: ja-lang |
| 663 | value: TV 向けレイアウトをビルドする |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 664 | - title: Creating TV Navigation |
| 665 | path: /training/tv/start/navigation.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 666 | path_attributes: |
| 667 | - name: ja-lang |
| 668 | value: TV 用のナビゲーションを作成する |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 669 | - title: Building TV Playback Apps |
| 670 | path: /training/tv/playback/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 671 | path_attributes: |
| 672 | - name: ja-lang |
| 673 | value: TV 再生アプリのビルド |
| 674 | - name: description |
| 675 | value: How to build apps that provide media catalogs and play content. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 676 | section: |
| 677 | - title: Creating a Catalog Browser |
| 678 | path: /training/tv/playback/browse.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 679 | path_attributes: |
| 680 | - name: ja-lang |
| 681 | value: カタログ ブラウザを作成する |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 682 | - title: Providing a Card View |
| 683 | path: /training/tv/playback/card.html |
| 684 | - title: Building a Details View |
| 685 | path: /training/tv/playback/details.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 686 | path_attributes: |
| 687 | - name: ja-lang |
| 688 | value: 詳細ビューをビルドする |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 689 | - title: Displaying a Now Playing Card |
| 690 | path: /training/tv/playback/now-playing.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 691 | path_attributes: |
| 692 | - name: ja-lang |
| 693 | value: 再生中カードを表示する |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 694 | - title: Adding a Guided Step |
| 695 | path: /training/tv/playback/guided-step.html |
| 696 | - title: Enabling Background Playback |
| 697 | path: /training/tv/playback/options.html |
| 698 | - title: Helping Users Find Content on TV |
| 699 | path: /training/tv/discovery/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 700 | path_attributes: |
| 701 | - name: description |
| 702 | value: How to help users discover content from your app. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 703 | section: |
| 704 | - title: Recommending TV Content |
| 705 | path: /training/tv/discovery/recommendations.html |
| 706 | - title: Making TV Apps Searchable |
| 707 | path: /training/tv/discovery/searchable.html |
| 708 | - title: Searching within TV Apps |
| 709 | path: /training/tv/discovery/in-app-search.html |
| 710 | - title: Building TV Games |
| 711 | path: /training/tv/games/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 712 | path_attributes: |
| 713 | - name: description |
| 714 | value: How to build games for TV. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 715 | - title: Building TV Channels |
| 716 | path: /training/tv/tif/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 717 | path_attributes: |
| 718 | - name: description |
| 719 | value: How to build channels for TV. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 720 | section: |
| 721 | - title: Developing a TV Input Service |
| 722 | path: /training/tv/tif/tvinput.html |
| 723 | - title: Working with Channel Data |
| 724 | path: /training/tv/tif/channel.html |
| 725 | - title: Managing User Interaction |
| 726 | path: /training/tv/tif/ui.html |
| 727 | - title: TV Apps Checklist |
| 728 | path: /training/tv/publishing/checklist.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 729 | path_attributes: |
| 730 | - name: description |
| 731 | value: An itemized list of requirements for TV apps. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 732 | |
| 733 | - title: Building Apps for Auto |
| 734 | path: /training/auto/index.html |
| 735 | section: |
| 736 | - title: Getting Started with Auto |
| 737 | path: /training/auto/start/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 738 | path_attributes: |
| 739 | - name: description |
| 740 | value: How to start building or extending apps that work with Auto devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 741 | - title: Playing Audio for Auto |
| 742 | path: /training/auto/audio/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 743 | path_attributes: |
| 744 | - name: description |
| 745 | value: How to extend audio apps to play content on Auto devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 746 | - title: Messaging for Auto |
| 747 | path: /training/auto/messaging/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 748 | path_attributes: |
| 749 | - name: description |
| 750 | value: How to extend text messaging apps to work with Auto devices. |
sreevanis | eb41bc0 | 2016-02-03 11:07:53 -0800 | [diff] [blame] | 751 | - title: Testing for Auto |
| 752 | path: /training/auto/testing/index.html |
| 753 | path_attributes: |
| 754 | - name: description |
| 755 | value: How to use DHU to test Auto apps. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 756 | |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 757 | - title: Best Practices for Interaction & Engagement |
| 758 | path: /training/best-ux.html |
| 759 | section: |
| 760 | - title: Designing Effective Navigation |
| 761 | path: /training/design-navigation/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 762 | path_attributes: |
| 763 | - name: description |
| 764 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 765 | section: |
| 766 | - title: Planning Screens and Their Relationships |
| 767 | path: /training/design-navigation/screen-planning.html |
| 768 | - title: Planning for Multiple Touchscreen Sizes |
| 769 | path: /training/design-navigation/multiple-sizes.html |
| 770 | - title: Providing Descendant and Lateral Navigation |
| 771 | path: /training/design-navigation/descendant-lateral.html |
| 772 | - title: Providing Ancestral and Temporal Navigation |
| 773 | path: /training/design-navigation/ancestral-temporal.html |
| 774 | - title: "Putting it All Together: Wireframing the Example App" |
| 775 | path: /training/design-navigation/wireframing.html |
| 776 | - title: Implementing Effective Navigation |
| 777 | path: /training/implementing-navigation/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 778 | path_attributes: |
| 779 | - name: description |
| 780 | value: How to implement various navigation patterns such as swipe views, a navigation drawer, and up navigation. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 781 | section: |
| 782 | - title: Creating Swipe Views with Tabs |
| 783 | path: /training/implementing-navigation/lateral.html |
| 784 | - title: Creating a Navigation Drawer |
| 785 | path: /training/implementing-navigation/nav-drawer.html |
| 786 | - title: Providing Up Navigation |
| 787 | path: /training/implementing-navigation/ancestral.html |
| 788 | - title: Providing Proper Back Navigation |
| 789 | path: /training/implementing-navigation/temporal.html |
| 790 | - title: Implementing Descendant Navigation |
| 791 | path: /training/implementing-navigation/descendant.html |
| 792 | - title: Notifying the User |
| 793 | path: /training/notify-user/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 794 | path_attributes: |
| 795 | - name: description |
| 796 | value: How to display messages called notifications outside of your application's UI. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 797 | section: |
| 798 | - title: Building a Notification |
| 799 | path: /training/notify-user/build-notification.html |
| 800 | - title: Preserving Navigation when Starting an Activity |
| 801 | path: /training/notify-user/navigation.html |
| 802 | - title: Updating Notifications |
| 803 | path: /training/notify-user/managing.html |
| 804 | - title: Using Big View Styles |
| 805 | path: /training/notify-user/expanded.html |
| 806 | - title: Displaying Progress in a Notification |
| 807 | path: /training/notify-user/display-progress.html |
| 808 | - title: Supporting Swipe-to-Refresh |
| 809 | path: /training/swipe/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 810 | path_attributes: |
| 811 | - name: description |
| 812 | value: How to modify your app's layout to support manual content updates triggered by the swipe-to-refresh gesture. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 813 | section: |
| 814 | - title: Adding Swipe-to-Refresh To Your App |
| 815 | path: /training/swipe/add-swipe-interface.html |
| 816 | - title: Responding to a Refresh Gesture |
| 817 | path: /training/swipe/respond-refresh-request.html |
| 818 | - title: Adding Search Functionality |
| 819 | path: /training/search/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 820 | path_attributes: |
| 821 | - name: description |
| 822 | value: How to properly add a search interface to your app and create a searchable database. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 823 | section: |
| 824 | - title: Setting up the Search Interface |
| 825 | path: /training/search/setup.html |
| 826 | - title: Storing and Searching for Data |
| 827 | path: /training/search/search.html |
| 828 | - title: Remaining Backward Compatible |
| 829 | path: /training/search/backward-compat.html |
| 830 | - title: Making Your App Content Searchable by Google |
| 831 | path: /training/app-indexing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 832 | path_attributes: |
| 833 | - name: description |
| 834 | value: How to enable deep linking and indexing of your application content so that users can open this content directly from their mobile search results. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 835 | section: |
| 836 | - title: Enabling Deep Links for App Content |
| 837 | path: /training/app-indexing/deep-linking.html |
| 838 | - title: Specifying App Content for Indexing |
| 839 | path: /training/app-indexing/enabling-app-indexing.html |
| 840 | - title: Optimizing Content for the Assistant |
| 841 | path: /training/articles/assistant.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 842 | path_attributes: |
| 843 | - name: description |
| 844 | value: Support contextually relevant actions through the Assist API. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 845 | - title: Handling App Links |
| 846 | path: /training/app-links/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 847 | path_attributes: |
| 848 | - name: description |
| 849 | value: How to enable the system to handle web requests by taking the user directly to your app instead of your website. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 850 | |
| 851 | - title: Best Practices for User Interface |
| 852 | path: /training/best-ui.html |
| 853 | section: |
| 854 | - title: Designing for Multiple Screens |
| 855 | path: /training/multiscreen/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 856 | path_attributes: |
| 857 | - name: es-lang |
| 858 | value: Cómo diseñar aplicaciones para varias pantallas |
| 859 | - name: ja-lang |
| 860 | value: 複数画面のデザイン |
| 861 | - name: zh-cn-lang |
| 862 | value: 针对多种屏幕进行设计 |
| 863 | - name: description |
| 864 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 865 | section: |
| 866 | - title: Supporting Different Screen Sizes |
| 867 | path: /training/multiscreen/screensizes.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 868 | path_attributes: |
| 869 | - name: es-lang |
| 870 | value: Cómo admitir varios tamaños de pantalla |
| 871 | - name: ja-lang |
| 872 | value: さまざまな画面サイズのサポート |
| 873 | - name: ko-lang |
| 874 | value: 다양한 화면 크기 지원 |
| 875 | - name: zh-cn-lang |
| 876 | value: 支持各种屏幕尺寸 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 877 | - title: Supporting Different Screen Densities |
| 878 | path: /training/multiscreen/screendensities.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 879 | path_attributes: |
| 880 | - name: es-lang |
| 881 | value: Cómo admitir varias densidades de pantalla |
| 882 | - name: ja-lang |
| 883 | value: さまざまな画面密度のサポート |
| 884 | - name: zh-cn-lang |
| 885 | value: 支持各种屏幕密度 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 886 | - title: Implementing Adaptive UI Flows |
| 887 | path: /training/multiscreen/adaptui.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 888 | path_attributes: |
| 889 | - name: es-lang |
| 890 | value: Cómo implementar interfaces de usuario adaptables |
| 891 | - name: ja-lang |
| 892 | value: 順応性のある UI フローの実装 |
| 893 | - name: zh-cn-lang |
| 894 | value: 实施自适应用户界面流程 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 895 | - title: Adding the App Bar |
| 896 | path: /training/appbar/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 897 | path_attributes: |
| 898 | - name: description |
| 899 | value: How to use the support library's toolbar widget to implement an app bar that displays properly on a wide range of devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 900 | section: |
| 901 | - title: Setting Up the App Bar |
| 902 | path: /training/appbar/setting-up.html |
| 903 | - title: Adding and Handling Actions |
| 904 | path: /training/appbar/actions.html |
| 905 | - title: Adding an Up Action |
| 906 | path: /training/appbar/up-action.html |
| 907 | - title: Action Views and Action Providers |
| 908 | path: /training/appbar/action-views.html |
| 909 | - title: Showing Pop-Up Messages |
| 910 | path: /training/snackbar/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 911 | path_attributes: |
| 912 | - name: description |
| 913 | value: How to use the support library's Snackbar widget to display a brief pop-up message. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 914 | section: |
| 915 | - title: Building and Displaying a Pop-Up Message |
| 916 | path: /training/snackbar/showing.html |
| 917 | - title: Adding an Action to a Message |
| 918 | path: /training/snackbar/action.html |
| 919 | - title: Creating Custom Views |
| 920 | path: /training/custom-views/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 921 | path_attributes: |
| 922 | - name: description |
| 923 | value: How to build custom UI widgets that are interactive and smooth. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 924 | section: |
| 925 | - title: Creating a Custom View Class |
| 926 | path: /training/custom-views/create-view.html |
| 927 | - title: Implementing Custom Drawing |
| 928 | path: /training/custom-views/custom-drawing.html |
| 929 | - title: Making the View Interactive |
| 930 | path: /training/custom-views/making-interactive.html |
| 931 | - title: Optimizing the View |
| 932 | path: /training/custom-views/optimizing-view.html |
| 933 | - title: Creating Backward-Compatible UIs |
| 934 | path: /training/backward-compatible-ui/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 935 | path_attributes: |
| 936 | - name: description |
| 937 | value: How to use UI components and other APIs from the more recent versions of Android while remaining compatible with older versions of the platform. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 938 | section: |
| 939 | - title: Abstracting the New APIs |
| 940 | path: /training/backward-compatible-ui/abstracting.html |
| 941 | - title: Proxying to the New APIs |
| 942 | path: /training/backward-compatible-ui/new-implementation.html |
| 943 | - title: Creating an Implementation with Older APIs |
| 944 | path: /training/backward-compatible-ui/older-implementation.html |
| 945 | - title: Using the Version-Aware Component |
| 946 | path: /training/backward-compatible-ui/using-component.html |
| 947 | - title: Implementing Accessibility |
| 948 | path: /training/accessibility/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 949 | path_attributes: |
| 950 | - name: description |
| 951 | value: How to make your app accessible to users with vision impairment or other physical disabilities. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 952 | section: |
| 953 | - title: Developing Accessible Applications |
| 954 | path: /training/accessibility/accessible-app.html |
| 955 | - title: Developing Accessibility Services |
| 956 | path: /training/accessibility/service.html |
| 957 | - title: Accessibility Testing Checklist |
| 958 | path: /training/accessibility/testing.html |
| 959 | - title: Managing the System UI |
| 960 | path: /training/system-ui/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 961 | path_attributes: |
| 962 | - name: description |
| 963 | value: How to hide and show status and navigation bars across different versions of Android, while managing the display of other screen components. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 964 | section: |
| 965 | - title: Dimming the System Bars |
| 966 | path: /training/system-ui/dim.html |
| 967 | - title: Hiding the Status Bar |
| 968 | path: /training/system-ui/status.html |
| 969 | - title: Hiding the Navigation Bar |
| 970 | path: /training/system-ui/navigation.html |
| 971 | - title: Using Immersive Full-Screen Mode |
| 972 | path: /training/system-ui/immersive.html |
| 973 | - title: Responding to UI Visibility Changes |
| 974 | path: /training/system-ui/visibility.html |
| 975 | - title: Creating Apps with Material Design |
| 976 | path: /training/material/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 977 | path_attributes: |
| 978 | - name: es-lang |
| 979 | value: Crear aplicaciones con Material Design |
| 980 | - name: in-lang |
| 981 | value: Desain Bahan untuk Pengembang |
| 982 | - name: ja-lang |
| 983 | value: マテリアル デザインでのアプリ作成 |
| 984 | - name: ko-lang |
| 985 | value: 개발자를 위한 머티리얼 디자인 |
| 986 | - name: pt-br-lang |
| 987 | value: Material Design para desenvolvedores |
| 988 | - name: ru-lang |
| 989 | value: Создание приложений с помощью Material Design |
| 990 | - name: vi-lang |
| 991 | value: Material Design cho Nhà phát triển |
| 992 | - name: zh-cn-lang |
| 993 | value: 面向开发者的材料设计 |
| 994 | - name: zh-tw-lang |
| 995 | value: 開發人員材料設計 |
| 996 | - name: description |
| 997 | value: How to implement material design on Android. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 998 | section: |
| 999 | - title: Getting Started |
| 1000 | path: /training/material/get-started.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1001 | path_attributes: |
| 1002 | - name: es-lang |
| 1003 | value: Comencemos |
| 1004 | - name: in-lang |
| 1005 | value: Memulai |
| 1006 | - name: ja-lang |
| 1007 | value: スタート ガイド |
| 1008 | - name: ko-lang |
| 1009 | value: 시작하기 |
| 1010 | - name: pt-br-lang |
| 1011 | value: Como iniciar |
| 1012 | - name: ru-lang |
| 1013 | value: Начало работы |
| 1014 | - name: vi-lang |
| 1015 | value: Bắt đầu |
| 1016 | - name: zh-cn-lang |
| 1017 | value: 入门指南 |
| 1018 | - name: zh-tw-lang |
| 1019 | value: 開始使用 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1020 | - title: Using the Material Theme |
| 1021 | path: /training/material/theme.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1022 | path_attributes: |
| 1023 | - name: es-lang |
| 1024 | value: Usar el tema Material |
| 1025 | - name: in-lang |
| 1026 | value: Menggunakan Tema Bahan |
| 1027 | - name: ja-lang |
| 1028 | value: マテリアル テーマの使用 |
| 1029 | - name: ko-lang |
| 1030 | value: 머티어리얼 테마 사용 |
| 1031 | - name: pt-br-lang |
| 1032 | value: Como usar o tema do Material |
| 1033 | - name: ru-lang |
| 1034 | value: Использование темы Material Design |
| 1035 | - name: vi-lang |
| 1036 | value: Sử dụng Chủ đề Material |
| 1037 | - name: zh-cn-lang |
| 1038 | value: 使用材料主题 |
| 1039 | - name: zh-tw-lang |
| 1040 | value: 使用材料設計風格 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1041 | - title: Creating Lists and Cards |
| 1042 | path: /training/material/lists-cards.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1043 | path_attributes: |
| 1044 | - name: es-lang |
| 1045 | value: Crear listas y tarjetas |
| 1046 | - name: in-lang |
| 1047 | value: Membuat Daftar dan Kartu |
| 1048 | - name: ja-lang |
| 1049 | value: リストとカードの作成 |
| 1050 | - name: ko-lang |
| 1051 | value: 목록 및 카드 생성 |
| 1052 | - name: pt-br-lang |
| 1053 | value: Como criar listas e cartões |
| 1054 | - name: ru-lang |
| 1055 | value: Создание списков и подсказок |
| 1056 | - name: vi-lang |
| 1057 | value: Tạo Danh sách và Thẻ |
| 1058 | - name: zh-cn-lang |
| 1059 | value: 创建列表与卡片 |
| 1060 | - name: zh-tw-lang |
| 1061 | value: 建立清單和卡片 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1062 | - title: Defining Shadows and Clipping Views |
| 1063 | path: /training/material/shadows-clipping.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1064 | path_attributes: |
| 1065 | - name: es-lang |
| 1066 | value: Definir vistas de recorte y sombras |
| 1067 | - name: in-lang |
| 1068 | value: Mendefinisikan Bayangan dan Memangkas Tampilan |
| 1069 | - name: ja-lang |
| 1070 | value: シャドウとクリッピング ビューの定義 |
| 1071 | - name: ko-lang |
| 1072 | value: 그림자 정의 및 뷰 클리핑 |
| 1073 | - name: pt-br-lang |
| 1074 | value: Como definir sombras e recortar visualizações |
| 1075 | - name: ru-lang |
| 1076 | value: Определение теней и обрезка представлений |
| 1077 | - name: vi-lang |
| 1078 | value: Định nghĩa Đổ bóng và Dạng xem Cắt hình |
| 1079 | - name: zh-cn-lang |
| 1080 | value: 定义阴影与裁剪视图 |
| 1081 | - name: zh-tw-lang |
| 1082 | value: 定義陰影和裁剪檢視 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1083 | - title: Working with Drawables |
| 1084 | path: /training/material/drawables.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1085 | path_attributes: |
| 1086 | - name: es-lang |
| 1087 | value: Trabajar con interfaces dibujables |
| 1088 | - name: in-lang |
| 1089 | value: Bekerja dengan Drawable |
| 1090 | - name: ja-lang |
| 1091 | value: ドローアブルの使用 |
| 1092 | - name: ko-lang |
| 1093 | value: Drawable 사용 |
| 1094 | - name: pt-br-lang |
| 1095 | value: Como trabalhar com desenháveis |
| 1096 | - name: ru-lang |
| 1097 | value: Работа с элементами дизайна |
| 1098 | - name: vi-lang |
| 1099 | value: Làm việc với Nội dung vẽ được |
| 1100 | - name: zh-cn-lang |
| 1101 | value: 使用 Drawables |
| 1102 | - name: zh-tw-lang |
| 1103 | value: 使用可繪項目 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1104 | - title: Defining Custom Animations |
| 1105 | path: /training/material/animations.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1106 | path_attributes: |
| 1107 | - name: es-lang |
| 1108 | value: Definir animaciones personalizadas |
| 1109 | - name: in-lang |
| 1110 | value: Mendefinisikan Animasi Custom |
| 1111 | - name: ja-lang |
| 1112 | value: カスタム アニメーションの定義 |
| 1113 | - name: ko-lang |
| 1114 | value: 사용자지정 애니메이션 정의 |
| 1115 | - name: pt-br-lang |
| 1116 | value: Como definir animações personalizadas |
| 1117 | - name: ru-lang |
| 1118 | value: Определение настраиваемой анимации |
| 1119 | - name: vi-lang |
| 1120 | value: Định nghĩa Hoạt hình Tùy chỉnh |
| 1121 | - name: zh-cn-lang |
| 1122 | value: 定义定制动画 |
| 1123 | - name: zh-tw-lang |
| 1124 | value: 定義自訂動畫 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1125 | - title: Maintaining Compatibility |
| 1126 | path: /training/material/compatibility.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1127 | path_attributes: |
| 1128 | - name: es-lang |
| 1129 | value: Mantener la compatibilidad |
| 1130 | - name: in-lang |
| 1131 | value: Mempertahankan Kompatibilitas |
| 1132 | - name: ja-lang |
| 1133 | value: 互換性の維持 |
| 1134 | - name: ko-lang |
| 1135 | value: 호환성 유지 |
| 1136 | - name: pt-br-lang |
| 1137 | value: Como manter a compatibilidade |
| 1138 | - name: ru-lang |
| 1139 | value: Обеспечение совместимости |
| 1140 | - name: vi-lang |
| 1141 | value: Duy trì Tính tương thích |
| 1142 | - name: zh-cn-lang |
| 1143 | value: 维护兼容性 |
| 1144 | - name: zh-tw-lang |
| 1145 | value: 維持相容性 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1146 | |
| 1147 | - title: Best Practices for User Input |
| 1148 | path: /training/best-user-input.html |
| 1149 | section: |
| 1150 | - title: Using Touch Gestures |
| 1151 | path: /training/gestures/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1152 | path_attributes: |
| 1153 | - name: description |
| 1154 | value: How to write apps that allow users to interact with the touch screen via touch gestures. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1155 | section: |
| 1156 | - title: Detecting Common Gestures |
| 1157 | path: /training/gestures/detector.html |
| 1158 | - title: Tracking Movement |
| 1159 | path: /training/gestures/movement.html |
| 1160 | - title: Animating a Scroll Gesture |
| 1161 | path: /training/gestures/scroll.html |
| 1162 | - title: Handling Multi-Touch Gestures |
| 1163 | path: /training/gestures/multi.html |
| 1164 | - title: Dragging and Scaling |
| 1165 | path: /training/gestures/scale.html |
| 1166 | - title: Managing Touch Events in a ViewGroup |
| 1167 | path: /training/gestures/viewgroup.html |
| 1168 | - title: Handling Keyboard Input |
| 1169 | path: /training/keyboard-input/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1170 | path_attributes: |
| 1171 | - name: description |
| 1172 | value: 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. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1173 | section: |
| 1174 | - title: Specifying the Input Method Type |
| 1175 | path: /training/keyboard-input/style.html |
| 1176 | - title: Handling Input Method Visibility |
| 1177 | path: /training/keyboard-input/visibility.html |
| 1178 | - title: Supporting Keyboard Navigation |
| 1179 | path: /training/keyboard-input/navigation.html |
| 1180 | - title: Handling Keyboard Actions |
| 1181 | path: /training/keyboard-input/commands.html |
| 1182 | - title: Supporting Game Controllers |
| 1183 | path: /training/game-controllers/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1184 | path_attributes: |
| 1185 | - name: description |
| 1186 | value: How to write apps that support game controllers. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1187 | section: |
| 1188 | - title: Handling Controller Actions |
| 1189 | path: /training/game-controllers/controller-input.html |
| 1190 | - title: Supporting Controllers Across Android Versions |
| 1191 | path: /training/game-controllers/compatibility.html |
| 1192 | - title: Supporting Multiple Game Controllers |
| 1193 | path: /training/game-controllers/multiple-controllers.html |
| 1194 | |
| 1195 | - title: Best Practices for Background Jobs |
| 1196 | path: /training/best-background.html |
| 1197 | section: |
| 1198 | - title: Running in a Background Service |
| 1199 | path: /training/run-background-service/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1200 | path_attributes: |
| 1201 | - name: description |
| 1202 | value: How to improve UI performance and responsiveness by sending work to a Service running in the background |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1203 | section: |
| 1204 | - title: Creating a Background Service |
| 1205 | path: /training/run-background-service/create-service.html |
| 1206 | - title: Sending Work Requests to the Background Service |
| 1207 | path: /training/run-background-service/send-request.html |
| 1208 | - title: Reporting Work Status |
| 1209 | path: /training/run-background-service/report-status.html |
| 1210 | - title: Loading Data in the Background |
| 1211 | path: /training/load-data-background/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1212 | path_attributes: |
| 1213 | - name: description |
| 1214 | value: How to use CursorLoader to query data without affecting UI responsiveness. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1215 | section: |
| 1216 | - title: Running a Query with a CursorLoader |
| 1217 | path: /training/load-data-background/setup-loader.html |
| 1218 | - title: Handling the Results |
| 1219 | path: /training/load-data-background/handle-results.html |
| 1220 | - title: Managing Device Awake State |
| 1221 | path: /training/scheduling/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1222 | path_attributes: |
| 1223 | - name: description |
| 1224 | value: How to use repeating alarms and wake locks to run background jobs. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1225 | section: |
| 1226 | - title: Keeping the Device Awake |
| 1227 | path: /training/scheduling/wakelock.html |
| 1228 | - title: Scheduling Repeating Alarms |
| 1229 | path: /training/scheduling/alarms.html |
| 1230 | |
| 1231 | - title: Best Practices for Performance |
| 1232 | path: /training/best-performance.html |
| 1233 | section: |
| 1234 | - title: Managing Your App's Memory |
| 1235 | path: /training/articles/memory.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1236 | path_attributes: |
| 1237 | - name: description |
| 1238 | value: How to keep your app's memory footprint small in order to improve performance on a variety of mobile devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1239 | - title: Performance Tips |
| 1240 | path: /training/articles/perf-tips.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1241 | path_attributes: |
| 1242 | - name: description |
| 1243 | value: How to optimize your app's performance in various ways to improve its responsiveness and battery efficiency. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1244 | - title: Improving Layout Performance |
| 1245 | path: /training/improving-layouts/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1246 | path_attributes: |
| 1247 | - name: description |
| 1248 | value: How to identify problems in your app's layout performance and improve the UI responsiveness. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1249 | section: |
| 1250 | - title: Optimizing Layout Hierarchies |
| 1251 | path: /training/improving-layouts/optimizing-layout.html |
| 1252 | - title: Re-using Layouts with <include/> |
| 1253 | path: /training/improving-layouts/reusing-layouts.html |
| 1254 | - title: Loading Views On Demand |
| 1255 | path: /training/improving-layouts/loading-ondemand.html |
| 1256 | - title: Making ListView Scrolling Smooth |
| 1257 | path: /training/improving-layouts/smooth-scrolling.html |
| 1258 | - title: Optimizing Battery Life |
| 1259 | path: /training/monitoring-device-state/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1260 | path_attributes: |
| 1261 | - name: es-lang |
| 1262 | value: Cómo optimizar la duración de la batería |
| 1263 | - name: ja-lang |
| 1264 | value: 電池消費量の最適化 |
| 1265 | - name: zh-cn-lang |
| 1266 | value: 优化电池使用时间 |
| 1267 | - name: description |
| 1268 | value: How to minimize the amount of power your app requires by adapting to current power conditions and performing power-hungry tasks at proper intervals. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1269 | section: |
| 1270 | - title: Reducing Network Battery Drain |
| 1271 | path: /training/performance/battery/network/index.html |
| 1272 | section: |
| 1273 | - title: Collecting Network Traffic Data |
| 1274 | path: /training/performance/battery/network/gather-data.html |
| 1275 | - title: Analyzing Network Traffic Data |
| 1276 | path: /training/performance/battery/network/analyze-data.html |
| 1277 | - title: Optimizing User-Initiated Network Use |
| 1278 | path: /training/performance/battery/network/action-user-traffic.html |
| 1279 | - title: Optimizing App-Initiated Network Use |
| 1280 | path: /training/performance/battery/network/action-app-traffic.html |
| 1281 | - title: Optimizing Server-Initiated Network Use |
| 1282 | path: /training/performance/battery/network/action-server-traffic.html |
| 1283 | - title: Optimizing General Network Use |
| 1284 | path: /training/performance/battery/network/action-any-traffic.html |
| 1285 | - title: Optimizing for Doze and App Standby |
| 1286 | path: /training/monitoring-device-state/doze-standby.html |
| 1287 | - title: Monitoring the Battery Level and Charging State |
| 1288 | path: /training/monitoring-device-state/battery-monitoring.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1289 | path_attributes: |
| 1290 | - name: es-lang |
| 1291 | value: Cómo controlar el nivel de batería y el estado de carga |
| 1292 | - name: ja-lang |
| 1293 | value: 電池残量と充電状態の監視 |
| 1294 | - name: zh-cn-lang |
| 1295 | value: 监控电池电量和充电状态 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1296 | - title: Determining and Monitoring the Docking State and Type |
| 1297 | path: /training/monitoring-device-state/docking-monitoring.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1298 | path_attributes: |
| 1299 | - name: es-lang |
| 1300 | value: Cómo determinar y controlar el tipo de conector y el estado de la conexión |
| 1301 | - name: ja-lang |
| 1302 | value: ホルダーの装着状態とタイプの特定と監視 |
| 1303 | - name: zh-cn-lang |
| 1304 | value: 确定和监控基座对接状态和类型 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1305 | - title: Determining and Monitoring the Connectivity Status |
| 1306 | path: /training/monitoring-device-state/connectivity-monitoring.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1307 | path_attributes: |
| 1308 | - name: es-lang |
| 1309 | value: Cómo determinar y controlar el estado de la conectividad |
| 1310 | - name: ja-lang |
| 1311 | value: 接続状態の特定と監視 |
| 1312 | - name: zh-cn-lang |
| 1313 | value: 确定和监控网络连接状态 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1314 | - title: Manipulating Broadcast Receivers On Demand |
| 1315 | path: /training/monitoring-device-state/manifest-receivers.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1316 | path_attributes: |
| 1317 | - name: es-lang |
| 1318 | value: Cómo manipular los receptores de emisión bajo demanda |
| 1319 | - name: ja-lang |
| 1320 | value: オンデマンドでのブロードキャスト レシーバ操作 |
| 1321 | - name: zh-cn-lang |
| 1322 | value: 根据需要操作广播接收器 |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1323 | - title: Sending Operations to Multiple Threads |
| 1324 | path: /training/multiple-threads/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1325 | path_attributes: |
| 1326 | - name: description |
| 1327 | value: How to improve the performance and scalability of long-running operations by dispatching work to multiple threads. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1328 | section: |
| 1329 | - title: Specifying the Code to Run on a Thread |
| 1330 | path: /training/multiple-threads/define-runnable.html |
| 1331 | - title: Creating a Manager for Multiple Threads |
| 1332 | path: /training/multiple-threads/create-threadpool.html |
| 1333 | - title: Running Code on a Thread Pool Thread |
| 1334 | path: /training/multiple-threads/run-code.html |
| 1335 | - title: Communicating with the UI Thread |
| 1336 | path: /training/multiple-threads/communicate-ui.html |
| 1337 | - title: Keeping Your App Responsive |
| 1338 | path: /training/articles/perf-anr.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1339 | path_attributes: |
| 1340 | - name: description |
| 1341 | value: How to keep your app responsive to user interaction so the UI does not lock-up and display an "Application Not Responding" dialog. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1342 | - title: JNI Tips |
| 1343 | path: /training/articles/perf-jni.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1344 | path_attributes: |
| 1345 | - name: description |
| 1346 | value: How to efficiently use the Java Native Interface with the Android NDK. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1347 | - title: SMP Primer for Android |
| 1348 | path: /training/articles/smp.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1349 | path_attributes: |
| 1350 | - name: description |
| 1351 | value: Tips for coding Android apps on symmetric multiprocessor systems. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1352 | |
| 1353 | - title: Best Practices for Security & Privacy |
| 1354 | path: /training/best-security.html |
| 1355 | section: |
| 1356 | - title: Security Tips |
| 1357 | path: /training/articles/security-tips.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1358 | path_attributes: |
| 1359 | - name: description |
| 1360 | value: How to perform various tasks and keep your app's data and your user's data secure. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1361 | - title: Security with HTTPS and SSL |
| 1362 | path: /training/articles/security-ssl.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1363 | path_attributes: |
| 1364 | - name: description |
| 1365 | value: How to ensure that your app is secure when performing network transactions. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1366 | - title: Updating Your Security Provider to Protect Against SSL Exploits |
| 1367 | path: /training/articles/security-gms-provider.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1368 | path_attributes: |
| 1369 | - name: description |
| 1370 | value: How to use and update Google Play services security provider, to protect against SSL exploits. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1371 | - title: Checking Device Compatibility with SafetyNet |
| 1372 | path: /training/safetynet/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1373 | path_attributes: |
| 1374 | - name: description |
| 1375 | value: How to use the SafetyNet service to analyze a device where your app is running and get information about its compatibility with your app. |
Kevin Hufnagle | c946f9d | 2016-07-20 14:14:55 -0700 | [diff] [blame^] | 1376 | - title: Verifying Hardware-backed Key Pairs with Key Attestation |
| 1377 | path: /training/articles/security-key-attestation.html |
| 1378 | path_attributes: |
| 1379 | - name: description |
| 1380 | value: How to retrieve and verify the properties of a device's hardware-backed key pair. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1381 | - title: Enhancing Security with Device Management Policies |
Billy Lamberta | e1277eb | 2016-05-03 16:23:59 -0700 | [diff] [blame] | 1382 | path: /work/device-management-policy.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1383 | path_attributes: |
| 1384 | - name: description |
| 1385 | value: How to create an application that enforces security policies on devices. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1386 | |
| 1387 | - title: Best Practices for Permissions & Identifiers |
| 1388 | path: /training/best-permissions-ids.html |
| 1389 | section: |
| 1390 | - title: Permissions and User Data |
| 1391 | path: /training/articles/user-data-overview.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1392 | path_attributes: |
| 1393 | - name: description |
| 1394 | value: Overview of app permissions on Android and how they affect your users. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1395 | - title: Best Practices for App Permissions |
| 1396 | path: /training/articles/user-data-permissions.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1397 | path_attributes: |
| 1398 | - name: description |
| 1399 | value: How to manage permissions the right way for users. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1400 | - title: Best Practices for Unique Identifiers |
| 1401 | path: /training/articles/user-data-ids.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1402 | path_attributes: |
| 1403 | - name: description |
| 1404 | value: Unique identifiers available and how to choose the right one for your use case. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1405 | |
| 1406 | - title: Best Practices for Testing |
| 1407 | path: /training/testing/index.html |
| 1408 | section: |
| 1409 | - title: Getting Started with Testing |
| 1410 | path: /training/testing/start/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1411 | path_attributes: |
| 1412 | - name: description |
| 1413 | value: How to get started with testing your Android applications. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1414 | - title: Building Effective Unit Tests |
| 1415 | path: /training/testing/unit-testing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1416 | path_attributes: |
| 1417 | - name: description |
| 1418 | value: How to build effective unit tests for Android apps. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1419 | section: |
| 1420 | - title: Building Local Unit Tests |
| 1421 | path: /training/testing/unit-testing/local-unit-tests.html |
| 1422 | - title: Building Instrumented Unit Tests |
| 1423 | path: /training/testing/unit-testing/instrumented-unit-tests.html |
| 1424 | - title: Automating UI Tests |
| 1425 | path: /training/testing/ui-testing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1426 | path_attributes: |
| 1427 | - name: description |
| 1428 | value: How to automate your user interface tests for Android apps. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1429 | section: |
| 1430 | - title: Testing UI for a Single App |
| 1431 | path: /training/testing/ui-testing/espresso-testing.html |
| 1432 | - title: Testing UI for Multiple Apps |
| 1433 | path: /training/testing/ui-testing/uiautomator-testing.html |
| 1434 | - title: Testing App Component Integrations |
| 1435 | path: /training/testing/integration-testing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1436 | path_attributes: |
| 1437 | - name: description |
| 1438 | value: How to build effective integration tests for Android apps. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1439 | section: |
| 1440 | - title: Testing Your Service |
| 1441 | path: /training/testing/integration-testing/service-testing.html |
| 1442 | - title: Testing Your Content Provider |
| 1443 | path: /training/testing/integration-testing/content-provider-testing.html |
| 1444 | - title: Testing Display Performance |
| 1445 | path: /training/testing/performance.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1446 | path_attributes: |
| 1447 | - name: description |
| 1448 | value: How to automate UI performance testing. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1449 | |
| 1450 | - title: Using Google Play to Distribute & Monetize |
| 1451 | path: /training/distribute.html |
| 1452 | section: |
| 1453 | - title: Selling In-app Products |
| 1454 | path: /training/in-app-billing/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1455 | path_attributes: |
| 1456 | - name: description |
| 1457 | value: How to sell in-app products from your application using In-app Billing. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1458 | section: |
| 1459 | - title: Preparing Your App |
| 1460 | path: /training/in-app-billing/preparing-iab-app.html |
| 1461 | - title: Establishing Products for Sale |
| 1462 | path: /training/in-app-billing/list-iab-products.html |
| 1463 | - title: Purchasing Products |
| 1464 | path: /training/in-app-billing/purchase-iab-products.html |
| 1465 | - title: Testing Your App |
| 1466 | path: /training/in-app-billing/test-iab-app.html |
| 1467 | - title: Maintaining Multiple APKs |
| 1468 | path: /training/multiple-apks/index.html |
Elliot Waite | 988248d | 2016-04-26 19:46:39 -0700 | [diff] [blame] | 1469 | path_attributes: |
| 1470 | - name: description |
| 1471 | value: How to publish your app on Google Play with separate APKs that target different devices, while using a single app listing. |
Elliot Waite | 20d6d77 | 2016-03-15 18:58:55 -0700 | [diff] [blame] | 1472 | section: |
| 1473 | - title: Creating Multiple APKs for Different API Levels |
| 1474 | path: /training/multiple-apks/api.html |
| 1475 | - title: Creating Multiple APKs for Different Screen Sizes |
| 1476 | path: /training/multiple-apks/screensize.html |
| 1477 | - title: Creating Multiple APKs for Different GL Textures |
| 1478 | path: /training/multiple-apks/texture.html |
| 1479 | - title: Creating Multiple APKs with 2+ Dimensions |
| 1480 | path: /training/multiple-apks/multiple.html |