diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java index 79187552f7c17..a8b49e26b4683 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java @@ -130,6 +130,11 @@ public class KeyguardStatusView extends GridLayout { } } + @Override + public boolean hasOverlappingRendering() { + return false; + } + private void updateOwnerInfo() { String ownerInfo = getOwnerInfo(); if (!TextUtils.isEmpty(ownerInfo)) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java index e312d5850fb1e..ca49408e5a0c1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardPageSwipeHelper.java @@ -246,7 +246,9 @@ public class KeyguardPageSwipeHelper { private void startHintTranslationAnimations(float target, long duration, Interpolator interpolator) { ArrayList targetViews = mCallback.getTranslationViews(); - for (View targetView : targetViews) { + int length = targetViews.size(); + for (int i = 0; i < length; i++) { + View targetView = targetViews.get(i); targetView.animate() .setDuration(duration) .setInterpolator(interpolator) @@ -259,8 +261,16 @@ public class KeyguardPageSwipeHelper { } private void cancelAnimations() { - ArrayList targetViews = mCallback.getTranslationViews(); - for (View target : targetViews) { + ArrayList translatingViews = mCallback.getTranslationViews(); + int length = translatingViews.size(); + for (int i = 0; i < length; i++) { + View target = translatingViews.get(i); + target.animate().cancel(); + } + ArrayList fadingViews = mCallback.getFadingViews(); + length = fadingViews.size(); + for (int i = 0; i < length; i++) { + View target = fadingViews.get(i); target.animate().cancel(); } View targetView = mTranslation > 0 ? mLeftIcon : mRightIcon; @@ -291,6 +301,11 @@ public class KeyguardPageSwipeHelper { // translation Animation startTranslationAnimations(vel, target); + // fade animations + if (snapBack) { + startFadeInAnimations(); + } + // animate left / right icon startIconAnimation(vel, snapBack, target); @@ -346,9 +361,20 @@ public class KeyguardPageSwipeHelper { mSwipeAnimator = animator; } + private void startFadeInAnimations() { + ArrayList fadingViews = mCallback.getFadingViews(); + int length = fadingViews.size(); + for (int i = 0; i < length; i++) { + View targetView = fadingViews.get(i); + targetView.animate().alpha(1.0f); + } + } + private void startTranslationAnimations(float vel, float target) { ArrayList targetViews = mCallback.getTranslationViews(); - for (View targetView : targetViews) { + int length = targetViews.size(); + for (int i = 0; i < length; i++) { + View targetView = targetViews.get(i); ViewPropertyAnimator animator = targetView.animate(); mFlingAnimationUtils.apply(animator, mTranslation, target, vel); animator.translationX(target); @@ -375,8 +401,18 @@ public class KeyguardPageSwipeHelper { translation = leftSwipePossible() ? translation : Math.min(0, translation); if (translation != mTranslation || isReset) { ArrayList translatedViews = mCallback.getTranslationViews(); - for (View view : translatedViews) { - view.setTranslationX(translation); + int length = translatedViews.size(); + for (int i = 0; i < length; i++) { + View target = translatedViews.get(i); + target.setTranslationX(translation); + } + float targetAlpha = 1.0f - Math.abs(translation / mMinTranslationAmount); + targetAlpha = Math.max(0.0f, targetAlpha); + ArrayList fadingViews = mCallback.getFadingViews(); + length = fadingViews.size(); + for (int i = 0; i < length; i++) { + View view = fadingViews.get(i); + view.setAlpha(targetAlpha); } if (translation == 0.0f) { boolean animate = !isReset; @@ -494,6 +530,8 @@ public class KeyguardPageSwipeHelper { ArrayList getTranslationViews(); + ArrayList getFadingViews(); + View getLeftIcon(); View getCenterIcon(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 34179cb5b9718..eb8bce0bf5a2b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -108,6 +108,7 @@ public class NotificationPanelView extends PanelView implements private KeyguardBottomAreaView mKeyguardBottomArea; private boolean mBlockTouches; private ArrayList mSwipeTranslationViews = new ArrayList<>(); + private ArrayList mSwipeFadingViews = new ArrayList<>(); public NotificationPanelView(Context context, AttributeSet attrs) { super(context, attrs); @@ -152,7 +153,7 @@ public class NotificationPanelView extends PanelView implements android.R.interpolator.fast_out_linear_in); mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area); mSwipeTranslationViews.add(mNotificationStackScroller); - mSwipeTranslationViews.add(mKeyguardStatusView); + mSwipeFadingViews.add(mKeyguardStatusView); mPageSwiper = new KeyguardPageSwipeHelper(this, getContext()); } @@ -957,6 +958,11 @@ public class NotificationPanelView extends PanelView implements return mSwipeTranslationViews; } + @Override + public ArrayList getFadingViews() { + return mSwipeFadingViews; + } + @Override public View getLeftIcon() { return getLayoutDirection() == LAYOUT_DIRECTION_RTL