From 513c63e877320bca4860dadc88e3a14ffb861e36 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Wed, 24 Apr 2013 15:27:56 +0900 Subject: [PB8] Add an animation upon status change. Bug: 7600384 Change-Id: If5efb9357075193d10255187008e870e2933bdb8 --- .../inputmethod/dictionarypack/ButtonSwitcher.java | 28 +++++++++++++++++----- 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java') diff --git a/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java b/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java index 196c2113d..391a15c97 100644 --- a/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java +++ b/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java @@ -16,9 +16,12 @@ package com.android.inputmethod.dictionarypack; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; import android.content.Context; import android.util.AttributeSet; import android.view.View; +import android.view.ViewPropertyAnimator; import android.widget.Button; import android.widget.FrameLayout; @@ -115,22 +118,35 @@ public class ButtonSwitcher extends FrameLayout { } private void animateButtonPosition(final int oldStatus, final int newStatus) { - animateButton(getButton(oldStatus), ANIMATION_OUT); - animateButton(getButton(newStatus), ANIMATION_IN); + final View oldButton = getButton(oldStatus); + final View newButton = getButton(newStatus); + if (null != oldButton && null != newButton) { + // Transition between two buttons : animate out, then in + animateButton(oldButton, ANIMATION_OUT).setListener( + new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(final Animator animation) { + animateButton(newButton, ANIMATION_IN); + } + }); + } else if (null != oldButton) { + animateButton(oldButton, ANIMATION_OUT); + } else if (null != newButton) { + animateButton(newButton, ANIMATION_IN); + } } public void setInternalOnClickListener(final OnClickListener listener) { mOnClickListener = listener; } - private void animateButton(final View button, final int direction) { - if (null == button) return; + private ViewPropertyAnimator animateButton(final View button, final int direction) { final float outerX = getWidth(); final float innerX = button.getX() - button.getTranslationX(); if (ANIMATION_IN == direction) { - button.animate().translationX(0); + return button.animate().translationX(0); } else { - button.animate().translationX(outerX - innerX); + return button.animate().translationX(outerX - innerX); } } } -- cgit v1.2.3-83-g751a