diff options
author | Yorke Lee <yorkelee@google.com> | 2013-08-09 11:02:26 -0700 |
---|---|---|
committer | Yorke Lee <yorkelee@google.com> | 2013-08-09 11:15:35 -0700 |
commit | ea695cb0f877ad49a98df184efe982de83ed09d7 (patch) | |
tree | 377b7f55611406ebac1caebaa40e5ba212c95e13 /src/com/android/dialer/dialpad/DialpadFragment.java | |
parent | 15ef3e1d3772d9e35182572fed9b0f1c7c958547 (diff) |
Handle dialpad animations better
This change prevents the dialpad from animating in when
the dialer is launched directly with a dial intent.
Change-Id: I6d7378de0484dcdadecbbc0e9c25d4c8ed1e3800
Diffstat (limited to 'src/com/android/dialer/dialpad/DialpadFragment.java')
-rw-r--r-- | src/com/android/dialer/dialpad/DialpadFragment.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java index 3052c67f0..e11337427 100644 --- a/src/com/android/dialer/dialpad/DialpadFragment.java +++ b/src/com/android/dialer/dialpad/DialpadFragment.java @@ -262,6 +262,7 @@ public class DialpadFragment extends Fragment private boolean mStartedFromNewIntent = false; private boolean mFirstLaunch = false; + private boolean mAdjustTranslationForAnimation = false; private static final String PREF_DIGITS_FILLED_BY_INTENT = "pref_digits_filled_by_intent"; @@ -350,15 +351,17 @@ public class DialpadFragment extends Fragment false); fragmentView.buildLayer(); - // TODO krelease: Get rid of this ugly hack which is to prevent the first frame of the - // animation from drawing the fragment at translationY = 0 final ViewTreeObserver vto = fragmentView.getViewTreeObserver(); + // Adjust the translation of the DialpadFragment in a preDrawListener instead of in + // DialtactsActivity, because at the point in time when the DialpadFragment is added, + // its views have not been laid out yet. final OnPreDrawListener preDrawListener = new OnPreDrawListener() { @Override public boolean onPreDraw() { + if (isHidden()) return true; - if (fragmentView.getTranslationY() == 0) { + if (mAdjustTranslationForAnimation && fragmentView.getTranslationY() == 0) { ((DialpadSlidingLinearLayout) fragmentView).setYFraction( DIALPAD_SLIDE_FRACTION); } @@ -1691,4 +1694,12 @@ public class DialpadFragment extends Fragment activity.hideSearchBar(); } } + + public void setAdjustTranslationForAnimation(boolean value) { + mAdjustTranslationForAnimation = value; + } + + public void setYFraction(float yFraction) { + ((DialpadSlidingLinearLayout) getView()).setYFraction(yFraction); + } } |