Merge "Added dissapear animation to pattern and pin input" into lmp-mr1-dev
This commit is contained in:
@@ -25,14 +25,17 @@
|
||||
android:id="@+id/keyguard_host_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
android:orientation="horizontal"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<com.android.keyguard.MultiPaneChallengeLayout
|
||||
android:id="@+id/multi_pane_challenge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:clipChildren="false">
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<include layout="@layout/keyguard_widget_remove_drop_target"
|
||||
android:id="@+id/keyguard_widget_pager_delete_target"
|
||||
|
||||
@@ -26,13 +26,16 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.keyguard.SlidingChallengeLayout
|
||||
android:id="@+id/sliding_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipChildren="false">
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -25,13 +25,16 @@
|
||||
android:id="@+id/keyguard_host_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
android:orientation="horizontal"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<com.android.keyguard.MultiPaneChallengeLayout
|
||||
android:id="@+id/multi_pane_challenge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/keyguard_widget_remove_drop_target"
|
||||
|
||||
@@ -18,12 +18,14 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@android:color/transparent"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<include
|
||||
style="@style/BouncerSecurityContainer"
|
||||
layout="@layout/keyguard_simple_host_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
android:layout_height="wrap_content" />
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
androidprv:layout_maxWidth="@dimen/keyguard_security_width"
|
||||
androidprv:layout_maxHeight="@dimen/keyguard_security_height"
|
||||
android:gravity="center_horizontal"
|
||||
@@ -34,13 +36,17 @@
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_gravity="center_horizontal|bottom">
|
||||
android:layout_gravity="center_horizontal|bottom"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<include layout="@layout/keyguard_message_area"
|
||||
android:layout_width="match_parent"
|
||||
@@ -52,6 +58,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
>
|
||||
<com.android.internal.widget.LockPatternView
|
||||
android:id="@+id/lockPatternView"
|
||||
@@ -63,7 +71,9 @@
|
||||
android:layout_marginStart="8dip"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:gravity="center"
|
||||
android:contentDescription="@string/keyguard_accessibility_pattern_area" />
|
||||
android:contentDescription="@string/keyguard_accessibility_pattern_area"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false" />
|
||||
</FrameLayout>
|
||||
<include layout="@layout/keyguard_eca"
|
||||
android:id="@+id/keyguard_selector_fade_container"
|
||||
|
||||
@@ -24,7 +24,9 @@
|
||||
xmlns:androidprv="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/keyguard_host_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<com.android.keyguard.KeyguardSecurityContainer
|
||||
android:id="@+id/keyguard_security_container"
|
||||
|
||||
@@ -25,5 +25,6 @@ import android.view.animation.Interpolator;
|
||||
*/
|
||||
public interface AppearAnimationCreator<T> {
|
||||
void createAnimation(T animatedObject, long delay, long duration,
|
||||
float startTranslationY, Interpolator interpolator, Runnable finishListener);
|
||||
float translationY, boolean appearing, Interpolator interpolator,
|
||||
Runnable finishListener);
|
||||
}
|
||||
|
||||
@@ -31,8 +31,10 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
||||
private final Interpolator mInterpolator;
|
||||
private final float mStartTranslation;
|
||||
private final AppearAnimationProperties mProperties = new AppearAnimationProperties();
|
||||
private final float mDelayScale;
|
||||
protected final float mDelayScale;
|
||||
private final long mDuration;
|
||||
protected boolean mScaleTranslationWithRow;
|
||||
protected boolean mAppearing;
|
||||
|
||||
public AppearAnimationUtils(Context ctx) {
|
||||
this(ctx, DEFAULT_APPEAR_DURATION,
|
||||
@@ -47,23 +49,25 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
||||
R.dimen.appear_y_translation_start) * translationScaleFactor;
|
||||
mDelayScale = delayScaleFactor;
|
||||
mDuration = duration;
|
||||
mScaleTranslationWithRow = false;
|
||||
mAppearing = true;
|
||||
}
|
||||
|
||||
public void startAppearAnimation(View[][] objects, final Runnable finishListener) {
|
||||
startAppearAnimation(objects, finishListener, this);
|
||||
public void startAnimation(View[][] objects, final Runnable finishListener) {
|
||||
startAnimation(objects, finishListener, this);
|
||||
}
|
||||
|
||||
public void startAppearAnimation(View[] objects, final Runnable finishListener) {
|
||||
startAppearAnimation(objects, finishListener, this);
|
||||
public void startAnimation(View[] objects, final Runnable finishListener) {
|
||||
startAnimation(objects, finishListener, this);
|
||||
}
|
||||
|
||||
public <T> void startAppearAnimation(T[][] objects, final Runnable finishListener,
|
||||
public <T> void startAnimation(T[][] objects, final Runnable finishListener,
|
||||
AppearAnimationCreator<T> creator) {
|
||||
AppearAnimationProperties properties = getDelays(objects);
|
||||
startAnimations(properties, objects, finishListener, creator);
|
||||
}
|
||||
|
||||
public <T> void startAppearAnimation(T[] objects, final Runnable finishListener,
|
||||
public <T> void startAnimation(T[] objects, final Runnable finishListener,
|
||||
AppearAnimationCreator<T> creator) {
|
||||
AppearAnimationProperties properties = getDelays(objects);
|
||||
startAnimations(properties, objects, finishListener, creator);
|
||||
@@ -83,7 +87,7 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
||||
endRunnable = finishListener;
|
||||
}
|
||||
creator.createAnimation(objects[row], delay, mDuration,
|
||||
mStartTranslation, mInterpolator, endRunnable);
|
||||
mStartTranslation, true /* appearing */, mInterpolator, endRunnable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,6 +99,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;
|
||||
for (int col = 0; col < columns.length; col++) {
|
||||
long delay = columns[col];
|
||||
Runnable endRunnable = null;
|
||||
@@ -102,7 +110,8 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
||||
endRunnable = finishListener;
|
||||
}
|
||||
creator.createAnimation(objects[row][col], delay, mDuration,
|
||||
mStartTranslation, mInterpolator, endRunnable);
|
||||
mAppearing ? translation : -translation,
|
||||
mAppearing, mInterpolator, endRunnable);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,7 +155,7 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
||||
return mProperties;
|
||||
}
|
||||
|
||||
private long calculateDelay(int row, int col) {
|
||||
protected long calculateDelay(int row, int col) {
|
||||
return (long) ((row * 40 + col * (Math.pow(row, 0.4) + 0.4) * 20) * mDelayScale);
|
||||
}
|
||||
|
||||
@@ -159,14 +168,14 @@ public class AppearAnimationUtils implements AppearAnimationCreator<View> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createAnimation(View view, long delay, long duration, float startTranslationY,
|
||||
Interpolator interpolator, Runnable endRunnable) {
|
||||
public void createAnimation(View view, long delay, long duration, float translationY,
|
||||
boolean appearing, Interpolator interpolator, Runnable endRunnable) {
|
||||
if (view != null) {
|
||||
view.setAlpha(0f);
|
||||
view.setTranslationY(startTranslationY);
|
||||
view.setAlpha(appearing ? 0f : 1.0f);
|
||||
view.setTranslationY(appearing ? translationY : 0);
|
||||
view.animate()
|
||||
.alpha(1f)
|
||||
.translationY(0)
|
||||
.alpha(appearing ? 1f : 0f)
|
||||
.translationY(appearing ? 0 : translationY)
|
||||
.setInterpolator(interpolator)
|
||||
.setDuration(duration)
|
||||
.setStartDelay(delay);
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2014 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
|
||||
*/
|
||||
|
||||
package com.android.keyguard;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.Interpolator;
|
||||
|
||||
/**
|
||||
* A class to make nice disappear transitions for views in a tabular layout.
|
||||
*/
|
||||
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));
|
||||
}
|
||||
|
||||
public DisappearAnimationUtils(Context ctx, long duration, float translationScaleFactor,
|
||||
float delayScaleFactor, Interpolator interpolator) {
|
||||
super(ctx, duration, translationScaleFactor, delayScaleFactor, interpolator);
|
||||
mScaleTranslationWithRow = true;
|
||||
mAppearing = false;
|
||||
}
|
||||
|
||||
protected long calculateDelay(int row, int col) {
|
||||
return (long) ((row * 60 + col * (Math.pow(row, 0.4) + 0.4) * 10) * mDelayScale);
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@ import android.view.animation.AnimationUtils;
|
||||
public class KeyguardPINView extends KeyguardPinBasedInputView {
|
||||
|
||||
private final AppearAnimationUtils mAppearAnimationUtils;
|
||||
private final DisappearAnimationUtils mDisappearAnimationUtils;
|
||||
private ViewGroup mKeyguardBouncerFrame;
|
||||
private ViewGroup mRow0;
|
||||
private ViewGroup mRow1;
|
||||
@@ -35,6 +36,7 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
|
||||
private ViewGroup mRow3;
|
||||
private View mDivider;
|
||||
private int mDisappearYTranslation;
|
||||
private View[][] mViews;
|
||||
|
||||
public KeyguardPINView(Context context) {
|
||||
this(context, null);
|
||||
@@ -43,6 +45,10 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
|
||||
public KeyguardPINView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
mAppearAnimationUtils = new AppearAnimationUtils(context);
|
||||
mDisappearAnimationUtils = new DisappearAnimationUtils(context,
|
||||
125, 0.6f /* translationScale */,
|
||||
0.6f /* delayScale */, AnimationUtils.loadInterpolator(
|
||||
mContext, android.R.interpolator.fast_out_linear_in));
|
||||
mDisappearYTranslation = getResources().getDimensionPixelSize(
|
||||
R.dimen.disappear_y_translation);
|
||||
}
|
||||
@@ -71,6 +77,28 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
|
||||
mRow2 = (ViewGroup) findViewById(R.id.row2);
|
||||
mRow3 = (ViewGroup) findViewById(R.id.row3);
|
||||
mDivider = findViewById(R.id.divider);
|
||||
mViews = new View[][]{
|
||||
new View[]{
|
||||
mRow0, null, null
|
||||
},
|
||||
new View[]{
|
||||
findViewById(R.id.key1), findViewById(R.id.key2),
|
||||
findViewById(R.id.key3)
|
||||
},
|
||||
new View[]{
|
||||
findViewById(R.id.key4), findViewById(R.id.key5),
|
||||
findViewById(R.id.key6)
|
||||
},
|
||||
new View[]{
|
||||
findViewById(R.id.key7), findViewById(R.id.key8),
|
||||
findViewById(R.id.key9)
|
||||
},
|
||||
new View[]{
|
||||
null, findViewById(R.id.key0), findViewById(R.id.key_enter)
|
||||
},
|
||||
new View[]{
|
||||
null, mEcaView, null
|
||||
}};
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -91,25 +119,7 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
|
||||
.setDuration(500)
|
||||
.setInterpolator(mAppearAnimationUtils.getInterpolator())
|
||||
.translationY(0);
|
||||
mAppearAnimationUtils.startAppearAnimation(new View[][] {
|
||||
new View[] {
|
||||
mRow0, null, null
|
||||
},
|
||||
new View[] {
|
||||
findViewById(R.id.key1), findViewById(R.id.key2), findViewById(R.id.key3)
|
||||
},
|
||||
new View[] {
|
||||
findViewById(R.id.key4), findViewById(R.id.key5), findViewById(R.id.key6)
|
||||
},
|
||||
new View[] {
|
||||
findViewById(R.id.key7), findViewById(R.id.key8), findViewById(R.id.key9)
|
||||
},
|
||||
new View[] {
|
||||
null, findViewById(R.id.key0), findViewById(R.id.key_enter)
|
||||
},
|
||||
new View[] {
|
||||
null, mEcaView, null
|
||||
}},
|
||||
mAppearAnimationUtils.startAnimation(mViews,
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -119,14 +129,23 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean startDisappearAnimation(Runnable finishRunnable) {
|
||||
public boolean startDisappearAnimation(final Runnable finishRunnable) {
|
||||
enableClipping(false);
|
||||
setTranslationY(0);
|
||||
animate()
|
||||
.alpha(0f)
|
||||
.translationY(mDisappearYTranslation)
|
||||
.setInterpolator(AnimationUtils
|
||||
.loadInterpolator(mContext, android.R.interpolator.fast_out_linear_in))
|
||||
.setDuration(100)
|
||||
.withEndAction(finishRunnable);
|
||||
.setDuration(280)
|
||||
.setInterpolator(mDisappearAnimationUtils.getInterpolator())
|
||||
.translationY(mDisappearYTranslation);
|
||||
mDisappearAnimationUtils.startAnimation(mViews,
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
enableClipping(true);
|
||||
if (finishRunnable != null) {
|
||||
finishRunnable.run();
|
||||
}
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
||||
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private final AppearAnimationUtils mAppearAnimationUtils;
|
||||
private final DisappearAnimationUtils mDisappearAnimationUtils;
|
||||
|
||||
private CountDownTimer mCountdownTimer = null;
|
||||
private LockPatternUtils mLockPatternUtils;
|
||||
@@ -99,9 +100,13 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
||||
super(context, attrs);
|
||||
mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
|
||||
mAppearAnimationUtils = new AppearAnimationUtils(context,
|
||||
AppearAnimationUtils.DEFAULT_APPEAR_DURATION, 1.5f /* delayScale */,
|
||||
2.0f /* transitionScale */, AnimationUtils.loadInterpolator(
|
||||
AppearAnimationUtils.DEFAULT_APPEAR_DURATION, 1.5f /* translationScale */,
|
||||
2.0f /* delayScale */, AnimationUtils.loadInterpolator(
|
||||
mContext, android.R.interpolator.linear_out_slow_in));
|
||||
mDisappearAnimationUtils = new DisappearAnimationUtils(context,
|
||||
125, 1.2f /* translationScale */,
|
||||
0.8f /* delayScale */, AnimationUtils.loadInterpolator(
|
||||
mContext, android.R.interpolator.fast_out_linear_in));
|
||||
mDisappearYTranslation = getResources().getDimensionPixelSize(
|
||||
R.dimen.disappear_y_translation);
|
||||
}
|
||||
@@ -303,7 +308,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
||||
.setDuration(500)
|
||||
.setInterpolator(mAppearAnimationUtils.getInterpolator())
|
||||
.translationY(0);
|
||||
mAppearAnimationUtils.startAppearAnimation(
|
||||
mAppearAnimationUtils.startAnimation(
|
||||
mLockPatternView.getCellStates(),
|
||||
new Runnable() {
|
||||
@Override
|
||||
@@ -316,21 +321,39 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
||||
mAppearAnimationUtils.createAnimation(mHelpMessage, 0,
|
||||
AppearAnimationUtils.DEFAULT_APPEAR_DURATION,
|
||||
mAppearAnimationUtils.getStartTranslation(),
|
||||
true /* appearing */,
|
||||
mAppearAnimationUtils.getInterpolator(),
|
||||
null /* finishRunnable */);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean startDisappearAnimation(Runnable finishRunnable) {
|
||||
public boolean startDisappearAnimation(final Runnable finishRunnable) {
|
||||
mLockPatternView.clearPattern();
|
||||
enableClipping(false);
|
||||
setTranslationY(0);
|
||||
animate()
|
||||
.alpha(0f)
|
||||
.translationY(mDisappearYTranslation)
|
||||
.setInterpolator(AnimationUtils.loadInterpolator(
|
||||
mContext, android.R.interpolator.fast_out_linear_in))
|
||||
.setDuration(100)
|
||||
.withEndAction(finishRunnable);
|
||||
.setDuration(300)
|
||||
.setInterpolator(mDisappearAnimationUtils.getInterpolator())
|
||||
.translationY(-mDisappearAnimationUtils.getStartTranslation());
|
||||
mDisappearAnimationUtils.startAnimation(mLockPatternView.getCellStates(),
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
enableClipping(true);
|
||||
if (finishRunnable != null) {
|
||||
finishRunnable.run();
|
||||
}
|
||||
}
|
||||
}, KeyguardPatternView.this);
|
||||
if (!TextUtils.isEmpty(mHelpMessage.getText())) {
|
||||
mDisappearAnimationUtils.createAnimation(mHelpMessage, 0,
|
||||
200,
|
||||
- mDisappearAnimationUtils.getStartTranslation() * 3,
|
||||
false /* appearing */,
|
||||
mDisappearAnimationUtils.getInterpolator(),
|
||||
null /* finishRunnable */);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -342,11 +365,15 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
||||
|
||||
@Override
|
||||
public void createAnimation(final LockPatternView.CellState animatedCell, long delay,
|
||||
long duration, float startTranslationY, Interpolator interpolator,
|
||||
long duration, float translationY, final boolean appearing,
|
||||
Interpolator interpolator,
|
||||
final Runnable finishListener) {
|
||||
animatedCell.scale = 0.0f;
|
||||
animatedCell.translateY = startTranslationY;
|
||||
ValueAnimator animator = ValueAnimator.ofFloat(startTranslationY, 0.0f);
|
||||
if (appearing) {
|
||||
animatedCell.scale = 0.0f;
|
||||
}
|
||||
animatedCell.translateY = appearing ? translationY : 0;
|
||||
ValueAnimator animator = ValueAnimator.ofFloat(animatedCell.translateY,
|
||||
appearing ? 0 : translationY);
|
||||
animator.setInterpolator(interpolator);
|
||||
animator.setDuration(duration);
|
||||
animator.setStartDelay(delay);
|
||||
@@ -354,7 +381,11 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
||||
@Override
|
||||
public void onAnimationUpdate(ValueAnimator animation) {
|
||||
float animatedFraction = animation.getAnimatedFraction();
|
||||
animatedCell.scale = animatedFraction;
|
||||
if (appearing) {
|
||||
animatedCell.scale = animatedFraction;
|
||||
} else {
|
||||
animatedCell.alpha = 1 - animatedFraction;
|
||||
}
|
||||
animatedCell.translateY = (float) animation.getAnimatedValue();
|
||||
mLockPatternView.invalidate();
|
||||
}
|
||||
@@ -368,8 +399,8 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
|
||||
});
|
||||
|
||||
// Also animate the Emergency call
|
||||
mAppearAnimationUtils.createAnimation(mEcaView, delay, duration, startTranslationY,
|
||||
interpolator, null);
|
||||
mAppearAnimationUtils.createAnimation(mEcaView, delay, duration, translationY,
|
||||
appearing, interpolator, null);
|
||||
}
|
||||
animator.start();
|
||||
mLockPatternView.invalidate();
|
||||
|
||||
@@ -145,7 +145,7 @@ public class KeyguardUserSwitcher {
|
||||
}
|
||||
mUserSwitcher.setClipChildren(false);
|
||||
mUserSwitcher.setClipToPadding(false);
|
||||
mAppearAnimationUtils.startAppearAnimation(objects, new Runnable() {
|
||||
mAppearAnimationUtils.startAnimation(objects, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mUserSwitcher.setClipChildren(true);
|
||||
|
||||
Reference in New Issue
Block a user