diff options
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java | 7 | ||||
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java | 7 | ||||
-rw-r--r-- | packages/SettingsLib/res/values/dimens.xml | 24 | ||||
-rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationCreator.java (renamed from packages/Keyguard/src/com/android/keyguard/AppearAnimationCreator.java) | 6 | ||||
-rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java (renamed from packages/Keyguard/src/com/android/keyguard/AppearAnimationUtils.java) | 34 | ||||
-rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/animation/DisappearAnimationUtils.java (renamed from packages/Keyguard/src/com/android/keyguard/DisappearAnimationUtils.java) | 22 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java | 2 |
7 files changed, 78 insertions, 24 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java index d0be855..ac9dc85 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPINView.java @@ -22,6 +22,9 @@ import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; +import com.android.settingslib.animation.AppearAnimationUtils; +import com.android.settingslib.animation.DisappearAnimationUtils; + /** * Displays a PIN pad for unlocking. */ @@ -115,7 +118,7 @@ public class KeyguardPINView extends KeyguardPinBasedInputView { .setDuration(500) .setInterpolator(mAppearAnimationUtils.getInterpolator()) .translationY(0); - mAppearAnimationUtils.startAnimation(mViews, + mAppearAnimationUtils.startAnimation2d(mViews, new Runnable() { @Override public void run() { @@ -132,7 +135,7 @@ public class KeyguardPINView extends KeyguardPinBasedInputView { .setDuration(280) .setInterpolator(mDisappearAnimationUtils.getInterpolator()) .translationY(mDisappearYTranslation); - mDisappearAnimationUtils.startAnimation(mViews, + mDisappearAnimationUtils.startAnimation2d(mViews, new Runnable() { @Override public void run() { diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java index a9b2978..1bd0bb4 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPatternView.java @@ -36,6 +36,9 @@ import android.widget.LinearLayout; import com.android.internal.widget.LockPatternChecker; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternView; +import com.android.settingslib.animation.AppearAnimationCreator; +import com.android.settingslib.animation.AppearAnimationUtils; +import com.android.settingslib.animation.DisappearAnimationUtils; import java.util.List; @@ -325,7 +328,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit .setDuration(500) .setInterpolator(mAppearAnimationUtils.getInterpolator()) .translationY(0); - mAppearAnimationUtils.startAnimation( + mAppearAnimationUtils.startAnimation2d( mLockPatternView.getCellStates(), new Runnable() { @Override @@ -353,7 +356,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit .setDuration(300) .setInterpolator(mDisappearAnimationUtils.getInterpolator()) .translationY(-mDisappearAnimationUtils.getStartTranslation()); - mDisappearAnimationUtils.startAnimation(mLockPatternView.getCellStates(), + mDisappearAnimationUtils.startAnimation2d(mLockPatternView.getCellStates(), new Runnable() { @Override public void run() { diff --git a/packages/SettingsLib/res/values/dimens.xml b/packages/SettingsLib/res/values/dimens.xml new file mode 100644 index 0000000..1c4b05f --- /dev/null +++ b/packages/SettingsLib/res/values/dimens.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2015 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> +<resources> + + <!-- The y translation to apply at the start in appear animations. --> + <dimen name="appear_y_translation_start">32dp</dimen> + + <!-- The translation for disappearing security views after having solved them. --> + <dimen name="disappear_y_translation">-32dp</dimen> +</resources>
\ No newline at end of file diff --git a/packages/Keyguard/src/com/android/keyguard/AppearAnimationCreator.java b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationCreator.java index e4706b6..8a61e4e 100644 --- a/packages/Keyguard/src/com/android/keyguard/AppearAnimationCreator.java +++ b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationCreator.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,13 @@ * limitations under the License */ -package com.android.keyguard; +package com.android.settingslib.animation; import android.view.animation.Interpolator; /** * An interface which can create animations when starting an appear animation with - * {@link com.android.keyguard.AppearAnimationUtils} + * {@link AppearAnimationUtils} */ public interface AppearAnimationCreator<T> { void createAnimation(T animatedObject, long delay, long duration, diff --git a/packages/Keyguard/src/com/android/keyguard/AppearAnimationUtils.java b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java index 9045fe3..441474d 100644 --- a/packages/Keyguard/src/com/android/keyguard/AppearAnimationUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,15 @@ * limitations under the License */ -package com.android.keyguard; +package com.android.settingslib.animation; import android.content.Context; import android.view.View; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; +import com.android.settingslib.R; + /** * A class to make nice appear transitions for views in a tabular layout. */ @@ -33,7 +35,7 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> { private final AppearAnimationProperties mProperties = new AppearAnimationProperties(); protected final float mDelayScale; private final long mDuration; - protected boolean mScaleTranslationWithRow; + protected RowTranslationScaler mRowTranslationScaler; protected boolean mAppearing; public AppearAnimationUtils(Context ctx) { @@ -49,19 +51,18 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> { R.dimen.appear_y_translation_start) * translationScaleFactor; mDelayScale = delayScaleFactor; mDuration = duration; - mScaleTranslationWithRow = false; mAppearing = true; } - public void startAnimation(View[][] objects, final Runnable finishListener) { - startAnimation(objects, finishListener, this); + public void startAnimation2d(View[][] objects, final Runnable finishListener) { + startAnimation2d(objects, finishListener, this); } public void startAnimation(View[] objects, final Runnable finishListener) { startAnimation(objects, finishListener, this); } - public <T> void startAnimation(T[][] objects, final Runnable finishListener, + public <T> void startAnimation2d(T[][] objects, final Runnable finishListener, AppearAnimationCreator<T> creator) { AppearAnimationProperties properties = getDelays(objects); startAnimations(properties, objects, finishListener, creator); @@ -86,8 +87,13 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> { if (properties.maxDelayRowIndex == row && properties.maxDelayColIndex == 0) { endRunnable = finishListener; } + float translationScale = mRowTranslationScaler != null + ? mRowTranslationScaler.getRowTranslationScale(row, properties.delays.length) + : 1f; + float translation = translationScale * mStartTranslation; creator.createAnimation(objects[row], delay, mDuration, - mStartTranslation, true /* appearing */, mInterpolator, endRunnable); + mAppearing ? translation : -translation, + mAppearing, mInterpolator, endRunnable); } } @@ -99,10 +105,10 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> { } for (int row = 0; row < properties.delays.length; row++) { long[] columns = properties.delays[row]; - float translation = mScaleTranslationWithRow - ? (float) (Math.pow((properties.delays.length - row), 2) - / properties.delays.length * mStartTranslation) - : mStartTranslation; + float translationScale = mRowTranslationScaler != null + ? mRowTranslationScaler.getRowTranslationScale(row, properties.delays.length) + : 1f; + float translation = translationScale * mStartTranslation; for (int col = 0; col < columns.length; col++) { long delay = columns[col]; Runnable endRunnable = null; @@ -193,4 +199,8 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> { public int maxDelayRowIndex; public int maxDelayColIndex; } + + public interface RowTranslationScaler { + float getRowTranslationScale(int row, int numRows); + } } diff --git a/packages/Keyguard/src/com/android/keyguard/DisappearAnimationUtils.java b/packages/SettingsLib/src/com/android/settingslib/animation/DisappearAnimationUtils.java index 517d96a..a444ff0 100644 --- a/packages/Keyguard/src/com/android/keyguard/DisappearAnimationUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/animation/DisappearAnimationUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.keyguard; +package com.android.settingslib.animation; import android.content.Context; import android.view.animation.AnimationUtils; @@ -28,17 +28,31 @@ public class DisappearAnimationUtils extends AppearAnimationUtils { public DisappearAnimationUtils(Context ctx) { this(ctx, DEFAULT_APPEAR_DURATION, 1.0f, 1.0f, - AnimationUtils.loadInterpolator(ctx, android.R.interpolator.linear_out_slow_in)); + AnimationUtils.loadInterpolator(ctx, android.R.interpolator.fast_out_linear_in)); } public DisappearAnimationUtils(Context ctx, long duration, float translationScaleFactor, float delayScaleFactor, Interpolator interpolator) { + this(ctx, duration, translationScaleFactor, delayScaleFactor, interpolator, + ROW_TRANSLATION_SCALER); + } + + public DisappearAnimationUtils(Context ctx, long duration, float translationScaleFactor, + float delayScaleFactor, Interpolator interpolator, RowTranslationScaler rowScaler) { super(ctx, duration, translationScaleFactor, delayScaleFactor, interpolator); - mScaleTranslationWithRow = true; + mRowTranslationScaler = rowScaler; mAppearing = false; } protected long calculateDelay(int row, int col) { return (long) ((row * 60 + col * (Math.pow(row, 0.4) + 0.4) * 10) * mDelayScale); } + + private static final RowTranslationScaler ROW_TRANSLATION_SCALER = new RowTranslationScaler() { + + @Override + public float getRowTranslationScale(int row, int numRows) { + return (float) (Math.pow((numRows - row), 2) / numRows); + } + }; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java index 1460e5f..5cf6156 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcher.java @@ -30,7 +30,7 @@ import android.view.ViewStub; import android.view.animation.AnimationUtils; import android.widget.FrameLayout; -import com.android.keyguard.AppearAnimationUtils; +import com.android.settingslib.animation.AppearAnimationUtils; import com.android.systemui.R; import com.android.systemui.qs.tiles.UserDetailItemView; import com.android.systemui.statusbar.phone.KeyguardStatusBarView; |