summaryrefslogtreecommitdiffstats
path: root/packages/SettingsLib
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2015-07-27 19:48:37 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-27 19:48:37 +0000
commit04f61ee85da93f2d15034f290faec7512c176d59 (patch)
treedc9d80b061fd6def8841fa741d1407c2c99fc0c7 /packages/SettingsLib
parentefbfd2ad8bf5f251b938c0f9d91d38a66c333939 (diff)
parentf040100cbde4b551dd551a8b0b9eb7194116a95b (diff)
downloadframeworks_base-04f61ee85da93f2d15034f290faec7512c176d59.zip
frameworks_base-04f61ee85da93f2d15034f290faec7512c176d59.tar.gz
frameworks_base-04f61ee85da93f2d15034f290faec7512c176d59.tar.bz2
am f040100c: am 6a601960: am 9e49b5d6: Merge "Move PIN/Pattern appear animation to RenderThread (1/2)" into mnc-dev
* commit 'f040100cbde4b551dd551a8b0b9eb7194116a95b': Move PIN/Pattern appear animation to RenderThread (1/2)
Diffstat (limited to 'packages/SettingsLib')
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java66
1 files changed, 56 insertions, 10 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java
index 441474d..df76125 100644
--- a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java
@@ -16,11 +16,18 @@
package com.android.settingslib.animation;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
import android.content.Context;
+import android.view.RenderNodeAnimator;
import android.view.View;
+import android.view.ViewPropertyAnimator;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
+import com.android.internal.widget.LockPatternView;
import com.android.settingslib.R;
/**
@@ -174,24 +181,63 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
}
@Override
- public void createAnimation(View view, long delay, long duration, float translationY,
- boolean appearing, Interpolator interpolator, Runnable endRunnable) {
+ public void createAnimation(final View view, long delay, long duration, float translationY,
+ boolean appearing, Interpolator interpolator, final Runnable endRunnable) {
if (view != null) {
view.setAlpha(appearing ? 0f : 1.0f);
view.setTranslationY(appearing ? translationY : 0);
- view.animate()
- .alpha(appearing ? 1f : 0f)
- .translationY(appearing ? 0 : translationY)
- .setInterpolator(interpolator)
- .setDuration(duration)
- .setStartDelay(delay);
+ Animator alphaAnim;
+ float targetAlpha = appearing ? 1f : 0f;
+ if (view.isHardwareAccelerated()) {
+ RenderNodeAnimator alphaAnimRt = new RenderNodeAnimator(RenderNodeAnimator.ALPHA,
+ targetAlpha);
+ alphaAnimRt.setTarget(view);
+ alphaAnim = alphaAnimRt;
+ } else {
+ alphaAnim = ObjectAnimator.ofFloat(view, View.ALPHA, view.getAlpha(), targetAlpha);
+ }
+ alphaAnim.setInterpolator(interpolator);
+ alphaAnim.setDuration(duration);
+ alphaAnim.setStartDelay(delay);
if (view.hasOverlappingRendering()) {
- view.animate().withLayer();
+ view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ alphaAnim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ view.setLayerType(View.LAYER_TYPE_NONE, null);
+ }
+ });
}
if (endRunnable != null) {
- view.animate().withEndAction(endRunnable);
+ alphaAnim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ endRunnable.run();
+ }
+ });
}
+ alphaAnim.start();
+ startTranslationYAnimation(view, delay, duration, appearing ? 0 : translationY,
+ interpolator);
+ }
+ }
+
+ public static void startTranslationYAnimation(View view, long delay, long duration,
+ float endTranslationY, Interpolator interpolator) {
+ Animator translationAnim;
+ if (view.isHardwareAccelerated()) {
+ RenderNodeAnimator translationAnimRt = new RenderNodeAnimator(
+ RenderNodeAnimator.TRANSLATION_Y, endTranslationY);
+ translationAnimRt.setTarget(view);
+ translationAnim = translationAnimRt;
+ } else {
+ translationAnim = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y,
+ view.getTranslationY(), endTranslationY);
}
+ translationAnim.setInterpolator(interpolator);
+ translationAnim.setDuration(duration);
+ translationAnim.setStartDelay(delay);
+ translationAnim.start();
}
public class AppearAnimationProperties {