aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2013-04-24 15:27:56 +0900
committerJean Chalard <jchalard@google.com>2013-04-25 18:37:03 +0900
commit513c63e877320bca4860dadc88e3a14ffb861e36 (patch)
treef18627794ec05511b89875797e550dc347d385b2 /java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java
parent2d72590ced449e1ba0065bf63c311dae805c8290 (diff)
downloadlatinime-513c63e877320bca4860dadc88e3a14ffb861e36.tar.gz
latinime-513c63e877320bca4860dadc88e3a14ffb861e36.tar.xz
latinime-513c63e877320bca4860dadc88e3a14ffb861e36.zip
[PB8] Add an animation upon status change.
Bug: 7600384 Change-Id: If5efb9357075193d10255187008e870e2933bdb8
Diffstat (limited to 'java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java')
-rw-r--r--java/src/com/android/inputmethod/dictionarypack/ButtonSwitcher.java28
1 files changed, 22 insertions, 6 deletions
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);
}
}
}