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.
*