From 31c94cea82f1788e3a04f2a1e012945f35497f0a Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Fri, 16 Mar 2012 14:05:20 +0900 Subject: [PATCH] Use ObjectAnimator Bug: 6187069 Change-Id: I7df18b470b7e746da601fab3311fb4b086f40d41 --- java/proguard.flags | 8 ++ .../anim/alt_code_key_while_typing_fadein.xml | 3 +- .../alt_code_key_while_typing_fadeout.xml | 3 +- .../res/anim/language_on_spacebar_fadeout.xml | 5 +- java/res/values/attrs.xml | 1 + java/res/values/config.xml | 1 + java/res/values/styles.xml | 1 + .../keyboard/LatinKeyboardView.java | 117 ++++++++---------- 8 files changed, 70 insertions(+), 69 deletions(-) diff --git a/java/proguard.flags b/java/proguard.flags index a5a667987..701786a84 100644 --- a/java/proguard.flags +++ b/java/proguard.flags @@ -35,6 +35,14 @@ *; } +-keep class com.android.inputmethod.keyboard.LatinKeyboardView { + # Keep getter/setter methods for ObjectAnimator + int getLanguageOnSpacebarAnimAlpha(); + void setLanguageOnSpacebarAnimAlpha(int); + int getAltCodeKeyWhileTypingAnimAlhpa(); + void setAltCodeKeyWhileTypingAnimAlpha(int); +} + -keep class com.android.inputmethod.keyboard.MoreKeysKeyboard$Builder$MoreKeysKeyboardParams { (...); } diff --git a/java/res/anim/alt_code_key_while_typing_fadein.xml b/java/res/anim/alt_code_key_while_typing_fadein.xml index 3f5fd5d48..f8caca313 100644 --- a/java/res/anim/alt_code_key_while_typing_fadein.xml +++ b/java/res/anim/alt_code_key_while_typing_fadein.xml @@ -18,8 +18,9 @@ */ --> - - - + android:valueTo="@integer/config_language_on_spacebar_final_alpha" /> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index e619ad0a8..cf55fbe4a 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -133,6 +133,7 @@ + diff --git a/java/res/values/config.xml b/java/res/values/config.xml index c51800fb0..0a638d586 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -38,6 +38,7 @@ 100 300 100 + 128 0 100 32 diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml index 5628f271c..691f98ae2 100644 --- a/java/res/values/styles.xml +++ b/java/res/values/styles.xml @@ -78,6 +78,7 @@ @integer/config_long_press_space_key_timeout @integer/config_ignore_alt_code_key_timeout @bool/config_show_more_keys_keyboard_at_touched_point + @integer/config_language_on_spacebar_final_alpha @anim/language_on_spacebar_fadeout @anim/alt_code_key_while_typing_fadeout @anim/alt_code_key_while_typing_fadein diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java index b869059e4..17d15b061 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java @@ -16,11 +16,8 @@ package com.android.inputmethod.keyboard; -import android.animation.Animator; import android.animation.AnimatorInflater; -import android.animation.AnimatorListenerAdapter; -import android.animation.ValueAnimator; -import android.animation.ValueAnimator.AnimatorUpdateListener; +import android.animation.ObjectAnimator; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.TypedArray; @@ -79,12 +76,12 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke private Key mSpaceKey; private Drawable mSpaceIcon; // Stuff to draw language name on spacebar. - private ValueAnimator mLanguageOnSpacebarFadeoutAnimator; - private int mFinalAlphaOfLanguageOnSpacebar; + private final int mLanguageOnSpacebarFinalAlpha; + private ObjectAnimator mLanguageOnSpacebarFadeoutAnimator; private static final int ALPHA_OPAQUE = 255; private boolean mNeedsToDisplayLanguage; private Locale mSpacebarLocale; - private int mSpacebarTextAlpha = ALPHA_OPAQUE; + private int mLanguageOnSpacebarAnimAlpha = ALPHA_OPAQUE; private final float mSpacebarTextRatio; private float mSpacebarTextSize; private final int mSpacebarTextColor; @@ -99,8 +96,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke private static final int SPACE_LED_LENGTH_PERCENT = 80; // Stuff to draw altCodeWhileTyping keys. - private ValueAnimator mAltCodeKeyWhileTypingFadeoutAnimator; - private ValueAnimator mAltCodeKeyWhileTypingFadeinAnimator; + private ObjectAnimator mAltCodeKeyWhileTypingFadeoutAnimator; + private ObjectAnimator mAltCodeKeyWhileTypingFadeinAnimator; private int mAltCodeKeyWhileTypingAnimAlpha = ALPHA_OPAQUE; // More keys keyboard @@ -230,8 +227,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke removeMessages(MSG_LONGPRESS_KEY); } - private static void cancelAndStartAnimators(ValueAnimator animatorToCancel, - ValueAnimator animatorToStart) { + public static void cancelAndStartAnimators(ObjectAnimator animatorToCancel, + ObjectAnimator animatorToStart) { if (animatorToCancel != null && animatorToCancel.isStarted()) { animatorToCancel.cancel(); } @@ -365,6 +362,8 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboardView_spacebarTextColor, 0); mSpacebarTextShadowColor = a.getColor( R.styleable.LatinKeyboardView_spacebarTextShadowColor, 0); + mLanguageOnSpacebarFinalAlpha = a.getInt( + R.styleable.LatinKeyboardView_languageOnSpacebarFinalAlpha, ALPHA_OPAQUE); final int languageOnSpacebarFadeoutAnimatorResId = a.getResourceId( R.styleable.LatinKeyboardView_languageOnSpacebarFadeoutAnimator, 0); final int altCodeKeyWhileTypingFadeoutAnimatorResId = a.getResourceId( @@ -386,55 +385,41 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke PointerTracker.setParameters(mPointerTrackerParams); - final ValueAnimator animator = loadValueAnimator(languageOnSpacebarFadeoutAnimatorResId); - if (animator != null) { - animator.addUpdateListener(new AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mSpacebarTextAlpha = (Integer)animation.getAnimatedValue(); - invalidateKey(mSpaceKey); - } - }); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator a) { - final ValueAnimator valueAnimator = (ValueAnimator)a; - mFinalAlphaOfLanguageOnSpacebar = (Integer)valueAnimator.getAnimatedValue(); - } - }); - // In order to get the final value of animator. - animator.end(); - } - mLanguageOnSpacebarFadeoutAnimator = animator; - - final ValueAnimator fadeout = loadValueAnimator(altCodeKeyWhileTypingFadeoutAnimatorResId); - if (fadeout != null) { - fadeout.addUpdateListener(new AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mAltCodeKeyWhileTypingAnimAlpha = (Integer)animation.getAnimatedValue(); - updateAltCodeKeyWhileTyping(); - } - }); - } - mAltCodeKeyWhileTypingFadeoutAnimator = fadeout; - - final ValueAnimator fadein = loadValueAnimator(altCodeKeyWhileTypingFadeinAnimatorResId); - if (fadein != null) { - fadein.addUpdateListener(new AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mAltCodeKeyWhileTypingAnimAlpha = (Integer)animation.getAnimatedValue(); - updateAltCodeKeyWhileTyping(); - } - }); - } - mAltCodeKeyWhileTypingFadeinAnimator = fadein; + mLanguageOnSpacebarFadeoutAnimator = loadObjectAnimator( + languageOnSpacebarFadeoutAnimatorResId, this); + mAltCodeKeyWhileTypingFadeoutAnimator = loadObjectAnimator( + altCodeKeyWhileTypingFadeoutAnimatorResId, this); + mAltCodeKeyWhileTypingFadeinAnimator = loadObjectAnimator( + altCodeKeyWhileTypingFadeinAnimatorResId, this); } - private ValueAnimator loadValueAnimator(int resId) { + private ObjectAnimator loadObjectAnimator(int resId, Object target) { if (resId == 0) return null; - return (ValueAnimator)AnimatorInflater.loadAnimator(getContext(), resId); + final ObjectAnimator animator = (ObjectAnimator)AnimatorInflater.loadAnimator( + getContext(), resId); + if (animator != null) { + animator.setTarget(target); + } + return animator; + } + + // Getter/setter methods for {@link ObjectAnimator}. + public int getLanguageOnSpacebarAnimAlpha() { + return mLanguageOnSpacebarAnimAlpha; + } + + public void setLanguageOnSpacebarAnimAlpha(int alpha) { + mLanguageOnSpacebarAnimAlpha = alpha; + invalidateKey(mSpaceKey); + } + + public int getAltCodeKeyWhileTypingAnimAlpha() { + return mAltCodeKeyWhileTypingAnimAlpha; + } + + public void setAltCodeKeyWhileTypingAnimAlpha(int alpha) { + mAltCodeKeyWhileTypingAnimAlpha = alpha; + updateAltCodeKeyWhileTyping(); } public void setKeyboardActionListener(KeyboardActionListener listener) { @@ -859,19 +844,21 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke public void startDisplayLanguageOnSpacebar(boolean subtypeChanged, boolean needsToDisplayLanguage) { - final ValueAnimator animator = mLanguageOnSpacebarFadeoutAnimator; - if (animator != null) { - animator.cancel(); - } + final ObjectAnimator animator = mLanguageOnSpacebarFadeoutAnimator; mNeedsToDisplayLanguage = needsToDisplayLanguage; if (animator == null) { mNeedsToDisplayLanguage = false; } else { if (subtypeChanged && needsToDisplayLanguage) { - mSpacebarTextAlpha = ALPHA_OPAQUE; + setLanguageOnSpacebarAnimAlpha(ALPHA_OPAQUE); + if (animator.isStarted()) { + animator.cancel(); + } animator.start(); } else { - mSpacebarTextAlpha = mFinalAlphaOfLanguageOnSpacebar; + if (!animator.isStarted()) { + mLanguageOnSpacebarAnimAlpha = mLanguageOnSpacebarFinalAlpha; + } } } invalidateKey(mSpaceKey); @@ -965,10 +952,10 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke final float textHeight = -paint.ascent() + descent; final float baseline = height / 2 + textHeight / 2; paint.setColor(mSpacebarTextShadowColor); - paint.setAlpha(mSpacebarTextAlpha); + paint.setAlpha(mLanguageOnSpacebarAnimAlpha); canvas.drawText(language, width / 2, baseline - descent - 1, paint); paint.setColor(mSpacebarTextColor); - paint.setAlpha(mSpacebarTextAlpha); + paint.setAlpha(mLanguageOnSpacebarAnimAlpha); canvas.drawText(language, width / 2, baseline - descent, paint); }