diff --git a/core/java/android/nfc/cardemulation/CardEmulation.java b/core/java/android/nfc/cardemulation/CardEmulation.java
index 64c2bc2..23d05bd 100644
--- a/core/java/android/nfc/cardemulation/CardEmulation.java
+++ b/core/java/android/nfc/cardemulation/CardEmulation.java
@@ -40,7 +40,7 @@
  * NFC card emulation services.
  *
  * For a general introduction into NFC card emulation,
- * please read the <a href="{@docRoot}guide/topics/nfc/ce.html">
+ * please read the <a href="{@docRoot}guide/topics/connectivity/nfc/hce.html">
  * NFC card emulation developer guide</a>.</p>
  *
  * <p class="note">Use of this class requires the
diff --git a/docs/html/images/tools/studio-globe-icon.png b/docs/html/images/tools/studio-globe-icon.png
new file mode 100644
index 0000000..0701dd2
--- /dev/null
+++ b/docs/html/images/tools/studio-globe-icon.png
Binary files differ
diff --git a/docs/html/images/tools/studio-setup-wizard.png b/docs/html/images/tools/studio-setup-wizard.png
deleted file mode 100644
index ccd92d3..0000000
--- a/docs/html/images/tools/studio-setup-wizard.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
index d0aa55f..6ef75a5 100644
--- a/docs/html/preview/preview_toc.cs
+++ b/docs/html/preview/preview_toc.cs
@@ -1,10 +1,18 @@
 <ul id="nav">
 
   <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/overview.html">
-      Program Overview</a></div>
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/overview.html"
+   es-lang="Información general del programa"
+   ja-lang="プログラム概要"
+   ko-lang="프로그램 개요"
+   pt-br-lang="Visão geral do programa"
+   ru-lang="Обзор программы"
+   zh-cn-lang="计划概览"
+   zh-tw-lang="程式總覽">Program Overview
+      </a></div>
   </li>
 
+
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/download.html">
       Downloads</a></div>
@@ -25,11 +33,25 @@
   </li>
 
   <li class="nav-section">
-    <div class="nav-section-header"><a href="<?cs var:toroot ?>preview/api-overview.html">
-      API Overview</a></div>
+    <div class="nav-section-header"><a href="<?cs var:toroot ?>preview/api-overview.html"
+      es-lang="Información general de la API"
+      ja-lang="API の概要"
+      ko-lang="API 개요"
+      pt-br-lang="Visão geral da API"
+      ru-lang="Обзор API-интерфейсов"
+      zh-cn-lang="API 概览"
+      zh-tw-lang="API 總覽">API Overview
+      </a></div>
       <ul>
-        <li><a href="<?cs var:toroot ?>preview/features/runtime-permissions.html">
-          Permissions</a></li>
+        <li><a href="<?cs var:toroot ?>preview/features/runtime-permissions.html"
+      es-lang="Permisos"
+      ja-lang="パーミッション"
+      ko-lang="권한"
+      pt-br-lang="Permissões"
+      ru-lang="Разрешения"
+      zh-cn-lang="权限"
+      zh-tw-lang="權限">Permissions
+          </a></li>
         <li><a href="<?cs var:toroot ?>preview/features/app-linking.html">
           App Links</a></li>
         <li><a href="<?cs var:toroot ?>preview/backup/index.html">
@@ -38,8 +60,15 @@
   </li>
 
   <li class="nav-section">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/behavior-changes.html">
-      Behavior Changes</a></div>
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/behavior-changes.html"
+      es-lang="Cambios en los comportamientos"
+      ja-lang="動作の変更点"
+      ko-lang="동작 변경"
+      pt-br-lang="Mudanças de comportamento"
+      ru-lang="Изменения в работе"
+      zh-cn-lang="行为变更"
+      zh-tw-lang="行為變更">Behavior Changes
+       </a></div>
   </li>
   <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/samples.html">
diff --git a/docs/html/sdk/installing/migrate.jd b/docs/html/sdk/installing/migrate.jd
index d9829395..6dedad6 100644
--- a/docs/html/sdk/installing/migrate.jd
+++ b/docs/html/sdk/installing/migrate.jd
@@ -50,7 +50,7 @@
     <p>Android Studio uses a different project structure. Each Eclipse ADT
     project is called a module in Android Studio. Each instance of Android
     Studio contains a project with one or more app modules. For more information see,
-    <a href="{@docRoot}tools/studio/eclipse-migration-guide.html#project-structure">Project
+    <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#project-structure">Project
     Structure</a>.</p></li>
 
   <li><strong>Manifest settings</strong>
@@ -59,14 +59,14 @@
     <code>build.gradle</code> file. These elements are still valid manifest entries and may
     appear in manifests from older projects, imported projects, dependencies, and libraries. For
     more information see,
-    <a href="{@docRoot}tools/studio/eclipse-migration-guide.html#manifest-settings">Manifest
+    <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#manifest-settings">Manifest
     Settings</a>.</p></li>
 
   <li><strong>Dependencies</strong>
     <p>Library dependencies are handled differently in Android Studio, using Gradle dependency
     declarations and Maven dependencies for well-known local source and binary libraries with
     Maven coordinates.  For more information see,
-    <a href="{@docRoot}tools/studio/eclipse-migration-guide.html#dependencies">Dependencies</a></p>
+    <a href="{@docRoot}tools/studio/eclipse-transition-guide.html#dependencies">Dependencies</a></p>
     </li>
 
   <li><strong>Test code</strong>
@@ -261,7 +261,7 @@
 <a href="http://www.gradle.org">Gradle</a>-based build system to become familiar with the new
 project and module structure, flexible build settings, and other advanced Android development
 capabilities. For a comparison of Eclipse ADT and Android Studio features and usage, see
-<a href="{@docRoot}tools/studio/eclipse-migration-guide.html">Transitioning to Android Studio from
+<a href="{@docRoot}tools/studio/eclipse-transition-guide.html">Transitioning to Android Studio from
 Eclipse</a>. For specific Android Studio how-to documentation, see the pages in the
 <a href="{@docRoot}tools/workflow/index.html">Workflow</a> section.
 </p>
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
index a40050f..7d37b1d 100644
--- a/docs/html/sdk/installing/studio-tips.jd
+++ b/docs/html/sdk/installing/studio-tips.jd
@@ -6,7 +6,7 @@
 
     <h2>In this document</h2>
     <ol>
-      <li><a href="#productivity-features">Productivity Features</a></li>
+      <li><a href="#productivity-features">Productivity Shortcuts</a></li>
       <li><a href="#intellij">Working with IntelliJ</a></li>
       <li><a href="#key-commands">Key Commands</a></li>
     </ol>
@@ -26,7 +26,7 @@
 enhancements. </p>
 
 
-<h2 id="productivity-features">Productivity Features</h2>
+<h2 id="productivity-features">Productivity Shortcuts</h2>
 
 <p>Android Studio includes a number of features to help you be more productive in your coding.
 This section notes a few of the key features to help you work quickly and efficiently.
@@ -48,6 +48,18 @@
 <p class="img-caption"><strong>Figure 1.</strong> Bitmap Rendering</p>
 
 
+<h3>Creating new files</h3>
+<p>You can quickly add new code and resource files by clicking the appropriate directory in the
+<strong>Project</strong> pane and pressing <code>ALT + INSERT</code> on Windows and Linux or
+<code>COMMAND + N</code> on Mac. Based on the type of directory selected, Android Studio
+offers to create the appropriate file type.</p>
+
+<p>For example, if you select a layout directory, press <code>ALT + INSERT</code> on Windows,
+and select <strong>Layout resource file</strong>, a dialog opens so you can name the file
+(you can exclude the {@code .xml} suffix) and choose a root view element. The editor then
+switches to the layout design editor so you can begin designing your layout.</p>
+
+
 <h3>Output window message filtering</h3>
 <p>When checking build results, you can filter messages by <em>message type</em> to quickly
 locate messages of interest.</p>
@@ -111,8 +123,8 @@
 <h3>Debugging and performance enhancements</h3>
 <p>Android Studio offers debugging and performance enhancements such as:</p>
 <ul>
-  <li>Auto detect an expanded set of code styles. To modify the current code style, choose
-   <strong>File &gt; Settings &gt; Code Styles</strong>.  </li>
+  <li>Custom keymaps. To modify the current keymap, choose
+   <strong>File &gt; Settings &gt; Keymap</strong>.  </li>
   <li>Support for high density (Retina) displays on Windows and Linux.  </li>
   <li>Scratch files for quick prototyping without creating any project files.
    <p>Choose <strong>Tools &gt; New Scratch File</strong> to open a scratch file to quickly
@@ -174,7 +186,7 @@
 <h3>Image and color preview</h3>
 <p>When referencing images and icons in your code, a preview of the image or icon appears
 (in actual size at different densities) in the code margin to help you verify the image or icon
-reference.  Pressing {@code F1} with the preview image or icon selected displays resource asset
+reference. Pressing {@code F1} with the preview image or icon selected displays resource asset
 details, such as the <em>dp</em> settings.   </p>
 
 
@@ -188,13 +200,6 @@
 resolved values for the various attributes that are pulled in.</p>
 
 
-<h3>New Allocation Tracker integration in the Android/DDMS window</h3>
-<p>You can now inspect theme attributes using <strong> View > Quick Documentation
-</strong> <code>F1</code>, see the theme inheritance hierarchy, and resolved values for the
-various attributes.</p>
-<img src="{@docRoot}images/tools/studio-allocationtracker.png" style="width:300px" />
-<p class="img-caption"><strong>Figure 4.</strong> Allocation Tracker</p>
-
 
 <h3 id="key-commands">Keyboard Commands</h3>
 
diff --git a/docs/html/tools/building/configuring-gradle.jd b/docs/html/tools/building/configuring-gradle.jd
index 7cca5b4..73a048b 100644
--- a/docs/html/tools/building/configuring-gradle.jd
+++ b/docs/html/tools/building/configuring-gradle.jd
@@ -198,6 +198,75 @@
 <code>proguard-rules.pro</code> at the root of the module, where you can add custom ProGuard
 rules.</p>
 
+
+
+<h3>Application ID for package identification </h3>
+<p>With the Android build system, the <em>applicationId</em> attribute is used to
+uniquely identify application packages for publishing. The application ID is set in the
+<em>android</em> section of the <code>build.gradle</code> file.
+</p>
+
+    <pre>
+    apply plugin: 'com.android.application'
+
+    android {
+        compileSdkVersion 19
+        buildToolsVersion "19.1"
+
+    defaultConfig {
+        <strong>applicationId "com.example.my.app"</strong>
+        minSdkVersion 15
+        targetSdkVersion 19
+        versionCode 1
+        versionName "1.0"
+    }
+    ...
+    </pre>
+
+<p class="note"><strong>Note:</strong> The <em>applicationId</em> is specified only in your
+{@code build.gradle} file, and not in the AndroidManifest.xml file.</p>
+
+<p>When using build variants, the build system enables you to uniquely identify different
+packages for each product flavors and build types. The application ID in the build type is added as
+a suffix to those specified for the product flavors. </p>
+
+   <pre>
+   productFlavors {
+        pro {
+            applicationId = "com.example.my.pkg.pro"
+        }
+        free {
+            applicationId = "com.example.my.pkg.free"
+        }
+    }
+
+    buildTypes {
+        debug {
+            applicationIdSuffix ".debug"
+        }
+    }
+    ....
+   </pre>
+
+<p>The package name must still be specified in the manifest file. It is used in your source code
+to refer to your R class and to resolve any relative activity/service registrations. </p>
+
+   <pre>
+   <?xml version="1.0" encoding="utf-8"?>
+   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+   <strong>package="com.example.app"</strong>>
+   </pre>
+
+<p class="note"><strong>Note:</strong> If you have multiple manifests (for example, a product
+flavor specific manifest and a build type manifest), the package name is optional in those manifests.
+If it is specified in those manifests, the package name must be identical to the package name
+specified in the manifest in the <code>src/main/</code> folder. </p>
+
+<p>For more information about the build files and process, see
+<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a>.</p>
+
+
+
 <h3 id="configureSigning">Configure signing settings</h3>
 
 <p>The debug and the release versions of the app differ on whether the application can be
diff --git a/docs/html/tools/studio/index.jd b/docs/html/tools/studio/index.jd
index 09a10f6..5041b83 100644
--- a/docs/html/tools/studio/index.jd
+++ b/docs/html/tools/studio/index.jd
@@ -12,9 +12,6 @@
       <li><a href="#project-structure">Project and File Structure</a></li>
       <li><a href="#build-system">Android Build System</a></li>
       <li><a href="#debug-perf">Debug and Performance</a></li>
-      <li><a href="#install-updates">Installation, Setup, and Update Management</a></li>
-      <li><a href="#proxy">HTTP Proxy Settings</a></li>
-      <li><a href="#other">Other Highlights</a></li>
 
 
     </ol>
@@ -46,7 +43,6 @@
   <li>And much more</li>
 </ul>
 
-<p><b><a href="{@docRoot}sdk/index.html">Download Android Studio now</a></b>. </p>
 
 <p>If you're new to Android Studio or the IntelliJ IDEA interface, this
 page provides an introduction to some key Android
@@ -141,22 +137,7 @@
 
 
 
-<h3>Creating new files</h3>
-<p>You can quickly add new code and resource files by clicking the appropriate directory in the
-<strong>Project</strong> pane and pressing <code>ALT + INSERT</code> on Windows and Linux or
-<code>COMMAND + N</code> on Mac. Based on the type of directory selected, Android Studio
-offers to create the appropriate file type.</p>
-
-<p>For example, if you select a layout directory, press <code>ALT + INSERT</code> on Windows,
-and select <strong>Layout resource file</strong>, a dialog opens so you can name the file
-(you can exclude the {@code .xml} suffix) and choose a root view element. The editor then
-switches to the layout design editor so you can begin designing your layout.</p>
-
-
-
 <h2 id="build-system">Android Build System</h2>
-
-<h3>Android Build System</h3>
 <p>The Android build system is the toolkit you use to build, test, run and package
 your apps. This build system replaces the Ant system used with Eclipse ADT. It can run as an
 integrated tool from the Android Studio menu and independently from the command line. You can use
@@ -176,76 +157,11 @@
 <a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
 
 
-<h3 id="app-id">Application ID for package identification </h3>
-<p>With the Android build system, the <em>applicationId</em> attribute is used to
-uniquely identify application packages for publishing. The application ID is set in the
-<em>android</em> section of the <code>build.gradle</code> file.
-</p>
-
-    <pre>
-    apply plugin: 'com.android.application'
-
-    android {
-        compileSdkVersion 19
-        buildToolsVersion "19.1"
-
-    defaultConfig {
-        <strong>applicationId "com.example.my.app"</strong>
-        minSdkVersion 15
-        targetSdkVersion 19
-        versionCode 1
-        versionName "1.0"
-    }
-    ...
-    </pre>
-
-<p class="note"><strong>Note:</strong> The <em>applicationId</em> is specified only in your
-{@code build.gradle} file, and not in the AndroidManifest.xml file.</p>
-
-<p>When using build variants, the build system enables you to uniquely identify different
-packages for each product flavors and build types. The application ID in the build type is added as
-a suffix to those specified for the product flavors. </p>
-
-   <pre>
-   productFlavors {
-        pro {
-            applicationId = "com.example.my.pkg.pro"
-        }
-        free {
-            applicationId = "com.example.my.pkg.free"
-        }
-    }
-
-    buildTypes {
-        debug {
-            applicationIdSuffix ".debug"
-        }
-    }
-    ....
-   </pre>
-
-<p>The package name must still be specified in the manifest file. It is used in your source code
-to refer to your R class and to resolve any relative activity/service registrations. </p>
-
-   <pre>
-   <?xml version="1.0" encoding="utf-8"?>
-   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-   <strong>package="com.example.app"</strong>>
-   </pre>
-
-<p class="note"><strong>Note:</strong> If you have multiple manifests (for example, a product
-flavor specific manifest and a build type manifest), the package name is optional in those manifests.
-If it is specified in those manifests, the package name must be identical to the package name
-specified in the manifest in the <code>src/main/</code> folder. </p>
-
-<p>For more information about the build files and process, see
-<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a>.</p>
-
-
-
 
 <h2 id="debug-perf">Debug and Performance</h2>
-
+<p>Android Studio provides a number of improvements to assist you in debugging and improving the
+performance of your code, including an improved virtual device management, inline debugging, and
+performance analysis tools.</p>
 
 <h3>Android Virtual Device (AVD) Manager</h3>
 <p>AVD Manager has updated screens with links to help you select the most popular device
@@ -350,7 +266,8 @@
 
 
 <p>You can also manage inspection profiles and configure inspections within Android Studio.
-Choose <strong>File &gt; Settings &gt; Project Settings</strong> and expand <strong>Editor</strong>.
+Choose <strong>File &gt; Settings &gt;</strong>, expand the <strong>Editor</strong> options,
+and select <strong>Inspections</strong>.
 The <em>Inspection Configuration</em> page appears with the supported inspections.</p>
 <p><img src="{@docRoot}images/tools/studio-inspections-config.png" alt="" /> </p>
 <p class="img-caption"><strong>Figure 5.</strong> Configure inspections.</p>
@@ -506,7 +423,7 @@
 
 <h3>Log messages</h3>
 <p>When you build and run your app with Android Studio, you can view adb and device log messages
-(logcat) in the DDMS pane by clicking <strong>Android</strong> at the bottom of the window.</p>
+(logcat) by clicking <strong>Android</strong> at the bottom of the window.</p>
 
 <p>If you want to debug your app with the
 <a href="{@docRoot}tools/help/monitor.html">Android Debug Monitor</a>, you can launch it by
@@ -520,232 +437,4 @@
 
 
 
-<h2 id="install-updates">Installation, Setup, and Update Management</h2>
-
-<h3>Android Studio installation and setup wizards</h3>
-<p>When you begin the installation process, an installation and setup wizard walks you through
-a step-by-step installation and setup process as the wizard checks for system requirements,
-such as the Java Development Kit (JDK) and available RAM, and then prompts for optional
-installation options, such as the Intel&#174; HAXM emulator accelerator.</p>
-
-<p>During the installation process, a setup wizard walks you through the setup processes as
-the wizard updates your system image and emulation requirements, such GPU, and then creates
-an optimized default Android Virtual Device (AVD) based on Android 5 (Lollipop) for speedy and
-reliable emulation. </p>
-<p><img src="{@docRoot}images/tools/studio-setup-wizard.png" /></p>
-<p class="img-caption"><strong>Figure 9.</strong> Installation and setup wizard.</p>
-
-
-<h3>Expanded template and form factor support</h3>
-<p>Android Studio supports templates for Google Services and expands the available device
-types. </p>
-
-    <h4> Android Wear and TV support</h4>
-    <p>For easy cross-platform development, the Project Wizard provides templates for
-    creating your apps for Android Wear and TV. </p>
-    <p><img src="{@docRoot}images/tools/studio-tvwearsupport.png"  />
-
-      <p class="img-caption"><strong>Figure 10.</strong> Supported form factors.</p>
-    <p>During app creation, the Project Wizard also displays an API Level dialog to help you choose
-    the best <em>minSdkVersion</em> for your project.</p>
-
-
-    <h4> Google App Engine integration (Google Cloud Platform/Messaging)</h4>
-    <p>Quick cloud integration. Using Google App Engine to connect to the Google cloud
-    and create a cloud end-point is as easy as selecting <em>File > New Module > App Engine Java
-    Servlet Module</em> and specifying the module, package, and client names. </p>
-    <p><img src="{@docRoot}images/tools/studio-cloudmodule.png" /></p>
-    <p class="img-caption"><strong>Figure 11.</strong> Google App Engine integration.</p>
-
-
-<h3>Easy access to project and file settings</h3>
-<p>Android Studio provides setting dialogs so you can manage the most important project and file
-settings from the <strong>File</strong> menus as well as the build and configuration files. For
-example, you can use the <strong>File &gt; Project Structure</strong> menu or
-the <code>build.gradle</code> file to update your <code>productFlavor</code> settings.
-Additional settings from the <strong>File</strong> menus include:
-<ul>
- <li>SDK and JDK location </li>
- <li>SDK version </li>
- <li>Gradle and Android Plugin for Gradle versions </li>
- <li>Build tools version </li>
- <li>Multidex setting</li>
- <li>Product flavors </li>
- <li>Build types </li>
- <li>Dependencies </li>
-</ul>
-</p>
-
-
-
-<h3>Update channels</h3>
-<p>Android Studio provides four update channels to keep Android Studio up-to-date based on your
-code-level preference:
-<ul>
-  <li><strong>Canary channel</strong>: Canary builds provide bleeding edge releases, updated
-  about weekly. While these builds do get tested, they are still subject to bugs, as we want
-  people to see what's new as soon as possible. This is not recommended for production.</li>
-  <li><strong>Dev channel</strong>: Dev builds are hand-picked older canary builds that survived
-  the test of time. They are updated roughly bi-weekly or monthly.</li>
-  <li><strong>Beta channel</strong>: Beta builds are used for beta-quality releases before a
-  production release.</li>
-  <li><strong>Stable channel</strong>: Used for stable, production-ready versions.</li>
-</ul>
-</p>
-
-<p>By default, Android Studio uses the <em>Stable</em> channel. Use
-<strong>File > Settings > Updates</strong> to change your channel setting. </p>
-
-
-
-<h2 id="proxy">Proxy Settings</h2>
-<p>Proxies serve as intermediary connection points between HTTP clients and web servers that add
-security and privacy to internet connections.</p>
-
-<p>To support running Android Studio behind a firewall, set the proxy settings for the
-Android Studio IDE and the SDK Manager. Use the Android Studio IDE HTTP Proxy settings page to set
-the HTTP proxy settings for Android Studio. The SDK Manager has a separate HTTP Proxy settings
-page.</p>
-
-<p>When running the Android Plugin for Gradle from the command line or on machines where
-Android Studio is not installed, such as continuous integration servers, set the proxy settings
-in the Gradle build file.</p>
-
-<p class="note"><strong>Note:</strong> After the initial installation of the Android Studio bundle,
-Android Studio can run with internet access or off-line. However, Android Studio requires an
-internet connection for Setup Wizard synchronization, 3rd-party library access, access to remote
-repositories, Gradle initialization and synchronization, and Android Studio version updates.</p>
-
-
-<h3>Setting up the Android Studio Proxy</h3>
-<p>Android Studio supports HTTP proxy settings so you can run Android Studio behind a firewall or
-secure network. To set the HTTP proxy settings in Android Studio:</p>
-<ol>
- <li>From the main menu choose <strong>File &gt; Settings &gt; Appearance & Behavior -- System
- Settings -- HTTP Proxy</strong>.
-
-<li>In Android Studio, open the IDE Settings dialog.
-  <ul>
-     <li>On Windows and Linux, choose
-     <strong>File &gt; Settings &gt; IDE Setting -- HTTP Proxy</strong>. </li>
-     <li>On Mac, choose
-     <strong>Android Studio &gt; Preferences &gt; IDE Setting -- HTTP Proxy</strong>. </li>
-   </ul>
- The HTTP Proxy page appears.</li>
- <li>Select <strong>auto-detection</strong> to use an auto-configuration URL to configure the
- proxy settings or <strong>manual</strong> to enter each of the settings. For a detailed explanation
- of these settings, see
- <a href="https://www.jetbrains.com/idea/help/http-proxy.html">HTTP Proxy</a>. </li>
- <li>Click <strong>Apply</strong> to enable the proxy settings. </li>
-</ol>
-
-<h3>Android Plugin for Gradle HTTP proxy settings</h3>
-When running the Android Plugin from the command line or on machines where Android Studio is not
-installed, set the Android Plugin for Gradle proxy settings in the Gradle build file.</p>
-
-<p>For application-specific HTTP proxy settings, set the proxy settings in the
-{@code build.gradle} file as required for each application module.</p>
-<pre>
-apply plugin: 'com.android.application'
-
-android {
-    ...
-
-    defaultConfig {
-        ...
-        systemProp.http.proxyHost=proxy.company.com
-        systemProp.http.proxyPort=443
-        systemProp.http.proxyUser=userid
-        systemProp.http.proxyPassword=password
-        systemProp.http.auth.ntlm.domain=domain
-    }
-    ...
-}
-</pre>
-
-
-
-<p>For project-wide HTTP proxy settings, set the proxy settings in the
-<code>gradle/gradle.properties</code> file. </p>
-
-<pre>
-# Project-wide Gradle settings.
-...
-
-systemProp.http.proxyHost=proxy.company.com
-systemProp.http.proxyPort=443
-systemProp.http.proxyUser=username
-systemProp.http.proxyPassword=password
-systemProp.http.auth.ntlm.domain=domain
-
-systemProp.https.proxyHost=proxy.company.com
-systemProp.https.proxyPort=443
-systemProp.https.proxyUser=username
-systemProp.https.proxyPassword=password
-systemProp.https.auth.ntlm.domain=domain
-
-...
-</pre>
-
-
-<p>For information about using Gradle properties for proxy settings, see the
- <a href="http://www.gradle.org/docs/current/userguide/build_environment.html">Gradle User Guide</a>.</p>
-
-<p class="note"><strong>Note:</strong> When using Android Studio, the settings in the Android
-Studio IDE HTTP proxy settings page override the HTTP proxy settings in the
-<strong>gradle.properties</strong> file.</p>
-
-
-
-<h3>SDK Manager HTTP Proxy Settings </h3>
-<p>SDK Manager proxy settings enable proxy internet access for Android package and library
-updates from SDK Manager packages. </p>
-
-<p>To set the SDK Manager settings for proxy internet access, start the SDK Manager and open the
-SDK Manager page. </p>
-
-<ul>
-   <li>On Windows, select <strong>Tools &gt; Options</strong> from the menu bar. </li>
-   <li>On Mac and Linux, choose <strong>Tools &gt; Options</strong> from the system menu bar. </li>
- </ul>
-
-<p>The Android SDK Manager page appears. Enter the settings and click <strong>Apply</strong>. </p>
-
-
-
-<h2 id="other">Other Highlights</h2>
-
-<h3 id="trans-editor"> Translations Editor</h3>
-<p>Multi-language support is enhanced with the Translations Editor plugin so you can easily add
-a variety of locales to the app's translation file. With
-<a href="https://tools.ietf.org/html/bcp47">BCP 47</a> support, the editor combines language and
-region codes into a single selection for targeted localizations. Color codes indicate whether a
-locale is complete or still missing string translations. </p>
-
-<p>To access the Translations Editor, open a <code>strings.xml</code> file and click the
-<strong>Open Editor</strong> link.  </p>
-
-    <img src="{@docRoot}images/tools/studio-translationeditoropen.png" />
-    <p class="img-caption"><strong>Figure 12.</strong> Add locales and strings in the
-    Translations Editor.</p>
-
-
-<h3> Editor support for the latest Android APIs</h3>
-<p>Android Studio supports the
-<a href="{@docRoot}design/material/index.html">Material Design</a></li> themes, widgets, and
-graphics, such as shadow layers and API version rendering (showing the layout across different
-UI versions). Also, the drawable XML tags and attributes, such as <code>&lt;ripple&gt;</code>
-and <code>&lt;animated-selector&gt;</code>, are supported.</p>
-
-
-<h3 id="git-samples"> Easy access to Android code samples on GitHub</h3>
-<p>Clicking <strong>Import Samples</strong> from the <strong>File</strong> menu or <em>Welcome</em>
-page provides seamless access to Google code samples on GitHub.</p>
-    <p><img src="{@docRoot}images/tools/studio-samples-githubaccess.png" /></p>
-    <p class="img-caption"><strong>Figure 13.</strong> Get code samples from GitHub.</p>
-
-
-    <p><img src="{@docRoot}images/tools/studio-sample-in-editor.png" /></p>
-    <p class="img-caption"><strong>Figure 14.</strong> Imported code sample.</p>
-
 
diff --git a/docs/html/tools/studio/studio-config.jd b/docs/html/tools/studio/studio-config.jd
new file mode 100644
index 0000000..f9646b8
--- /dev/null
+++ b/docs/html/tools/studio/studio-config.jd
@@ -0,0 +1,174 @@
+page.title=Configuration
+page.metaDescription=Learn about the Android Studio configuration.
+page.tags=studio, configuration
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#update-channel">Update Channels</a></li>
+      <li><a href="#proxy">Proxy Settings</a></li>
+    </ol>
+
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}sdk/installing/index.html?pkg=studio">Installing Android Studio</a></li>
+    <li><a href="{@docRoot}tools/workflow/index.html">Workflow</a></li>
+    <li><a href="{@docRoot}sdk/installing/studio-features.html">Build System</a></li>
+  </ol>
+
+</div>
+</div>
+
+
+<p>During installation, Android Studio provides wizards and templates that verify your system
+requirements, such as the Java Development Kit (JDK) and available RAM, and configure default
+settings, such as an optimized default Android Virtual Device (AVD) emulation and updated system
+images. This document describes additional configuration settings you may want to use to
+customize your use of Android Studio. </p>
+
+<p>For specific documentation about emulator and device setup and use, see
+<a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a>,
+<a href="{@docRoot}tools/device.html">Using Hardware Devices</a>, and
+<a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a>. </p>
+
+
+
+<h2 id="update-channel">Update channels</h2>
+<p>Android Studio provides four update channels to keep Android Studio up-to-date based on your
+code-level preference:
+<ul>
+  <li><strong>Canary channel</strong>: Canary builds provide bleeding edge releases, updated
+  about weekly. While these builds do get tested, they are still subject to bugs, as we want
+  people to see what's new as soon as possible. This is not recommended for production.</li>
+  <li><strong>Dev channel</strong>: Dev builds are hand-picked older canary builds that survived
+  the test of time. They are updated roughly bi-weekly or monthly.</li>
+  <li><strong>Beta channel</strong>: Beta builds are used for beta-quality releases before a
+  production release.</li>
+  <li><strong>Stable channel</strong>: Used for stable, production-ready versions.</li>
+</ul>
+</p>
+
+<p>By default, Android Studio uses the <em>Stable</em> channel. Use
+<strong>File > Settings > Appearance & Behavior System Settings > Updates</strong> to change your
+channel setting. </p>
+
+
+
+<h2 id="proxy">Proxy Settings</h2>
+<p>Proxies serve as intermediary connection points between HTTP clients and web servers that add
+security and privacy to internet connections.</p>
+
+<p>To support running Android Studio behind a firewall, set the proxy settings for the
+Android Studio IDE and the SDK Manager. Use the Android Studio IDE HTTP Proxy settings page to set
+the HTTP proxy settings for Android Studio. The SDK Manager has a separate HTTP Proxy settings
+page.</p>
+
+<p>When running the Android Plugin for Gradle from the command line or on machines where
+Android Studio is not installed, such as continuous integration servers, set the proxy settings
+in the Gradle build file.</p>
+
+<p class="note"><strong>Note:</strong> After the initial installation of the Android Studio bundle,
+Android Studio can run with internet access or off-line. However, Android Studio requires an
+internet connection for Setup Wizard synchronization, 3rd-party library access, access to remote
+repositories, Gradle initialization and synchronization, and Android Studio version updates.</p>
+
+
+<h3>Setting up the Android Studio Proxy</h3>
+<p>Android Studio supports HTTP proxy settings so you can run Android Studio behind a firewall or
+secure network. To set the HTTP proxy settings in Android Studio:</p>
+<ol>
+ <li>From the main menu choose <strong>File &gt; Settings &gt; Appearance & Behavior -- System
+ Settings -- HTTP Proxy</strong>.
+
+<li>In Android Studio, open the IDE Settings dialog.
+  <ul>
+     <li>On Windows and Linux, choose
+     <strong>File &gt; Settings &gt; IDE Setting -- HTTP Proxy</strong>. </li>
+     <li>On Mac, choose
+     <strong>Android Studio &gt; Preferences &gt; IDE Setting -- HTTP Proxy</strong>. </li>
+   </ul>
+ The HTTP Proxy page appears.</li>
+ <li>Select <strong>auto-detection</strong> to use an auto-configuration URL to configure the
+ proxy settings or <strong>manual</strong> to enter each of the settings. For a detailed explanation
+ of these settings, see
+ <a href="https://www.jetbrains.com/idea/help/http-proxy.html">HTTP Proxy</a>. </li>
+ <li>Click <strong>Apply</strong> to enable the proxy settings. </li>
+</ol>
+
+<h3>Android Plugin for Gradle HTTP proxy settings</h3>
+When running the Android Plugin from the command line or on machines where Android Studio is not
+installed, set the Android Plugin for Gradle proxy settings in the Gradle build file.</p>
+
+<p>For application-specific HTTP proxy settings, set the proxy settings in the
+{@code build.gradle} file as required for each application module.</p>
+<pre>
+apply plugin: 'com.android.application'
+
+android {
+    ...
+
+    defaultConfig {
+        ...
+        systemProp.http.proxyHost=proxy.company.com
+        systemProp.http.proxyPort=443
+        systemProp.http.proxyUser=userid
+        systemProp.http.proxyPassword=password
+        systemProp.http.auth.ntlm.domain=domain
+    }
+    ...
+}
+</pre>
+
+
+
+<p>For project-wide HTTP proxy settings, set the proxy settings in the
+<code>gradle/gradle.properties</code> file. </p>
+
+<pre>
+# Project-wide Gradle settings.
+...
+
+systemProp.http.proxyHost=proxy.company.com
+systemProp.http.proxyPort=443
+systemProp.http.proxyUser=username
+systemProp.http.proxyPassword=password
+systemProp.http.auth.ntlm.domain=domain
+
+systemProp.https.proxyHost=proxy.company.com
+systemProp.https.proxyPort=443
+systemProp.https.proxyUser=username
+systemProp.https.proxyPassword=password
+systemProp.https.auth.ntlm.domain=domain
+
+...
+</pre>
+
+
+<p>For information about using Gradle properties for proxy settings, see the
+ <a href="http://www.gradle.org/docs/current/userguide/build_environment.html">Gradle User Guide</a>.</p>
+
+<p class="note"><strong>Note:</strong> When using Android Studio, the settings in the Android
+Studio IDE HTTP proxy settings page override the HTTP proxy settings in the
+<strong>gradle.properties</strong> file.</p>
+
+
+
+<h3>SDK Manager HTTP Proxy Settings </h3>
+<p>SDK Manager proxy settings enable proxy internet access for Android package and library
+updates from SDK Manager packages. </p>
+
+<p>To set the SDK Manager settings for proxy internet access, start the SDK Manager and open the
+SDK Manager page. </p>
+
+<ul>
+   <li>On Windows, select <strong>Tools &gt; Options</strong> from the menu bar. </li>
+   <li>On Mac and Linux, choose <strong>Tools &gt; Options</strong> from the system menu bar. </li>
+ </ul>
+
+<p>The Android SDK Manager page appears. Enter the settings and click <strong>Apply</strong>. </p>
+
+
+
diff --git a/docs/html/tools/studio/studio-features.jd b/docs/html/tools/studio/studio-features.jd
new file mode 100644
index 0000000..76eba10
--- /dev/null
+++ b/docs/html/tools/studio/studio-features.jd
@@ -0,0 +1,123 @@
+page.title=Features
+page.metaDescription=Learn about the Android Studio features.
+page.tags=studio, features
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+    <h2>In this document</h2>
+    <ol>
+      <li><a href="#trans-editor">Translations Editor</a></li>
+      <li><a href="#git-samples">Android Code Samples on GitHub</a></li>
+      <li><a href="#template-support">Expanded Template and Form Factor Support</a></li>
+      <li><a href="#project-settings">Android Studio and Project Settings</a></li>
+      <li><a href="#support-apis">Editor Support for the Latest Android APIs</a></li>
+    </ol>
+
+  <h2>See also</h2>
+  <ol>
+    <li><a href="{@docRoot}tools/workflow/index.html">Workflow</a></li>
+    <li><a href="{@docRoot}sdk/installing/studio-build.html">Build System</a></li>
+    <li><a href="{@docRoot}sdk/installing/studio-tips.html">Android Studio Tip & Tricks</a></li>
+  </ol>
+
+</div>
+</div>
+
+
+<p>If you're new to Android Studio or exploring recent updates, this
+page provides an introduction to some key Android Studio features.</p>
+
+<p>For specific Android Studio how-to documentation, see the pages in the <a href=
+"{@docRoot}tools/workflow/index.html">Workflow</a> section, such as
+<a href="{@docRoot}sdk/installing/create-project.html">Managing Projects from Android Studio</a>
+and
+<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>. </p>
+
+
+
+<h2 id="trans-editor">Translations Editor</h2>
+<p>Multi-language support is enhanced with the Translations Editor plugin so you can easily add
+a variety of locales to the app's translation file. With
+<a href="https://tools.ietf.org/html/bcp47">BCP 47</a> support, the editor combines language and
+region codes into a single selection for targeted localizations. Color codes indicate whether a
+locale is complete or still missing string translations. </p>
+
+<p>To access the Translations Editor, open a <code>strings.xml</code> file and click the
+<strong>Open Editor</strong> link, or click the globe icon
+(<img src="{@docRoot}images/tools/studio-globe-icon.png" style="vertical-align:bottom;margin:0;height:19px" />) in the Design layout view.  </p>
+
+
+    <img src="{@docRoot}images/tools/studio-translationeditoropen.png" />
+    <p class="img-caption"><strong>Figure 1.</strong> Add locales and strings in the
+    Translations Editor.</p>
+
+
+
+<h2 id="git-samples">Android Code Samples on GitHub</h2>
+<p>Clicking <strong>Import Samples</strong> from the <strong>File</strong> menu or <em>Welcome</em>
+page provides seamless access to Google code samples on GitHub.</p>
+    <p><img src="{@docRoot}images/tools/studio-samples-githubaccess.png" /></p>
+    <p class="img-caption"><strong>Figure 2.</strong> Get code samples from GitHub.</p>
+
+
+    <p><img src="{@docRoot}images/tools/studio-sample-in-editor.png" /></p>
+    <p class="img-caption"><strong>Figure 3.</strong> Imported code sample.</p>
+
+
+
+<h2 id="template-support">Expanded Template and Form Factor Support</h2>
+<p>Android Studio supports templates for Google Services and expands the available device
+types. </p>
+
+    <h4> Android Wear and TV support</h4>
+    <p>For easy cross-platform development, the Project Wizard provides templates for
+    creating your apps for Android Wear and TV. </p>
+    <p><img src="{@docRoot}images/tools/studio-tvwearsupport.png"  />
+
+      <p class="img-caption"><strong>Figure 4.</strong> Supported form factors.</p>
+    <p>During app creation, the Project Wizard also displays an API Level dialog to help you choose
+    the best <em>minSdkVersion</em> for your project.</p>
+
+
+    <h4> Google App Engine integration (Google Cloud Platform/Messaging)</h4>
+    <p>Quick cloud integration. Using Google App Engine to connect to the Google cloud
+    and create a cloud end-point is as easy as selecting <em>File > New Module > App Engine Java
+    Servlet Module</em> and specifying the module, package, and client names. </p>
+    <p><img src="{@docRoot}images/tools/studio-cloudmodule.png" /></p>
+    <p class="img-caption"><strong>Figure 5</strong> Google App Engine integration.</p>
+
+
+<h2 id="project-settings">Android Studio and Project Settings</h2>
+<p>Android Studio provides setting dialogs so you can manage the most important Android Studio and
+project settings from the <strong>File &gt; Project Structure</strong> and
+<strong>File &gt; Settings</strong> menus. For example, you can use the
+<strong>File &gt; Project Structure</strong> menu or
+the <code>build.gradle</code> file to update your <code>productFlavor</code> settings.
+Additional settings from the <strong>File &gt; Project Structure</strong> menus include:
+<ul>
+ <li>SDK and JDK location </li>
+ <li>SDK version </li>
+ <li>Gradle and Android Plugin for Gradle versions </li>
+ <li>Build tools version </li>
+ <li>Multidex setting</li>
+ <li><code>buildTypes</code> </li>
+ <li>Dependencies </li>
+</ul>
+</p>
+
+<p>Use the <strong>File &gt; Settings</strong> menu to modify the Android Studio or project
+behavior, such a UI themes, system settings, and version control. </p>
+
+
+
+<h2 id="support-apis">Editor Support for the Latest Android APIs</h2>
+<p>Android Studio supports the
+<a href="{@docRoot}design/material/index.html">Material Design</a></li> themes, widgets, and
+graphics, such as shadow layers and API version rendering (showing the layout across different
+UI versions). Also, the drawable XML tags and attributes, such as <code>&lt;ripple&gt;</code>
+and <code>&lt;animated-selector&gt;</code>, are supported.</p>
+
+
+
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index abfa030..db19d4f 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -20,6 +20,10 @@
       <a href="<?cs var:toroot?>tools/studio/index.html">Android Studio</a>
     </div>
     <ul>
+      <li><a href="<?cs var:toroot ?>tools/studio/studio-config.html">
+          Configuration</a></li>
+      <li><a href="<?cs var:toroot ?>tools/studio/studio-features.html">
+          Features</a></li>
       <li><a href="<?cs var:toroot ?>sdk/installing/studio-tips.html">
           Tips and Tricks</a></li>
     </ul>
@@ -196,6 +200,68 @@
       </ul>
   </li><!-- end of build system -->
 
+
+<!-- Performance Tools menu-->
+  <li class="nav-section">
+    <div class="nav-section-header">
+      <a href="<?cs var:toroot ?>tools/performance/index.html">Peformance Tools</a>
+    </div>
+    <ul>
+      <li><a href="<?cs var:toroot ?>tools/performance/debug-gpu-overdraw/index.html">
+        Overdraw Debugger</a>
+      </li>
+      <li><a href="<?cs var:toroot ?>tools/performance/profile-gpu-rendering/index.html">
+        Rendering Profiler</a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/index.html">
+          Hierarchy Viewer</a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/setup.html"><span
+            class="en">Setup</span></a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/performance/hierarchy-viewer/profiling.html"><span
+            class="en">Profiling</span></a>
+          </li>
+        </ul>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/performance/comparison.html">
+          Memory Profilers</a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>tools/performance/memory-monitor/index.html"><span
+            class="en">Memory Monitor</span></a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/performance/heap-viewer/index.html"><span
+            class="en">Heap Viewer</span></a>
+          </li>
+          <li><a href="<?cs var:toroot ?>tools/performance/allocation-tracker/index.html"><span
+            class="en">Allocation Tracker</span></a>
+          </li>
+        </ul>
+      </li>
+      <li><a href="<?cs var:toroot ?>tools/performance/traceview/index.html">
+        Traceview</a>
+      </li>
+      <li><a href="<?cs var:toroot ?>tools/performance/systrace/index.html">
+        Systrace</a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>tools/performance/batterystats-battery-historian/index.html">
+          Battery Profilers</a></div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>tools/performance/batterystats-battery-historian/charts.html"><span
+            class="en">Historian Charts</span></a>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </li><!-- End Performance Tools menu-->
+
+
   <!-- Testing Tools menu-->
 
   <li class="nav-section">
diff --git a/docs/html/tools/workflow/index.jd b/docs/html/tools/workflow/index.jd
index a24a2b0..b32fa26 100644
--- a/docs/html/tools/workflow/index.jd
+++ b/docs/html/tools/workflow/index.jd
@@ -41,16 +41,16 @@
     <a href="{@docRoot}tools/projects/index.html">Create an Android project</a>.</p>
   </li>
   <li><strong>Building, Debugging and Testing</strong>
-    <p>During this phase you build your project into a debuggable <code>.apk</code> package(s) 
-    that you can install and run on the emulator or an Android-powered device. Android Studio uses 
-    a build system based on <a href="http://www.gradle.org/" target="_android">Gradle</a> 
-    that provides flexibility, customized build variants, dependency resolution, and much more. 
-    If you're using another IDE, you can build your project using Gradle and install it on a device 
+    <p>During this phase you build your project into a debuggable <code>.apk</code> package(s)
+    that you can install and run on the emulator or an Android-powered device. Android Studio uses
+    a build system based on <a href="http://www.gradle.org/" target="_android">Gradle</a>
+    that provides flexibility, customized build variants, dependency resolution, and much more.
+    If you're using another IDE, you can build your project using Gradle and install it on a device
     using <a href="{@docRoot}tools/help/adb.html">adb</a>. For more information, see
     <a href="{@docRoot}tools/building/index.html">Build and run your application</a>.</p>
     <p>Next, with Android Studio you debug your application using the
-    <a href="{@docRoot}tools/help/monitor.html">Android Debug Monitor</a> and device log messages
-    (<a href="{@docRoot}tools/help/logcat.html">logact</a>) along with the IntelliJ IDEA intelligent
+    <a href="{@docRoot}tools/help/monitor.html">Android Device Monitor</a> and device log messages
+    (<a href="{@docRoot}tools/help/logcat.html">logcat</a>) along with the IntelliJ IDEA intelligent
     coding features. You can also use a JDWP-compliant debugger along with the debugging and logging
     tools that are provided with the Android SDK. For more information see
     <a href="{@docRoot}tools/debugging/index.html">Debug your application with the SDK debugging and logging tools</a>.</p>
diff --git a/docs/html/training/safetynet/index.jd b/docs/html/training/safetynet/index.jd
index 6090f41..6d822c6 100644
--- a/docs/html/training/safetynet/index.jd
+++ b/docs/html/training/safetynet/index.jd
@@ -325,7 +325,7 @@
 
   <li>Obtain your API key by expanding <strong>APIs &amp; auth</strong> and
     clicking <strong>Credentials</strong>.
-  Record the <strong>API KEY</strong> value on this page for later use.
+  Record the <strong>API KEY</strong> (<em>not</em> the <em>Android Key</em>) value on this page for later use.
   </li>
 </ol>
 
diff --git a/docs/html/training/wearables/watch-faces/drawing.jd b/docs/html/training/wearables/watch-faces/drawing.jd
index 8b6de76..30a7a6f 100644
--- a/docs/html/training/wearables/watch-faces/drawing.jd
+++ b/docs/html/training/wearables/watch-faces/drawing.jd
@@ -457,9 +457,23 @@
 round devices. You can use this canvas to draw your watch face directly as follows:</p>
 
 <ol>
-<li>If this is the first invocation of the
-<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onDraw(android.graphics.Canvas, android.graphics.Rect)"><code>onDraw()</code></a>
-method, scale your background to fit.</li>
+<li>Override the
+<a href="{@docRoot}reference/android/support/wearable/watchface/CanvasWatchFaceService.Engine.html#onSurfaceChanged(android.view.SurfaceHolder, int, int, int)"><code>onSurfaceChanged()</code></a>
+method to scale your background to fit the device any time the view changes.
+<pre>
+&#64;Override
+public void onSurfaceChanged(
+        SurfaceHolder holder, int format, int width, int height) {
+    if (mBackgroundScaledBitmap == null
+            || mBackgroundScaledBitmap.getWidth() != width
+            || mBackgroundScaledBitmap.getHeight() != height) {
+        mBackgroundScaledBitmap = Bitmap.createScaledBitmap(mBackgroundBitmap,
+                width, height, true /* filter */);
+    }
+    super.onSurfaceChanged(holder, format, width, height);
+}
+</pre>
+</li>
 <li>Check whether the device is in ambient mode or interactive mode.</li>
 <li>Perform any required graphic computations.</li>
 <li>Draw your background bitmap on the canvas.</li>
@@ -482,13 +496,6 @@
     int width = bounds.width();
     int height = bounds.height();
 
-    // Draw the background, scaled to fit.
-    if (mBackgroundScaledBitmap == null
-        || mBackgroundScaledBitmap.getWidth() != width
-        || mBackgroundScaledBitmap.getHeight() != height) {
-        mBackgroundScaledBitmap = Bitmap.createScaledBitmap(mBackgroundBitmap,
-                                      width, height, true);
-    }
     canvas.drawBitmap(mBackgroundScaledBitmap, 0, 0, null);
 
     // Find the center. Ignore the window insets so that, on round watches
