From bbcc7c5fc05f5bd1ae8459483853c976d865d6fe Mon Sep 17 00:00:00 2001 From: George Hilliard Date: Wed, 21 Jan 2015 11:15:36 -0600 Subject: Fix animation glitch The dialpad button no longer changes to a call button while it is visible. Change-Id: I871d1987187c0e721846a32bf3c887037cb46b48 --- src/com/android/dialer/DialtactsActivity.java | 29 ++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java index 4b56c6a7a..78361f555 100644 --- a/src/com/android/dialer/DialtactsActivity.java +++ b/src/com/android/dialer/DialtactsActivity.java @@ -99,6 +99,8 @@ import com.android.phone.common.util.SettingsUtil; import com.android.ims.ImsManager; import com.android.internal.telephony.TelephonyProperties; import com.android.phone.common.animation.AnimationListenerAdapter; +import com.android.phone.common.animation.AnimUtils.AnimationCallback; + import java.util.ArrayList; import java.util.Iterator; @@ -575,7 +577,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O if (!mIsDialpadShown) { mInCallDialpadUp = false; showDialpadFragment(true); - mFloatingActionButton.setImageResource(R.drawable.fab_ic_call); mFloatingActionButton.setVisibility(view.VISIBLE); setConferenceDialButtonImage(false); setConferenceDialButtonVisibility(true); @@ -590,7 +591,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O mIsDialpadShown = false; mDialCallButton.setVisibility(view.VISIBLE); mDialpadFragment.dialConferenceButtonPressed(); - mFloatingActionButton.setImageResource(R.drawable.fab_ic_dial); updateFloatingActionButtonControllerAlignment(true); mFloatingActionButton.setVisibility(view.VISIBLE); break; @@ -730,9 +730,15 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O ft.commit(); if (animate) { - mFloatingActionButtonController.scaleOut(); + mFloatingActionButtonController.scaleOut(new AnimationCallback() { + @Override + public void onAnimationEnd() { + onFloatingActionButtonHidden(); + } + }); } else { mFloatingActionButtonController.setVisible(false); + onFloatingActionButtonHidden(); } mActionBarController.onDialpadUp(); setConferenceDialButtonVisibility(animate); @@ -742,16 +748,25 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O } } - /** - * Callback from child DialpadFragment when the dialpad is shown. - */ - public void onDialpadShown() { + private void onFloatingActionButtonHidden() { + // The dialpad might be hidden again (user pressed Back during animation) + // by the time this executes. + if (!mIsDialpadShown) { + return; + } + if (mDialConferenceButtonPressed) { mFloatingActionButton.setImageResource(R.drawable.fab_ic_dial); mDialConferenceButtonPressed = false; } else { mFloatingActionButton.setImageResource(R.drawable.fab_ic_call); } + } + + /** + * Callback from child DialpadFragment when the dialpad is shown. + */ + public void onDialpadShown() { updateFloatingActionButtonControllerAlignment(mDialpadFragment.getAnimate()); if (mDialpadFragment.getAnimate()) { mDialpadFragment.getView().startAnimation(mSlideIn); -- cgit v1.2.3