Loading packages/SystemUI/src/com/android/systemui/SwipeHelper.java +9 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,9 @@ public class SwipeHelper implements Gefingerpoken { protected Animator getViewTranslationAnimator(View v, float target, AnimatorUpdateListener listener) { ObjectAnimator anim = createTranslationAnimation(v, target); if (listener != null) { anim.addUpdateListener(listener); } return anim; } Loading Loading @@ -370,6 +372,9 @@ public class SwipeHelper implements Gefingerpoken { }; Animator anim = getViewTranslationAnimator(animView, newPos, updateListener); if (anim == null) { return; } if (useAccelerateInterpolator) { anim.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN); } else { Loading Loading @@ -411,6 +416,9 @@ public class SwipeHelper implements Gefingerpoken { }; Animator anim = getViewTranslationAnimator(animView, targetLeft, updateListener); if (anim == null) { return; } int duration = SNAP_ANIM_LEN; anim.setDuration(duration); anim.addListener(new AnimatorListenerAdapter() { Loading packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +53 −7 Original line number Diff line number Diff line Loading @@ -684,7 +684,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { mTranslateableViews.remove(mGutsStub); } public void setTranslationForOutline(float translationX) { private void setTranslationForOutline(float translationX) { setOutlineRect(false, translationX, getTop(), getRight() + translationX, getBottom()); } Loading @@ -704,6 +704,46 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { if (mTranslateAnim != null) { mTranslateAnim.cancel(); } mTranslateAnim = (AnimatorSet) getTranslateViewAnimator(leftTarget, null /* updateListener */); if (mTranslateAnim != null) { mTranslateAnim.start(); } } @Override public void setTranslation(float translationX) { if (areGutsExposed()) { // Don't translate if guts are showing. return; } // Translate the group of views for (int i = 0; i < mTranslateableViews.size(); i++) { if (mTranslateableViews.get(i) != null) { mTranslateableViews.get(i).setTranslationX(translationX); } } setTranslationForOutline(translationX); if (mSettingsIconRow != null) { mSettingsIconRow.updateSettingsIcons(translationX, getMeasuredWidth()); } } @Override public float getTranslation() { if (mTranslateableViews != null && mTranslateableViews.size() > 0) { // All of the views in the list should have same translation, just use first one. return mTranslateableViews.get(0).getTranslationX(); } return 0; } public Animator getTranslateViewAnimator(final float leftTarget, AnimatorUpdateListener listener) { if (areGutsExposed()) { // No translation if guts are exposed. return null; } AnimatorSet set = new AnimatorSet(); if (mTranslateableViews != null) { for (int i = 0; i < mTranslateableViews.size(); i++) { Loading @@ -715,8 +755,15 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { @Override public void onAnimationUpdate(ValueAnimator animation) { setTranslationForOutline((float) animation.getAnimatedValue()); if (mSettingsIconRow != null) { mSettingsIconRow.updateSettingsIcons( (float) animation.getAnimatedValue(), getMeasuredWidth()); } } }); if (listener != null) { translateAnim.addUpdateListener(listener); } } translateAnim.addListener(new AnimatorListenerAdapter() { @Override Loading @@ -730,8 +777,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { set.play(translateAnim); } } mTranslateAnim = set; set.start(); return set; } public float getSpaceForGear() { Loading @@ -748,10 +794,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { return mSettingsIconRow; } public ArrayList<View> getContentViews() { return mTranslateableViews; } public void inflateGuts() { if (mGuts == null) { mGutsStub.inflate(); Loading Loading @@ -1169,6 +1211,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { return mMaxExpandHeight; } public boolean areGutsExposed() { return (mGuts != null && mGuts.areGutsExposed()); } @Override public boolean isContentExpandable() { NotificationContentView showingLayout = getShowingLayout(); Loading packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java +14 −0 Original line number Diff line number Diff line Loading @@ -283,6 +283,20 @@ public abstract class ExpandableView extends FrameLayout { public void setBelowSpeedBump(boolean below) { } /** * Sets the translation of the view. */ public void setTranslation(float translation) { setTranslationX(translation); } /** * Gets the translation of the view. */ public float getTranslation() { return getTranslationX(); } public void onHeightReset() { if (mOnHeightChangedListener != null) { mOnHeightChangedListener.onReset(this); Loading packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +24 −75 Original line number Diff line number Diff line Loading @@ -714,6 +714,7 @@ public class NotificationStackScrollLayout extends ViewGroup if (targetLeft == 0 && mCurrIconRow != null) { mCurrIconRow.resetState(); mCurrIconRow = null; if (mGearExposedView != null && mGearExposedView == mTranslatingParentView) { mGearExposedView = null; } Loading Loading @@ -3367,7 +3368,6 @@ public class NotificationStackScrollLayout extends ViewGroup private static final long GEAR_SHOW_DELAY = 60; private ArrayList<View> mTranslatingViews = new ArrayList<>(); private CheckForDrag mCheckForDrag; private Handler mHandler; private int mMoveState = MOVE_STATE_UNDEFINED; Loading @@ -3384,6 +3384,7 @@ public class NotificationStackScrollLayout extends ViewGroup // Reset check for drag gesture mCheckForDrag = null; mCurrIconRow = null; // Slide back any notifications that might be showing a gear resetExposedGearView(); Loading @@ -3392,9 +3393,6 @@ public class NotificationStackScrollLayout extends ViewGroup // Set the listener for the current row's gear mCurrIconRow = ((ExpandableNotificationRow) currView).getSettingsRow(); mCurrIconRow.setGearListener(NotificationStackScrollLayout.this); // And the translating children mTranslatingViews = ((ExpandableNotificationRow) currView).getContentViews(); } mMoveState = MOVE_STATE_UNDEFINED; } Loading @@ -3408,15 +3406,12 @@ public class NotificationStackScrollLayout extends ViewGroup } mMoveState = newMoveState; if (view instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) view).setTranslationForOutline(translation); if (!isPinnedHeadsUp(view)) { // Only show the gear if we're not a heads up view. final boolean gutsExposed = (view instanceof ExpandableNotificationRow) && ((ExpandableNotificationRow) view).areGutsExposed(); if (!isPinnedHeadsUp(view) && !gutsExposed) { // Only show the gear if we're not a heads up view and guts aren't exposed. checkForDrag(); if (mCurrIconRow != null) { mCurrIconRow.updateSettingsIcons(translation, getSize(view)); } } } } Loading @@ -3439,12 +3434,12 @@ public class NotificationStackScrollLayout extends ViewGroup (!fromLeft && absTrans >= snapBackThreshold * 0.4f && absTrans <= notiThreshold); if (pastGear && !isPinnedHeadsUp(animView)) { if (pastGear && !isPinnedHeadsUp(animView) && (animView instanceof ExpandableNotificationRow)) { // bouncity final float target = fromLeft ? snapBackThreshold : -snapBackThreshold; mGearExposedView = mTranslatingParentView; if (mGearDisplayedListener != null && (animView instanceof ExpandableNotificationRow)) { if (mGearDisplayedListener != null) { mGearDisplayedListener.onGearDisplayed((ExpandableNotificationRow) animView); } super.snapChild(animView, target, velocity); Loading @@ -3453,39 +3448,17 @@ public class NotificationStackScrollLayout extends ViewGroup } } @Override public void onTranslationUpdate(View animView, float value, boolean canBeDismissed) { if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. super.onTranslationUpdate(animView, value, canBeDismissed); return; } if (animView instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) animView).setTranslationForOutline(value); } if (mCurrIconRow != null) { mCurrIconRow.updateSettingsIcons(value, getSize(animView)); } } @Override public Animator getViewTranslationAnimator(View v, float target, AnimatorUpdateListener listener) { if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. return super.getViewTranslationAnimator(v, target, listener); } else if (v instanceof ExpandableNotificationRow) { return ((ExpandableNotificationRow) v).getTranslateViewAnimator(target, listener); } else { return super.getViewTranslationAnimator(v, target, listener); } ArrayList<Animator> animators = new ArrayList<Animator>(); for (int i = 0; i < mTranslatingViews.size(); i++) { ObjectAnimator anim = createTranslationAnimation(mTranslatingViews.get(i), target); animators.add(anim); if (i == 0 && listener != null) { anim.addUpdateListener(listener); } } AnimatorSet set = new AnimatorSet(); set.playTogether(animators); return set; } @Override Loading @@ -3493,13 +3466,8 @@ public class NotificationStackScrollLayout extends ViewGroup if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. super.setTranslation(v, translate); return; } // Translate the group of views for (int i = 0; i < mTranslatingViews.size(); i++) { if (mTranslatingViews.get(i) != null) { super.setTranslation(mTranslatingViews.get(i), translate); } } else { ((ExpandableView) v).setTranslation(translate); } } Loading @@ -3508,15 +3476,11 @@ public class NotificationStackScrollLayout extends ViewGroup if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. return super.getTranslation(v); } else { return ((ExpandableView) v).getTranslation(); } // All of the views in the list should have same translation, just use first one. if (mTranslatingViews.size() > 0) { return super.getTranslation(mTranslatingViews.get(0)); } return 0; } /** * Returns the horizontal space in pixels required to display the gear behind a * notification. Loading Loading @@ -3571,26 +3535,11 @@ public class NotificationStackScrollLayout extends ViewGroup final View prevGearExposedView = mGearExposedView; mGearExposedView = null; AnimatorListenerAdapter listener = new AnimatorListenerAdapter() { public void onAnimationEnd(Animator animator) { if (prevGearExposedView instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) prevGearExposedView).getSettingsRow() .resetState(); } Animator anim = getViewTranslationAnimator(prevGearExposedView, 0 /* leftTarget */, null /* updateListener */); if (anim != null) { anim.start(); } }; AnimatorUpdateListener updateListener = new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { if (prevGearExposedView instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) prevGearExposedView) .setTranslationForOutline((float) animation.getAnimatedValue()); } } }; Animator set = getViewTranslationAnimator(prevGearExposedView, 0, updateListener); set.addListener(listener); set.start(); } } Loading Loading
packages/SystemUI/src/com/android/systemui/SwipeHelper.java +9 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,9 @@ public class SwipeHelper implements Gefingerpoken { protected Animator getViewTranslationAnimator(View v, float target, AnimatorUpdateListener listener) { ObjectAnimator anim = createTranslationAnimation(v, target); if (listener != null) { anim.addUpdateListener(listener); } return anim; } Loading Loading @@ -370,6 +372,9 @@ public class SwipeHelper implements Gefingerpoken { }; Animator anim = getViewTranslationAnimator(animView, newPos, updateListener); if (anim == null) { return; } if (useAccelerateInterpolator) { anim.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN); } else { Loading Loading @@ -411,6 +416,9 @@ public class SwipeHelper implements Gefingerpoken { }; Animator anim = getViewTranslationAnimator(animView, targetLeft, updateListener); if (anim == null) { return; } int duration = SNAP_ANIM_LEN; anim.setDuration(duration); anim.addListener(new AnimatorListenerAdapter() { Loading
packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +53 −7 Original line number Diff line number Diff line Loading @@ -684,7 +684,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { mTranslateableViews.remove(mGutsStub); } public void setTranslationForOutline(float translationX) { private void setTranslationForOutline(float translationX) { setOutlineRect(false, translationX, getTop(), getRight() + translationX, getBottom()); } Loading @@ -704,6 +704,46 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { if (mTranslateAnim != null) { mTranslateAnim.cancel(); } mTranslateAnim = (AnimatorSet) getTranslateViewAnimator(leftTarget, null /* updateListener */); if (mTranslateAnim != null) { mTranslateAnim.start(); } } @Override public void setTranslation(float translationX) { if (areGutsExposed()) { // Don't translate if guts are showing. return; } // Translate the group of views for (int i = 0; i < mTranslateableViews.size(); i++) { if (mTranslateableViews.get(i) != null) { mTranslateableViews.get(i).setTranslationX(translationX); } } setTranslationForOutline(translationX); if (mSettingsIconRow != null) { mSettingsIconRow.updateSettingsIcons(translationX, getMeasuredWidth()); } } @Override public float getTranslation() { if (mTranslateableViews != null && mTranslateableViews.size() > 0) { // All of the views in the list should have same translation, just use first one. return mTranslateableViews.get(0).getTranslationX(); } return 0; } public Animator getTranslateViewAnimator(final float leftTarget, AnimatorUpdateListener listener) { if (areGutsExposed()) { // No translation if guts are exposed. return null; } AnimatorSet set = new AnimatorSet(); if (mTranslateableViews != null) { for (int i = 0; i < mTranslateableViews.size(); i++) { Loading @@ -715,8 +755,15 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { @Override public void onAnimationUpdate(ValueAnimator animation) { setTranslationForOutline((float) animation.getAnimatedValue()); if (mSettingsIconRow != null) { mSettingsIconRow.updateSettingsIcons( (float) animation.getAnimatedValue(), getMeasuredWidth()); } } }); if (listener != null) { translateAnim.addUpdateListener(listener); } } translateAnim.addListener(new AnimatorListenerAdapter() { @Override Loading @@ -730,8 +777,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { set.play(translateAnim); } } mTranslateAnim = set; set.start(); return set; } public float getSpaceForGear() { Loading @@ -748,10 +794,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { return mSettingsIconRow; } public ArrayList<View> getContentViews() { return mTranslateableViews; } public void inflateGuts() { if (mGuts == null) { mGutsStub.inflate(); Loading Loading @@ -1169,6 +1211,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView { return mMaxExpandHeight; } public boolean areGutsExposed() { return (mGuts != null && mGuts.areGutsExposed()); } @Override public boolean isContentExpandable() { NotificationContentView showingLayout = getShowingLayout(); Loading
packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java +14 −0 Original line number Diff line number Diff line Loading @@ -283,6 +283,20 @@ public abstract class ExpandableView extends FrameLayout { public void setBelowSpeedBump(boolean below) { } /** * Sets the translation of the view. */ public void setTranslation(float translation) { setTranslationX(translation); } /** * Gets the translation of the view. */ public float getTranslation() { return getTranslationX(); } public void onHeightReset() { if (mOnHeightChangedListener != null) { mOnHeightChangedListener.onReset(this); Loading
packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +24 −75 Original line number Diff line number Diff line Loading @@ -714,6 +714,7 @@ public class NotificationStackScrollLayout extends ViewGroup if (targetLeft == 0 && mCurrIconRow != null) { mCurrIconRow.resetState(); mCurrIconRow = null; if (mGearExposedView != null && mGearExposedView == mTranslatingParentView) { mGearExposedView = null; } Loading Loading @@ -3367,7 +3368,6 @@ public class NotificationStackScrollLayout extends ViewGroup private static final long GEAR_SHOW_DELAY = 60; private ArrayList<View> mTranslatingViews = new ArrayList<>(); private CheckForDrag mCheckForDrag; private Handler mHandler; private int mMoveState = MOVE_STATE_UNDEFINED; Loading @@ -3384,6 +3384,7 @@ public class NotificationStackScrollLayout extends ViewGroup // Reset check for drag gesture mCheckForDrag = null; mCurrIconRow = null; // Slide back any notifications that might be showing a gear resetExposedGearView(); Loading @@ -3392,9 +3393,6 @@ public class NotificationStackScrollLayout extends ViewGroup // Set the listener for the current row's gear mCurrIconRow = ((ExpandableNotificationRow) currView).getSettingsRow(); mCurrIconRow.setGearListener(NotificationStackScrollLayout.this); // And the translating children mTranslatingViews = ((ExpandableNotificationRow) currView).getContentViews(); } mMoveState = MOVE_STATE_UNDEFINED; } Loading @@ -3408,15 +3406,12 @@ public class NotificationStackScrollLayout extends ViewGroup } mMoveState = newMoveState; if (view instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) view).setTranslationForOutline(translation); if (!isPinnedHeadsUp(view)) { // Only show the gear if we're not a heads up view. final boolean gutsExposed = (view instanceof ExpandableNotificationRow) && ((ExpandableNotificationRow) view).areGutsExposed(); if (!isPinnedHeadsUp(view) && !gutsExposed) { // Only show the gear if we're not a heads up view and guts aren't exposed. checkForDrag(); if (mCurrIconRow != null) { mCurrIconRow.updateSettingsIcons(translation, getSize(view)); } } } } Loading @@ -3439,12 +3434,12 @@ public class NotificationStackScrollLayout extends ViewGroup (!fromLeft && absTrans >= snapBackThreshold * 0.4f && absTrans <= notiThreshold); if (pastGear && !isPinnedHeadsUp(animView)) { if (pastGear && !isPinnedHeadsUp(animView) && (animView instanceof ExpandableNotificationRow)) { // bouncity final float target = fromLeft ? snapBackThreshold : -snapBackThreshold; mGearExposedView = mTranslatingParentView; if (mGearDisplayedListener != null && (animView instanceof ExpandableNotificationRow)) { if (mGearDisplayedListener != null) { mGearDisplayedListener.onGearDisplayed((ExpandableNotificationRow) animView); } super.snapChild(animView, target, velocity); Loading @@ -3453,39 +3448,17 @@ public class NotificationStackScrollLayout extends ViewGroup } } @Override public void onTranslationUpdate(View animView, float value, boolean canBeDismissed) { if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. super.onTranslationUpdate(animView, value, canBeDismissed); return; } if (animView instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) animView).setTranslationForOutline(value); } if (mCurrIconRow != null) { mCurrIconRow.updateSettingsIcons(value, getSize(animView)); } } @Override public Animator getViewTranslationAnimator(View v, float target, AnimatorUpdateListener listener) { if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. return super.getViewTranslationAnimator(v, target, listener); } else if (v instanceof ExpandableNotificationRow) { return ((ExpandableNotificationRow) v).getTranslateViewAnimator(target, listener); } else { return super.getViewTranslationAnimator(v, target, listener); } ArrayList<Animator> animators = new ArrayList<Animator>(); for (int i = 0; i < mTranslatingViews.size(); i++) { ObjectAnimator anim = createTranslationAnimation(mTranslatingViews.get(i), target); animators.add(anim); if (i == 0 && listener != null) { anim.addUpdateListener(listener); } } AnimatorSet set = new AnimatorSet(); set.playTogether(animators); return set; } @Override Loading @@ -3493,13 +3466,8 @@ public class NotificationStackScrollLayout extends ViewGroup if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. super.setTranslation(v, translate); return; } // Translate the group of views for (int i = 0; i < mTranslatingViews.size(); i++) { if (mTranslatingViews.get(i) != null) { super.setTranslation(mTranslatingViews.get(i), translate); } } else { ((ExpandableView) v).setTranslation(translate); } } Loading @@ -3508,15 +3476,11 @@ public class NotificationStackScrollLayout extends ViewGroup if (mDismissAllInProgress) { // When dismissing all, we translate the entire view instead. return super.getTranslation(v); } else { return ((ExpandableView) v).getTranslation(); } // All of the views in the list should have same translation, just use first one. if (mTranslatingViews.size() > 0) { return super.getTranslation(mTranslatingViews.get(0)); } return 0; } /** * Returns the horizontal space in pixels required to display the gear behind a * notification. Loading Loading @@ -3571,26 +3535,11 @@ public class NotificationStackScrollLayout extends ViewGroup final View prevGearExposedView = mGearExposedView; mGearExposedView = null; AnimatorListenerAdapter listener = new AnimatorListenerAdapter() { public void onAnimationEnd(Animator animator) { if (prevGearExposedView instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) prevGearExposedView).getSettingsRow() .resetState(); } Animator anim = getViewTranslationAnimator(prevGearExposedView, 0 /* leftTarget */, null /* updateListener */); if (anim != null) { anim.start(); } }; AnimatorUpdateListener updateListener = new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { if (prevGearExposedView instanceof ExpandableNotificationRow) { ((ExpandableNotificationRow) prevGearExposedView) .setTranslationForOutline((float) animation.getAnimatedValue()); } } }; Animator set = getViewTranslationAnimator(prevGearExposedView, 0, updateListener); set.addListener(listener); set.start(); } } Loading