Add scaleIn/scaleOut methods to the FAB controller.

Bug: 16399233
Bug: 15862303
Change-Id: I3e7cd0d79bf4016c60d5551923fd8afbd9d8ea51
diff --git a/src/com/android/contacts/common/widget/FloatingActionButtonController.java b/src/com/android/contacts/common/widget/FloatingActionButtonController.java
index 06268a3..e97cbfc 100644
--- a/src/com/android/contacts/common/widget/FloatingActionButtonController.java
+++ b/src/com/android/contacts/common/widget/FloatingActionButtonController.java
@@ -16,15 +16,11 @@
 
 package com.android.contacts.common.widget;
 
-import android.animation.AnimatorListenerAdapter;
 import android.app.Activity;
 import android.content.res.Resources;
-import android.os.Bundle;
-import android.util.Log;
 import android.view.animation.AnimationUtils;
 import android.view.animation.Interpolator;
 import android.view.View;
-import android.widget.ImageButton;
 
 import com.android.contacts.common.util.ViewUtil;
 import com.android.contacts.common.R;
@@ -38,14 +34,18 @@
     public static final int ALIGN_QUARTER_END = 1;
     public static final int ALIGN_END = 2;
 
+    private static final int FAB_FADE_DURATION = 266;
+    private static final int FAB_FADE_IN_DELAY = 100;
+
     private final int mAnimationDuration;
     private final int mFloatingActionButtonWidth;
     private final int mFloatingActionButtonMarginRight;
     private final View mFloatingActionButtonContainer;
+    private final View mFloatingActionButton;
     private final Interpolator mFabInterpolator;
     private int mScreenWidth;
 
-    public FloatingActionButtonController(Activity activity, View container) {
+    public FloatingActionButtonController(Activity activity, View container, View button) {
         Resources resources = activity.getResources();
         mFabInterpolator = AnimationUtils.loadInterpolator(activity,
                 android.R.interpolator.fast_out_slow_in);
@@ -56,6 +56,7 @@
         mAnimationDuration = resources.getInteger(
                 R.integer.floating_action_button_animation_duration);
         mFloatingActionButtonContainer = container;
+        mFloatingActionButton = button;
         ViewUtil.setupFloatingActionButton(mFloatingActionButtonContainer, resources);
     }
 
@@ -133,6 +134,23 @@
     }
 
     /**
+     * Scales the floating action button from no height and width to its actual dimensions. This is
+     * an animation for showing the floating action button.
+     */
+    public void scaleIn() {
+        AnimUtils.scaleIn(mFloatingActionButtonContainer, mAnimationDuration);
+        AnimUtils.fadeIn(mFloatingActionButton, FAB_FADE_DURATION, FAB_FADE_IN_DELAY, null);
+    }
+
+    /**
+     * Scales the floating action button from its actual dimensions to no height and width. This is
+     * an animation for hiding the floating action button.
+     */
+    public void scaleOut() {
+        AnimUtils.scaleOut(mFloatingActionButtonContainer, mAnimationDuration);
+    }
+
+    /**
      * Calculates the X offset of the FAB to the given alignment, adjusted for whether or not the
      * view is in RTL mode.
      *