am a4df492d: am 43cbf558: Fixed the tilt watchface left/right reversal.

* commit 'a4df492d8fa29ea7173997294fae54ecee43ceca':
  Fixed the tilt watchface left/right reversal.
diff --git a/notification/MessagingService/Application/src/main/AndroidManifest.xml b/notification/MessagingService/Application/src/main/AndroidManifest.xml
index f8a5850..955f8d4 100644
--- a/notification/MessagingService/Application/src/main/AndroidManifest.xml
+++ b/notification/MessagingService/Application/src/main/AndroidManifest.xml
@@ -37,13 +37,17 @@
         <service android:name=".MessagingService">
         </service>
 
-        <receiver android:name=".MessageReadReceiver">
+        <receiver
+            android:name=".MessageReadReceiver"
+            android:exported="false">
             <intent-filter>
                 <action android:name="com.example.android.messagingservice.ACTION_MESSAGE_READ"/>
             </intent-filter>
         </receiver>
 
-        <receiver android:name=".MessageReplyReceiver">
+        <receiver
+            android:name=".MessageReplyReceiver"
+            android:exported="false">
             <intent-filter>
                 <action android:name="com.example.android.messagingservice.ACTION_MESSAGE_REPLY"/>
             </intent-filter>
diff --git a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/Conversations.java b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/Conversations.java
index 7425df4..88ef7aa 100644
--- a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/Conversations.java
+++ b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/Conversations.java
@@ -17,7 +17,6 @@
 package com.example.android.messagingservice;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
diff --git a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageLogger.java b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageLogger.java
index d1007b5..3459178 100644
--- a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageLogger.java
+++ b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageLogger.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 
+import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -27,13 +28,13 @@
  * and replies. Don't use this in a real world application. This logger is only
  * used for displaying the messages in the text view.
  */
-public class MessageLogger {
+class MessageLogger {
 
     private static final String PREF_MESSAGE = "MESSAGE_LOGGER";
-    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    private static final DateFormat DATE_FORMAT = SimpleDateFormat.getDateTimeInstance();
+    private static final String LINE_BREAKS = "\n\n";
 
     public static final String LOG_KEY = "message_data";
-    public static final String LINE_BREAKS = "\n\n";
 
     public static void logMessage(Context context, String message) {
         SharedPreferences prefs = getPrefs(context);
diff --git a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReadReceiver.java b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReadReceiver.java
index f28a3a7..63c244f 100644
--- a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReadReceiver.java
+++ b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReadReceiver.java
@@ -16,7 +16,6 @@
 
 package com.example.android.messagingservice;
 
-import android.app.NotificationManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -35,8 +34,8 @@
         if (conversationId != -1) {
             Log.d(TAG, "Conversation " + conversationId + " was read");
             MessageLogger.logMessage(context, "Conversation " + conversationId + " was read.");
-            NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
-            notificationManager.cancel(conversationId);
+            NotificationManagerCompat.from(context)
+                    .cancel(conversationId);
         }
     }
 }
diff --git a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingFragment.java b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingFragment.java
index f8efcc0..703bc80 100644
--- a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingFragment.java
+++ b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingFragment.java
@@ -51,7 +51,7 @@
     private Messenger mService;
     private boolean mBound;
 
-    private ServiceConnection mConnection = new ServiceConnection() {
+    private final ServiceConnection mConnection = new ServiceConnection() {
         @Override
         public void onServiceConnected(ComponentName componentName, IBinder service) {
             mService = new Messenger(service);
@@ -67,7 +67,7 @@
         }
     };
 
-    private SharedPreferences.OnSharedPreferenceChangeListener listener =
+    private final SharedPreferences.OnSharedPreferenceChangeListener listener =
             new SharedPreferences.OnSharedPreferenceChangeListener() {
         @Override
         public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
diff --git a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java
index f590061..73199ed 100644
--- a/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java
+++ b/notification/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java
@@ -31,41 +31,24 @@
 import android.support.v4.app.RemoteInput;
 import android.util.Log;
 
+import java.lang.ref.WeakReference;
 import java.util.Iterator;
 
 public class MessagingService extends Service {
     private static final String TAG = MessagingService.class.getSimpleName();
-
-    public static final String READ_ACTION =
+    private static final String EOL = "\n";
+    private static final String READ_ACTION =
             "com.example.android.messagingservice.ACTION_MESSAGE_READ";
+
     public static final String REPLY_ACTION =
             "com.example.android.messagingservice.ACTION_MESSAGE_REPLY";
     public static final String CONVERSATION_ID = "conversation_id";
     public static final String EXTRA_VOICE_REPLY = "extra_voice_reply";
     public static final int MSG_SEND_NOTIFICATION = 1;
-    public static final String EOL = "\n";
 
     private NotificationManagerCompat mNotificationManager;
 
-    private final Messenger mMessenger = new Messenger(new IncomingHandler());
-
-    /**
-     * Handler of incoming messages from clients.
-     */
-    class IncomingHandler extends Handler {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_SEND_NOTIFICATION:
-                    int howManyConversations = msg.arg1 <= 0 ? 1 : msg.arg1;
-                    int messagesPerConv = msg.arg2 <= 0 ? 1 : msg.arg2;
-                    sendNotification(howManyConversations, messagesPerConv);
-                    break;
-                default:
-                    super.handleMessage(msg);
-            }
-        }
-    }
+    private final Messenger mMessenger = new Messenger(new IncomingHandler(this));
 
     @Override
     public void onCreate() {
@@ -79,18 +62,6 @@
         return mMessenger.getBinder();
     }
 
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        Log.d(TAG, "onStartCommand");
-        return START_STICKY;
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        Log.d(TAG, "onDestroy");
-    }
-
     // Creates an intent that will be triggered when a message is marked as read.
     private Intent getMessageReadIntent(int id) {
         return new Intent()
@@ -171,4 +142,31 @@
 
         mNotificationManager.notify(conversation.getConversationId(), builder.build());
     }
+
+    /**
+     * Handler for incoming messages from clients.
+     */
+    private static class IncomingHandler extends Handler {
+        private final WeakReference<MessagingService> mReference;
+
+        IncomingHandler(MessagingService service) {
+            mReference = new WeakReference<>(service);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            MessagingService service = mReference.get();
+            switch (msg.what) {
+                case MSG_SEND_NOTIFICATION:
+                    int howManyConversations = msg.arg1 <= 0 ? 1 : msg.arg1;
+                    int messagesPerConversation = msg.arg2 <= 0 ? 1 : msg.arg2;
+                    if (service != null) {
+                        service.sendNotification(howManyConversations, messagesPerConversation);
+                    }
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+        }
+    }
 }
diff --git a/notification/MessagingService/Application/src/main/res/layout-land/fragment_message_me.xml b/notification/MessagingService/Application/src/main/res/layout-land/fragment_message_me.xml
index 6f4f88b..0cfd1cf 100644
--- a/notification/MessagingService/Application/src/main/res/layout-land/fragment_message_me.xml
+++ b/notification/MessagingService/Application/src/main/res/layout-land/fragment_message_me.xml
@@ -21,7 +21,8 @@
               android:paddingBottom="@dimen/activity_vertical_margin"
               android:paddingLeft="@dimen/activity_horizontal_margin"
               android:paddingRight="@dimen/activity_horizontal_margin"
-              android:paddingTop="@dimen/activity_vertical_margin">
+              android:paddingTop="@dimen/activity_vertical_margin"
+              android:baselineAligned="false">
     <LinearLayout
         android:layout_width="0dp"
         android:layout_height="match_parent"
diff --git a/notification/MessagingService/Application/src/main/res/layout/fragment_message_me.xml b/notification/MessagingService/Application/src/main/res/layout/fragment_message_me.xml
index 29a8c44..404bd4d 100644
--- a/notification/MessagingService/Application/src/main/res/layout/fragment_message_me.xml
+++ b/notification/MessagingService/Application/src/main/res/layout/fragment_message_me.xml
@@ -14,7 +14,6 @@
   limitations under the License.
   -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
diff --git a/notification/MessagingService/Application/src/main/res/values/strings.xml b/notification/MessagingService/Application/src/main/res/values/strings.xml
index 001b10e..3f8390d 100644
--- a/notification/MessagingService/Application/src/main/res/values/strings.xml
+++ b/notification/MessagingService/Application/src/main/res/values/strings.xml
@@ -16,8 +16,6 @@
   -->
 <resources>
     <string name="app_name">Messaging Sample</string>
-    <string name="action_settings">Settings</string>
-    <string name="title">Messaging Sample</string>
     <string name="notification_reply">Reply by Voice</string>
     <string name="send_2_conversations">Send 2 conversations with 1 message</string>
     <string name="send_1_conversation">Send 1 conversation with 1 message</string>
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java
index 0f1bc8b..28f9127 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java
@@ -216,7 +216,7 @@
 
         @Override
         public void onClick(View v) {
-            mItemClickListener.onItemClick(v, getPosition());
+            mItemClickListener.onItemClick(v, getAdapterPosition());
         }
     }
 
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java
index 4d21009..1ab7326 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java
@@ -21,12 +21,11 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
+import android.support.design.widget.FloatingActionButton;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.NavUtils;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
@@ -83,6 +82,7 @@
         TextView descTextView = (TextView) view.findViewById(R.id.descriptionTextView);
         TextView distanceTextView = (TextView) view.findViewById(R.id.distanceTextView);
         ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
+        FloatingActionButton mapFab = (FloatingActionButton) view.findViewById(R.id.mapFab);
 
         LatLng location = Utils.getLocation(getActivity());
         String distance = Utils.formatDistanceBetween(location, mAttraction.location);
@@ -102,13 +102,18 @@
                 .placeholder(R.color.lighter_gray)
                 .override(imageSize, imageSize)
                 .into(imageView);
-        return view;
-    }
 
-    @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        inflater.inflate(R.menu.detail, menu);
-        super.onCreateOptionsMenu(menu, inflater);
+        mapFab.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent intent = new Intent(Intent.ACTION_VIEW);
+                intent.setData(Uri.parse(Constants.MAPS_INTENT_URI +
+                        Uri.encode(mAttraction.name + ", " + mAttraction.city)));
+                startActivity(intent);
+            }
+        });
+
+        return view;
     }
 
     @Override
@@ -139,12 +144,6 @@
 
                 // Otherwise let the system handle navigating "up"
                 return false;
-            case R.id.map:
-                Intent intent = new Intent(Intent.ACTION_VIEW);
-                intent.setData(Uri.parse(Constants.MAPS_INTENT_URI +
-                        Uri.encode(mAttraction.name + ", " + mAttraction.city)));
-                startActivity(intent);
-                return true;
         }
         return super.onOptionsItemSelected(item);
     }
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/ScaleTransition.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/ScaleTransition.java
new file mode 100644
index 0000000..ab4b91f
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/ScaleTransition.java
@@ -0,0 +1,42 @@
+package com.example.android.xyztouristattractions.ui;
+
+import android.animation.Animator;
+import android.animation.ObjectAnimator;
+import android.animation.PropertyValuesHolder;
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.os.Build;
+import android.transition.TransitionValues;
+import android.transition.Visibility;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+
+@TargetApi(Build.VERSION_CODES.LOLLIPOP)
+public class ScaleTransition extends Visibility {
+
+    public ScaleTransition(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public Animator createAnimation(View view, float startScale, float endScale, boolean appear) {
+        view.setScaleX(startScale);
+        view.setScaleY(startScale);
+        PropertyValuesHolder holderX = PropertyValuesHolder.ofFloat("scaleX", startScale, endScale);
+        PropertyValuesHolder holderY = PropertyValuesHolder.ofFloat("scaleY", startScale, endScale);
+        ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(view, holderX, holderY);
+        return animator;
+    }
+
+    @Override
+    public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues,
+                             TransitionValues endValues) {
+        return createAnimation(view, 0, 1, true);
+    }
+
+    @Override
+    public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues,
+                                TransitionValues endValues) {
+        return createAnimation(view, 1, 0, false);
+    }
+}
\ No newline at end of file
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml
index dffeb4e..4b00e68 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml
@@ -16,67 +16,86 @@
   limitations under the License.
   -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
+<android.support.design.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:weightSum="100">
-
-    <ImageView
-        android:id="@+id/imageView"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="50"
-        android:scaleType="centerCrop"
-        android:transitionName="image" />
+    android:layout_height="match_parent">
 
     <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?colorPrimary"
         android:orientation="vertical"
-        android:paddingStart="@dimen/keyline2"
-        android:paddingEnd="@dimen/keyline3"
-        android:paddingTop="@dimen/standard_margin"
-        android:paddingBottom="@dimen/standard_margin"
-        android:elevation="2dp">
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:weightSum="100">
 
-        <TextView
-            android:id="@+id/nameTextView"
+        <ImageView
+            android:id="@+id/imageView"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="50"
+            android:scaleType="centerCrop"
+            android:transitionName="image" />
+
+        <LinearLayout
+            android:id="@+id/textLayout"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:maxLines="2"
-            android:ellipsize="end"
-            android:textIsSelectable="true"
-            style="@style/TextAppearance.AppCompat.Title.Inverse"
-            android:transitionName="title" />
+            android:background="?colorPrimary"
+            android:orientation="vertical"
+            android:paddingStart="@dimen/keyline2"
+            android:paddingEnd="@dimen/keyline3"
+            android:paddingTop="@dimen/standard_margin"
+            android:paddingBottom="@dimen/standard_margin"
+            android:elevation="2dp">
 
-        <TextView
-            android:id="@+id/distanceTextView"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            style="@style/TextAppearance.AppCompat.Subhead.Inverse" />
+            <TextView
+                android:id="@+id/nameTextView"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:maxLines="2"
+                android:ellipsize="end"
+                android:textIsSelectable="true"
+                style="@style/TextAppearance.AppCompat.Title.Inverse" />
+
+            <TextView
+                android:id="@+id/distanceTextView"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                style="@style/TextAppearance.AppCompat.Subhead.Inverse" />
+
+        </LinearLayout>
+
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="50"
+            android:paddingTop="@dimen/standard_margin"
+            android:paddingBottom="@dimen/standard_margin"
+            android:scrollbarStyle="outsideOverlay"
+            android:clipToPadding="false">
+
+            <TextView
+                android:id="@+id/descriptionTextView"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:textIsSelectable="true"
+                style="@style/TextAppearance.AppCompat.Body1"
+                android:paddingStart="@dimen/keyline2"
+                android:paddingEnd="@dimen/keyline3" />
+
+        </ScrollView>
 
     </LinearLayout>
-    
-    <ScrollView
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="50"
-        android:paddingTop="@dimen/standard_margin"
-        android:paddingBottom="@dimen/standard_margin"
-        android:scrollbarStyle="outsideOverlay"
-        android:clipToPadding="false">
 
-        <TextView
-            android:id="@+id/descriptionTextView"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:textIsSelectable="true"
-            style="@style/TextAppearance.AppCompat.Body1"
-            android:paddingStart="@dimen/keyline2"
-            android:paddingEnd="@dimen/keyline3" />
+    <android.support.design.widget.FloatingActionButton
+        android:id="@+id/mapFab"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:src="@drawable/ic_action_map"
+        app:layout_anchor="@id/textLayout"
+        app:layout_anchorGravity="bottom|start"
+        app:rippleColor="@color/colorFabRipple"
+        android:layout_marginStart="@dimen/small_margin"
+        android:clickable="true" />
 
-    </ScrollView>
-
-</LinearLayout>
\ No newline at end of file
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml
index 25f55d0..b2cef57 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/list_row.xml
@@ -49,21 +49,20 @@
             android:id="@android:id/text1"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_toRightOf="@android:id/icon"
+            android:layout_toEndOf="@android:id/icon"
             android:paddingTop="@dimen/small_margin"
             android:paddingLeft="@dimen/small_margin"
             android:paddingRight="@dimen/small_margin"
             android:maxLines="1"
             android:ellipsize="end"
             style="?android:textAppearanceMedium"
-            tools:text="Title 1"
-            android:transitionName="image" />
+            tools:text="Title 1" />
 
         <TextView
             android:id="@android:id/text2"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_toRightOf="@android:id/icon"
+            android:layout_toEndOf="@android:id/icon"
             android:layout_below="@android:id/text1"
             android:padding="@dimen/small_margin"
             android:ellipsize="end"
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/menu/detail.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/menu/detail.xml
deleted file mode 100644
index aeb5c98..0000000
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/menu/detail.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  Copyright 2015 Google Inc. All rights reserved.
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    tools:context=".MainActivity" >
-
-    <item android:id="@+id/map"
-        android:title="@string/action_map"
-        android:orderInCategory="100"
-        android:icon="@drawable/ic_action_map"
-        app:showAsAction="ifRoom" />
-
-</menu>
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/shared_move.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/shared_move.xml
new file mode 100644
index 0000000..3debfa0
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/shared_move.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
+    android:startDelay="@android:integer/config_shortAnimTime">
+
+    <changeBounds>
+        <arcMotion />
+    </changeBounds>
+    <changeTransform/>
+    <changeClipBounds/>
+    <changeImageTransform/>
+
+</transitionSet>
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/explode.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/window_enter.xml
similarity index 77%
rename from wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/explode.xml
rename to wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/window_enter.xml
index 5dfa717..619ffdf 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/explode.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/window_enter.xml
@@ -14,7 +14,8 @@
   See the License for the specific language governing permissions and
   limitations under the License.
   -->
-<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
+    android:transitionOrdering="sequential">
 
     <explode>
         <targets>
@@ -25,4 +26,11 @@
         </targets>
     </explode>
 
+    <transition class="com.example.android.xyztouristattractions.ui.ScaleTransition"
+        android:interpolator="@android:interpolator/overshoot">
+        <targets>
+            <target android:targetId="@id/mapFab" />
+        </targets>
+    </transition>
+
 </transitionSet>
\ No newline at end of file
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/explode.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/window_return.xml
similarity index 70%
copy from wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/explode.xml
copy to wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/window_return.xml
index 5dfa717..0dae377 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/explode.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/transition-v21/window_return.xml
@@ -14,7 +14,16 @@
   See the License for the specific language governing permissions and
   limitations under the License.
   -->
-<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
+<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
+    android:transitionOrdering="sequential">
+
+    <transition class="com.example.android.xyztouristattractions.ui.ScaleTransition"
+        android:interpolator="@android:interpolator/fast_out_linear_in"
+        android:duration="@android:integer/config_shortAnimTime">
+        <targets>
+            <target android:targetId="@id/mapFab" />
+        </targets>
+    </transition>
 
     <explode>
         <targets>
@@ -22,6 +31,7 @@
             <target android:targetClass="android.widget.FrameLayout" />
             <target android:targetClass="android.widget.LinearLayout" />
             <target android:targetClass="android.widget.ImageView" />
+            <target android:excludeId="@id/mapFab" />
         </targets>
     </explode>
 
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/values-v21/styles.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/values-v21/styles.xml
index 319d664..d1221c5 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/values-v21/styles.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/values-v21/styles.xml
@@ -21,8 +21,10 @@
         <item name="android:windowActivityTransitions">true</item>
         <item name="android:windowExitTransition">@transition/fade</item>
         <item name="android:windowReenterTransition">@transition/fade</item>
-        <item name="android:windowEnterTransition">@transition/explode</item>
-        <item name="android:windowReturnTransition">@transition/explode</item>
+        <item name="android:windowEnterTransition">@transition/window_enter</item>
+        <item name="android:windowReturnTransition">@transition/window_return</item>
+        <item name="android:windowSharedElementEnterTransition">@transition/shared_move</item>
+        <item name="android:windowSharedElementExitTransition">@transition/shared_move</item>
         <item name="android:windowAllowEnterTransitionOverlap">false</item>
         <item name="android:windowAllowReturnTransitionOverlap">false</item>
         <item name="android:windowSharedElementsUseOverlay">false</item>
diff --git a/wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/colors.xml b/wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/colors.xml
index 73c2b6c..2260336 100644
--- a/wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/colors.xml
+++ b/wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/colors.xml
@@ -20,5 +20,6 @@
     <color name="colorPrimary">#4e6cef</color>
     <color name="colorPrimaryDark">#2a36b1</color>
     <color name="colorAccent">#ff7043</color>
+    <color name="colorFabRipple">#D84315</color>
 
 </resources>
\ No newline at end of file
diff --git a/wearable/wear/XYZTouristAttractions/template-params.xml b/wearable/wear/XYZTouristAttractions/template-params.xml
index 51882ac..b6c484e 100644
--- a/wearable/wear/XYZTouristAttractions/template-params.xml
+++ b/wearable/wear/XYZTouristAttractions/template-params.xml
@@ -24,15 +24,16 @@
         <has_handheld_app>true</has_handheld_app>
     </wearable>
 
-    <dependency>com.android.support:appcompat-v7:22.1.1</dependency>
-    <dependency>com.google.android.gms:play-services-location:7.3.0</dependency>
-    <dependency>com.google.maps.android:android-maps-utils:0.3.2</dependency>
-    <dependency>com.github.bumptech.glide:glide:3.5.2</dependency>
-    <dependency>com.android.support:recyclerview-v7:22.1.1</dependency>
-    <dependency_wearable>com.google.android.gms:play-services-location:7.3.0</dependency_wearable>
-    <dependency_shared>com.google.android.gms:play-services-wearable:7.3.0</dependency_shared>
-    <dependency_shared>com.google.android.gms:play-services-location:7.3.0</dependency_shared>
-    <dependency_shared>com.google.maps.android:android-maps-utils:0.3.2</dependency_shared>
+    <dependency>com.google.android.gms:play-services-location</dependency>
+    <dependency>com.google.maps.android:android-maps-utils:0.3.4</dependency>
+    <dependency>com.github.bumptech.glide:glide:3.6.0</dependency>
+    <dependency>com.android.support:appcompat-v7:22.2.0</dependency>
+    <dependency>com.android.support:recyclerview-v7:22.2.0</dependency>
+    <dependency>com.android.support:design:22.2.0</dependency>
+    <dependency_wearable>com.google.android.gms:play-services-location</dependency_wearable>
+    <dependency_shared>com.google.android.gms:play-services-wearable</dependency_shared>
+    <dependency_shared>com.google.android.gms:play-services-location</dependency_shared>
+    <dependency_shared>com.google.maps.android:android-maps-utils:0.3.4</dependency_shared>
 
     <strings>
         <intro>