am 7bcacc9c: Merge "Animations/success state for external confirm device credentials (1/2)" into mnc-dev
* commit '7bcacc9c6af19e429bc3681b1559844e5b8fa1ba': Animations/success state for external confirm device credentials (1/2)
This commit is contained in:
@@ -22,6 +22,9 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
|
|
||||||
|
import com.android.settingslib.animation.AppearAnimationUtils;
|
||||||
|
import com.android.settingslib.animation.DisappearAnimationUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays a PIN pad for unlocking.
|
* Displays a PIN pad for unlocking.
|
||||||
*/
|
*/
|
||||||
@@ -115,7 +118,7 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
|
|||||||
.setDuration(500)
|
.setDuration(500)
|
||||||
.setInterpolator(mAppearAnimationUtils.getInterpolator())
|
.setInterpolator(mAppearAnimationUtils.getInterpolator())
|
||||||
.translationY(0);
|
.translationY(0);
|
||||||
mAppearAnimationUtils.startAnimation(mViews,
|
mAppearAnimationUtils.startAnimation2d(mViews,
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -132,7 +135,7 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
|
|||||||
.setDuration(280)
|
.setDuration(280)
|
||||||
.setInterpolator(mDisappearAnimationUtils.getInterpolator())
|
.setInterpolator(mDisappearAnimationUtils.getInterpolator())
|
||||||
.translationY(mDisappearYTranslation);
|
.translationY(mDisappearYTranslation);
|
||||||
mDisappearAnimationUtils.startAnimation(mViews,
|
mDisappearAnimationUtils.startAnimation2d(mViews,
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ import android.widget.LinearLayout;
|
|||||||
import com.android.internal.widget.LockPatternChecker;
|
import com.android.internal.widget.LockPatternChecker;
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.internal.widget.LockPatternView;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -325,7 +328,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
|||||||
.setDuration(500)
|
.setDuration(500)
|
||||||
.setInterpolator(mAppearAnimationUtils.getInterpolator())
|
.setInterpolator(mAppearAnimationUtils.getInterpolator())
|
||||||
.translationY(0);
|
.translationY(0);
|
||||||
mAppearAnimationUtils.startAnimation(
|
mAppearAnimationUtils.startAnimation2d(
|
||||||
mLockPatternView.getCellStates(),
|
mLockPatternView.getCellStates(),
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
@@ -353,7 +356,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
|||||||
.setDuration(300)
|
.setDuration(300)
|
||||||
.setInterpolator(mDisappearAnimationUtils.getInterpolator())
|
.setInterpolator(mDisappearAnimationUtils.getInterpolator())
|
||||||
.translationY(-mDisappearAnimationUtils.getStartTranslation());
|
.translationY(-mDisappearAnimationUtils.getStartTranslation());
|
||||||
mDisappearAnimationUtils.startAnimation(mLockPatternView.getCellStates(),
|
mDisappearAnimationUtils.startAnimation2d(mLockPatternView.getCellStates(),
|
||||||
new Runnable() {
|
new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|||||||
24
packages/SettingsLib/res/values/dimens.xml
Normal file
24
packages/SettingsLib/res/values/dimens.xml
Normal file
@@ -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>
|
||||||
@@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,13 +14,13 @@
|
|||||||
* limitations under the License
|
* limitations under the License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.keyguard;
|
package com.android.settingslib.animation;
|
||||||
|
|
||||||
import android.view.animation.Interpolator;
|
import android.view.animation.Interpolator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An interface which can create animations when starting an appear animation with
|
* An interface which can create animations when starting an appear animation with
|
||||||
* {@link com.android.keyguard.AppearAnimationUtils}
|
* {@link AppearAnimationUtils}
|
||||||
*/
|
*/
|
||||||
public interface AppearAnimationCreator<T> {
|
public interface AppearAnimationCreator<T> {
|
||||||
void createAnimation(T animatedObject, long delay, long duration,
|
void createAnimation(T animatedObject, long delay, long duration,
|
||||||
@@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,13 +14,15 @@
|
|||||||
* limitations under the License
|
* limitations under the License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.keyguard;
|
package com.android.settingslib.animation;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.view.animation.Interpolator;
|
import android.view.animation.Interpolator;
|
||||||
|
|
||||||
|
import com.android.settingslib.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class to make nice appear transitions for views in a tabular layout.
|
* 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();
|
private final AppearAnimationProperties mProperties = new AppearAnimationProperties();
|
||||||
protected final float mDelayScale;
|
protected final float mDelayScale;
|
||||||
private final long mDuration;
|
private final long mDuration;
|
||||||
protected boolean mScaleTranslationWithRow;
|
protected RowTranslationScaler mRowTranslationScaler;
|
||||||
protected boolean mAppearing;
|
protected boolean mAppearing;
|
||||||
|
|
||||||
public AppearAnimationUtils(Context ctx) {
|
public AppearAnimationUtils(Context ctx) {
|
||||||
@@ -49,19 +51,18 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
|||||||
R.dimen.appear_y_translation_start) * translationScaleFactor;
|
R.dimen.appear_y_translation_start) * translationScaleFactor;
|
||||||
mDelayScale = delayScaleFactor;
|
mDelayScale = delayScaleFactor;
|
||||||
mDuration = duration;
|
mDuration = duration;
|
||||||
mScaleTranslationWithRow = false;
|
|
||||||
mAppearing = true;
|
mAppearing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startAnimation(View[][] objects, final Runnable finishListener) {
|
public void startAnimation2d(View[][] objects, final Runnable finishListener) {
|
||||||
startAnimation(objects, finishListener, this);
|
startAnimation2d(objects, finishListener, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startAnimation(View[] objects, final Runnable finishListener) {
|
public void startAnimation(View[] objects, final Runnable finishListener) {
|
||||||
startAnimation(objects, finishListener, this);
|
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) {
|
AppearAnimationCreator<T> creator) {
|
||||||
AppearAnimationProperties properties = getDelays(objects);
|
AppearAnimationProperties properties = getDelays(objects);
|
||||||
startAnimations(properties, objects, finishListener, creator);
|
startAnimations(properties, objects, finishListener, creator);
|
||||||
@@ -86,8 +87,13 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
|||||||
if (properties.maxDelayRowIndex == row && properties.maxDelayColIndex == 0) {
|
if (properties.maxDelayRowIndex == row && properties.maxDelayColIndex == 0) {
|
||||||
endRunnable = finishListener;
|
endRunnable = finishListener;
|
||||||
}
|
}
|
||||||
|
float translationScale = mRowTranslationScaler != null
|
||||||
|
? mRowTranslationScaler.getRowTranslationScale(row, properties.delays.length)
|
||||||
|
: 1f;
|
||||||
|
float translation = translationScale * mStartTranslation;
|
||||||
creator.createAnimation(objects[row], delay, mDuration,
|
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++) {
|
for (int row = 0; row < properties.delays.length; row++) {
|
||||||
long[] columns = properties.delays[row];
|
long[] columns = properties.delays[row];
|
||||||
float translation = mScaleTranslationWithRow
|
float translationScale = mRowTranslationScaler != null
|
||||||
? (float) (Math.pow((properties.delays.length - row), 2)
|
? mRowTranslationScaler.getRowTranslationScale(row, properties.delays.length)
|
||||||
/ properties.delays.length * mStartTranslation)
|
: 1f;
|
||||||
: mStartTranslation;
|
float translation = translationScale * mStartTranslation;
|
||||||
for (int col = 0; col < columns.length; col++) {
|
for (int col = 0; col < columns.length; col++) {
|
||||||
long delay = columns[col];
|
long delay = columns[col];
|
||||||
Runnable endRunnable = null;
|
Runnable endRunnable = null;
|
||||||
@@ -193,4 +199,8 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
|||||||
public int maxDelayRowIndex;
|
public int maxDelayRowIndex;
|
||||||
public int maxDelayColIndex;
|
public int maxDelayColIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface RowTranslationScaler {
|
||||||
|
float getRowTranslationScale(int row, int numRows);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
* limitations under the License
|
* limitations under the License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.keyguard;
|
package com.android.settingslib.animation;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
@@ -28,17 +28,31 @@ public class DisappearAnimationUtils extends AppearAnimationUtils {
|
|||||||
public DisappearAnimationUtils(Context ctx) {
|
public DisappearAnimationUtils(Context ctx) {
|
||||||
this(ctx, DEFAULT_APPEAR_DURATION,
|
this(ctx, DEFAULT_APPEAR_DURATION,
|
||||||
1.0f, 1.0f,
|
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,
|
public DisappearAnimationUtils(Context ctx, long duration, float translationScaleFactor,
|
||||||
float delayScaleFactor, Interpolator interpolator) {
|
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);
|
super(ctx, duration, translationScaleFactor, delayScaleFactor, interpolator);
|
||||||
mScaleTranslationWithRow = true;
|
mRowTranslationScaler = rowScaler;
|
||||||
mAppearing = false;
|
mAppearing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected long calculateDelay(int row, int col) {
|
protected long calculateDelay(int row, int col) {
|
||||||
return (long) ((row * 60 + col * (Math.pow(row, 0.4) + 0.4) * 10) * mDelayScale);
|
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);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ import android.view.ViewStub;
|
|||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
|
||||||
import com.android.keyguard.AppearAnimationUtils;
|
import com.android.settingslib.animation.AppearAnimationUtils;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.qs.tiles.UserDetailItemView;
|
import com.android.systemui.qs.tiles.UserDetailItemView;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardStatusBarView;
|
import com.android.systemui.statusbar.phone.KeyguardStatusBarView;
|
||||||
|
|||||||
Reference in New Issue
Block a user