summaryrefslogtreecommitdiff
path: root/InCallUI/src/com
diff options
context:
space:
mode:
authorSai Cheemalapati <saicheems@google.com>2014-06-04 16:36:29 -0700
committerSai Cheemalapati <saicheems@google.com>2014-06-06 12:47:06 -0700
commitafedca374ff6e13291fa681a71a1799e2d205a05 (patch)
treec6237d1d1f63851280a444dc77ac8f5b7de1b257 /InCallUI/src/com
parentbb6f533a5a78b6b831dd7697436845ebcccf7d9a (diff)
Moving FAB logic to ContactsCommon.
Moved FAB to ContactsCommon. Cleaned up FAB Controller. Replaced implementation of FAB in InCallUI with controller. Prevented animations from happening again in InCallUI on orientaton change. FAB also repositions correctly on orientation change in InCallUI. Bug: 15386162 Change-Id: I8ea4ef8acb49a83dabe5c18223ce5bac28260824
Diffstat (limited to 'InCallUI/src/com')
-rw-r--r--InCallUI/src/com/android/incallui/CallCardFragment.java77
-rw-r--r--InCallUI/src/com/android/incallui/InCallActivity.java1
2 files changed, 65 insertions, 13 deletions
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index 5adb0521e..3be517b39 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -23,6 +23,7 @@ import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.content.Context;
+import android.content.res.Configuration;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -44,6 +45,7 @@ import android.widget.TextView;
import com.android.contacts.common.animation.AnimUtils;
import com.android.contacts.common.util.ViewUtil;
+import com.android.contacts.common.widget.FloatingActionButtonController;
import java.util.List;
@@ -53,8 +55,9 @@ import java.util.List;
public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPresenter.CallCardUi>
implements CallCardPresenter.CallCardUi {
- private static final int REVEAL_ANIMATION_DURATION = 333;
- private static final int SHRINK_ANIMATION_DURATION = 333;
+ private int mRevealAnimationDuration;
+ private int mShrinkAnimationDuration;
+ private boolean mIsLandscape;
// Primary caller info
private TextView mPhoneNumber;
@@ -76,8 +79,10 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
private View mSecondaryCallInfo;
private TextView mSecondaryCallName;
- private View mEndCallButton;
+ private FloatingActionButtonController mFloatingActionButtonController;
+ private View mFloatingActionButtonContainer;
private ImageButton mHandoffButton;
+ private int mFloatingActionButtonHideOffset;
// Cached DisplayMetrics density.
private float mDensity;
@@ -98,6 +103,13 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ mRevealAnimationDuration = getResources().getInteger(R.integer.reveal_animation_duration);
+ mShrinkAnimationDuration = getResources().getInteger(R.integer.shrink_animation_duration);
+ mFloatingActionButtonHideOffset = getResources().getDimensionPixelOffset(
+ R.dimen.end_call_button_hide_offset);
+ mIsLandscape = getResources().getConfiguration().orientation
+ == Configuration.ORIENTATION_LANDSCAPE;
}
@@ -142,14 +154,41 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
mPrimaryCallInfo = view.findViewById(R.id.primary_call_banner);
mCallButtonsContainer = view.findViewById(R.id.callButtonFragment);
- mEndCallButton = view.findViewById(R.id.endButton);
- mEndCallButton.setOnClickListener(new View.OnClickListener() {
+ mFloatingActionButtonContainer = view.findViewById(
+ R.id.floating_end_call_action_button_container);
+ ImageButton floatingActionButton = (ImageButton) view.findViewById(
+ R.id.floating_end_call_action_button);
+ floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getPresenter().endCallClicked();
}
});
- ViewUtil.setupFloatingActionButton(mEndCallButton, getResources());
+ int floatingActionButtonWidth = getResources().getDimensionPixelSize(
+ R.dimen.floating_action_button_width);
+ mFloatingActionButtonController = new FloatingActionButtonController(getActivity(),
+ mFloatingActionButtonContainer);
+ if (savedInstanceState != null) {
+ final ViewGroup parent = (ViewGroup) mPrimaryCallCardContainer.getParent();
+ final ViewTreeObserver observer = getView().getViewTreeObserver();
+ observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ final ViewTreeObserver observer = getView().getViewTreeObserver();
+ if (!observer.isAlive()) {
+ return;
+ }
+ observer.removeOnGlobalLayoutListener(this);
+ mFloatingActionButtonController.setScreenWidth(parent.getWidth());
+ mFloatingActionButtonController.align(
+ mIsLandscape ? FloatingActionButtonController.ALIGN_QUARTER_RIGHT
+ : FloatingActionButtonController.ALIGN_MIDDLE,
+ 0 /* offsetX */,
+ 0 /* offsetY */,
+ false);
+ }
+ });
+ }
mHandoffButton = (ImageButton) view.findViewById(R.id.handoffButton);
mHandoffButton.setOnClickListener(new View.OnClickListener() {
@@ -544,7 +583,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
@Override
public void setEndCallButtonEnabled(boolean enabled) {
- mEndCallButton.setVisibility(enabled ? View.VISIBLE : View.GONE);
+ mFloatingActionButtonController.setVisible(enabled);
}
private void dispatchPopulateAccessibilityEvent(AccessibilityEvent event, View view) {
@@ -577,7 +616,15 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
// Prepare the state of views before the circular reveal animation
mPrimaryCallCardContainer.setBottom(parent.getHeight());
- mEndCallButton.setTranslationY(200);
+
+ // Set up FAB.
+ mFloatingActionButtonController.setScreenWidth(parent.getWidth());
+ // Move it below the screen.
+ mFloatingActionButtonController.manuallyTranslate(
+ mFloatingActionButtonController.getTranslationXForAlignment(
+ mIsLandscape ? FloatingActionButtonController.ALIGN_QUARTER_RIGHT
+ : FloatingActionButtonController.ALIGN_MIDDLE),
+ mFloatingActionButtonHideOffset);
mCallButtonsContainer.setAlpha(0);
mCallStateLabel.setAlpha(0);
mPrimaryName.setAlpha(0);
@@ -615,7 +662,7 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
final Animator shrinkAnimator =
ObjectAnimator.ofInt(mPrimaryCallCardContainer, "bottom",
startHeight, endHeight);
- shrinkAnimator.setDuration(SHRINK_ANIMATION_DURATION);
+ shrinkAnimator.setDuration(mShrinkAnimationDuration);
shrinkAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
@@ -625,8 +672,12 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
assignTranslateAnimation(mCallTypeLabel, 4);
assignTranslateAnimation(mCallButtonsContainer, 5);
- mEndCallButton.animate().translationY(0)
- .setDuration(SHRINK_ANIMATION_DURATION);
+ mFloatingActionButtonController.align(
+ mIsLandscape ? FloatingActionButtonController.ALIGN_QUARTER_RIGHT
+ : FloatingActionButtonController.ALIGN_MIDDLE,
+ 0 /* offsetX */,
+ 0 /* offsetY */,
+ true);
}
});
shrinkAnimator.setInterpolator(AnimUtils.EASE_IN);
@@ -642,14 +693,14 @@ public class CallCardFragment extends BaseFragment<CallCardPresenter, CallCardPr
final ValueAnimator valueAnimator = ViewAnimationUtils.createCircularReveal(view,
size.x / 2, size.y / 2, 0, Math.max(size.x, size.y));
- valueAnimator.setDuration(REVEAL_ANIMATION_DURATION);
+ valueAnimator.setDuration(mRevealAnimationDuration);
return valueAnimator;
}
private void assignTranslateAnimation(View view, int offset) {
view.setTranslationY(mTranslationOffset * offset);
view.animate().translationY(0).alpha(1).withLayer()
- .setDuration(SHRINK_ANIMATION_DURATION).setInterpolator(AnimUtils.EASE_IN);
+ .setDuration(mShrinkAnimationDuration).setInterpolator(AnimUtils.EASE_IN);
}
private final class LayoutIgnoringListener implements View.OnLayoutChangeListener {
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index 6deae1fe7..c699126e0 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -346,6 +346,7 @@ public class InCallActivity extends Activity {
}
if (intent.getBooleanExtra(NEW_OUTGOING_CALL, false)) {
+ intent.removeExtra(NEW_OUTGOING_CALL);
mCallCardFragment.animateForNewOutgoingCall();
}