Remove the scale animation from the lockscreen
With fullbleed notifications don't scale anymore when clicked. Change-Id: I75fadb5e6ccb7f12ca8fc1cb9459c6d9576f4abd
This commit is contained in:
@@ -301,9 +301,6 @@
|
||||
<!-- Z distance between notifications if they are in the stack -->
|
||||
<dimen name="z_distance_between_notifications">1dp</dimen>
|
||||
|
||||
<!-- The padding between the individual notification cards when dimmed. -->
|
||||
<dimen name="notification_padding_dimmed">0dp</dimen>
|
||||
|
||||
<!-- The padding between the individual notification cards. -->
|
||||
<dimen name="notification_padding">2dp</dimen>
|
||||
|
||||
|
||||
@@ -18,19 +18,16 @@
|
||||
<resources>
|
||||
<item type="id" name="translation_y_animator_tag"/>
|
||||
<item type="id" name="translation_z_animator_tag"/>
|
||||
<item type="id" name="scale_animator_tag"/>
|
||||
<item type="id" name="alpha_animator_tag"/>
|
||||
<item type="id" name="top_inset_animator_tag"/>
|
||||
<item type="id" name="height_animator_tag"/>
|
||||
<item type="id" name="translation_y_animator_end_value_tag"/>
|
||||
<item type="id" name="translation_z_animator_end_value_tag"/>
|
||||
<item type="id" name="scale_animator_end_value_tag"/>
|
||||
<item type="id" name="alpha_animator_end_value_tag"/>
|
||||
<item type="id" name="top_inset_animator_end_value_tag"/>
|
||||
<item type="id" name="height_animator_end_value_tag"/>
|
||||
<item type="id" name="translation_y_animator_start_value_tag"/>
|
||||
<item type="id" name="translation_z_animator_start_value_tag"/>
|
||||
<item type="id" name="scale_animator_start_value_tag"/>
|
||||
<item type="id" name="alpha_animator_start_value_tag"/>
|
||||
<item type="id" name="top_inset_animator_start_value_tag"/>
|
||||
<item type="id" name="height_animator_start_value_tag"/>
|
||||
|
||||
@@ -430,8 +430,8 @@ public class NotificationPanelView extends PanelView implements
|
||||
public int computeMaxKeyguardNotifications(int maximum) {
|
||||
float minPadding = mClockPositionAlgorithm.getMinStackScrollerPadding(getHeight(),
|
||||
mKeyguardStatusView.getHeight());
|
||||
int keyguardPadding = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_padding_dimmed);
|
||||
int notificationPadding = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_padding);
|
||||
final int overflowheight = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_summary_height);
|
||||
float bottomStackSize = mNotificationStackScroller.getKeyguardBottomStackSize();
|
||||
@@ -443,7 +443,7 @@ public class NotificationPanelView extends PanelView implements
|
||||
if (!(child instanceof ExpandableNotificationRow)) {
|
||||
continue;
|
||||
}
|
||||
availableSpace -= child.getMinHeight() + keyguardPadding;
|
||||
availableSpace -= child.getMinHeight() + notificationPadding;
|
||||
if (availableSpace >= 0 && count < maximum) {
|
||||
count++;
|
||||
} else {
|
||||
|
||||
@@ -25,7 +25,6 @@ public class AnimationFilter {
|
||||
boolean animateAlpha;
|
||||
boolean animateY;
|
||||
boolean animateZ;
|
||||
boolean animateScale;
|
||||
boolean animateHeight;
|
||||
boolean animateTopInset;
|
||||
boolean animateDimmed;
|
||||
@@ -57,11 +56,6 @@ public class AnimationFilter {
|
||||
return this;
|
||||
}
|
||||
|
||||
public AnimationFilter animateScale() {
|
||||
animateScale = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AnimationFilter animateHeight() {
|
||||
animateHeight = true;
|
||||
return this;
|
||||
@@ -118,7 +112,6 @@ public class AnimationFilter {
|
||||
animateAlpha |= filter.animateAlpha;
|
||||
animateY |= filter.animateY;
|
||||
animateZ |= filter.animateZ;
|
||||
animateScale |= filter.animateScale;
|
||||
animateHeight |= filter.animateHeight;
|
||||
animateTopInset |= filter.animateTopInset;
|
||||
animateDimmed |= filter.animateDimmed;
|
||||
@@ -131,7 +124,6 @@ public class AnimationFilter {
|
||||
animateAlpha = false;
|
||||
animateY = false;
|
||||
animateZ = false;
|
||||
animateScale = false;
|
||||
animateHeight = false;
|
||||
animateTopInset = false;
|
||||
animateDimmed = false;
|
||||
|
||||
@@ -324,7 +324,6 @@ public class NotificationChildrenContainer extends ViewGroup {
|
||||
childState.dark = parentState.dark;
|
||||
childState.hideSensitive = parentState.hideSensitive;
|
||||
childState.belowSpeedBump = parentState.belowSpeedBump;
|
||||
childState.scale = 1.0f;
|
||||
childState.clipTopAmount = 0;
|
||||
childState.topOverLap = 0;
|
||||
boolean visible = i <= lastVisibleIndex;
|
||||
|
||||
@@ -43,7 +43,6 @@ import com.android.systemui.statusbar.DismissView;
|
||||
import com.android.systemui.statusbar.EmptyShadeView;
|
||||
import com.android.systemui.statusbar.ExpandableNotificationRow;
|
||||
import com.android.systemui.statusbar.ExpandableView;
|
||||
import com.android.systemui.statusbar.NotificationData;
|
||||
import com.android.systemui.statusbar.NotificationOverflowContainer;
|
||||
import com.android.systemui.statusbar.SpeedBumpView;
|
||||
import com.android.systemui.statusbar.StackScrollerDecorView;
|
||||
@@ -109,7 +108,6 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
private int mBottomStackSlowDownHeight;
|
||||
private int mBottomStackPeekSize;
|
||||
private int mPaddingBetweenElements;
|
||||
private int mPaddingBetweenElementsDimmed;
|
||||
private int mPaddingBetweenElementsNormal;
|
||||
private int mTopPadding;
|
||||
private int mCollapseSecondCardPadding;
|
||||
@@ -301,26 +299,16 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
mBottomStackPeekSize = context.getResources()
|
||||
.getDimensionPixelSize(R.dimen.bottom_stack_peek_amount);
|
||||
mStackScrollAlgorithm.initView(context);
|
||||
mPaddingBetweenElementsDimmed = context.getResources()
|
||||
.getDimensionPixelSize(R.dimen.notification_padding_dimmed);
|
||||
mPaddingBetweenElementsNormal = context.getResources()
|
||||
.getDimensionPixelSize(R.dimen.notification_padding);
|
||||
updatePadding(mAmbientState.isDimmed());
|
||||
mPaddingBetweenElements = mPaddingBetweenElementsNormal;
|
||||
mBottomStackSlowDownHeight = mStackScrollAlgorithm.getBottomStackSlowDownLength();
|
||||
mMinTopOverScrollToEscape = getResources().getDimensionPixelSize(
|
||||
R.dimen.min_top_overscroll_to_qs);
|
||||
mCollapseSecondCardPadding = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_collapse_second_card_padding);
|
||||
}
|
||||
|
||||
private void updatePadding(boolean dimmed) {
|
||||
mPaddingBetweenElements = dimmed && mStackScrollAlgorithm.shouldScaleDimmed()
|
||||
? mPaddingBetweenElementsDimmed
|
||||
: mPaddingBetweenElementsNormal;
|
||||
mBottomStackSlowDownHeight = mStackScrollAlgorithm.getBottomStackSlowDownLength();
|
||||
updateContentHeight();
|
||||
notifyHeightChangeListener(null);
|
||||
}
|
||||
|
||||
private void notifyHeightChangeListener(ExpandableView view) {
|
||||
if (mOnHeightChangedListener != null) {
|
||||
mOnHeightChangedListener.onHeightChanged(view, false /* needsAnimation */);
|
||||
@@ -2404,9 +2392,7 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
* See {@link AmbientState#setDimmed}.
|
||||
*/
|
||||
public void setDimmed(boolean dimmed, boolean animate) {
|
||||
mStackScrollAlgorithm.setDimmed(dimmed);
|
||||
mAmbientState.setDimmed(dimmed);
|
||||
updatePadding(dimmed);
|
||||
if (animate && mAnimationsEnabled) {
|
||||
mDimmedNeedsAnimation = true;
|
||||
mNeedsAnimation = true;
|
||||
@@ -2955,7 +2941,6 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
.animateTopInset()
|
||||
.animateY()
|
||||
.animateDimmed()
|
||||
.animateScale()
|
||||
.animateZ(),
|
||||
|
||||
// ANIMATION_TYPE_START_DRAG
|
||||
@@ -2969,13 +2954,11 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
|
||||
// ANIMATION_TYPE_ACTIVATED_CHILD
|
||||
new AnimationFilter()
|
||||
.animateScale()
|
||||
.animateAlpha(),
|
||||
|
||||
// ANIMATION_TYPE_DIMMED
|
||||
new AnimationFilter()
|
||||
.animateY()
|
||||
.animateScale()
|
||||
.animateDimmed(),
|
||||
|
||||
// ANIMATION_TYPE_CHANGE_POSITION
|
||||
@@ -2998,7 +2981,6 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
.animateTopInset()
|
||||
.animateY()
|
||||
.animateDimmed()
|
||||
.animateScale()
|
||||
.animateZ()
|
||||
.hasDelays(),
|
||||
|
||||
@@ -3059,7 +3041,6 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
new AnimationFilter()
|
||||
.animateAlpha()
|
||||
.animateDark()
|
||||
.animateScale()
|
||||
.animateDimmed()
|
||||
.animateHideSensitive()
|
||||
.animateHeight()
|
||||
|
||||
@@ -41,8 +41,6 @@ public class StackScrollAlgorithm {
|
||||
private static final int MAX_ITEMS_IN_BOTTOM_STACK = 3;
|
||||
private static final int MAX_ITEMS_IN_TOP_STACK = 3;
|
||||
|
||||
public static final float DIMMED_SCALE = 0.98f;
|
||||
|
||||
private int mPaddingBetweenElements;
|
||||
private int mCollapsedSize;
|
||||
private int mTopStackPeekSize;
|
||||
@@ -60,15 +58,12 @@ public class StackScrollAlgorithm {
|
||||
private ExpandableView mFirstChildWhileExpanding;
|
||||
private boolean mExpandedOnStart;
|
||||
private int mTopStackTotalSize;
|
||||
private int mPaddingBetweenElementsDimmed;
|
||||
private int mPaddingBetweenElementsNormal;
|
||||
private int mBottomStackSlowDownLength;
|
||||
private int mTopStackSlowDownLength;
|
||||
private int mCollapseSecondCardPadding;
|
||||
private boolean mScaleDimmed;
|
||||
private ExpandableView mFirstChild;
|
||||
private int mFirstChildMinHeight;
|
||||
private boolean mDimmed;
|
||||
|
||||
public StackScrollAlgorithm(Context context) {
|
||||
initView(context);
|
||||
@@ -80,9 +75,7 @@ public class StackScrollAlgorithm {
|
||||
}
|
||||
|
||||
private void updatePadding() {
|
||||
mPaddingBetweenElements = mDimmed && mScaleDimmed
|
||||
? mPaddingBetweenElementsDimmed
|
||||
: mPaddingBetweenElementsNormal;
|
||||
mPaddingBetweenElements = mPaddingBetweenElementsNormal;
|
||||
mTopStackTotalSize = mTopStackSlowDownLength + mPaddingBetweenElements
|
||||
+ mTopStackPeekSize;
|
||||
mTopStackIndentationFunctor = new PiecewiseLinearIndentationFunctor(
|
||||
@@ -102,8 +95,6 @@ public class StackScrollAlgorithm {
|
||||
}
|
||||
|
||||
private void initConstants(Context context) {
|
||||
mPaddingBetweenElementsDimmed = context.getResources()
|
||||
.getDimensionPixelSize(R.dimen.notification_padding_dimmed);
|
||||
mPaddingBetweenElementsNormal = context.getResources()
|
||||
.getDimensionPixelSize(R.dimen.notification_padding);
|
||||
mCollapsedSize = context.getResources()
|
||||
@@ -121,12 +112,6 @@ public class StackScrollAlgorithm {
|
||||
.getDimensionPixelSize(R.dimen.top_stack_slow_down_length);
|
||||
mCollapseSecondCardPadding = context.getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_collapse_second_card_padding);
|
||||
mScaleDimmed = context.getResources().getDisplayMetrics().densityDpi
|
||||
>= DisplayMetrics.DENSITY_420;
|
||||
}
|
||||
|
||||
public boolean shouldScaleDimmed() {
|
||||
return mScaleDimmed;
|
||||
}
|
||||
|
||||
public void getStackScrollState(AmbientState ambientState, StackScrollState resultState) {
|
||||
@@ -206,8 +191,8 @@ public class StackScrollAlgorithm {
|
||||
for (int i = 0; i < childCount; i++) {
|
||||
ExpandableView child = algorithmState.visibleChildren.get(i);
|
||||
StackViewState state = resultState.getViewStateForView(child);
|
||||
float newYTranslation = state.yTranslation + state.height * (1f - state.scale) / 2f;
|
||||
float newHeight = state.height * state.scale;
|
||||
float newYTranslation = state.yTranslation;
|
||||
float newHeight = state.height;
|
||||
// apply clipping and shadow
|
||||
float newNotificationEnd = newYTranslation + newHeight;
|
||||
|
||||
@@ -236,7 +221,7 @@ public class StackScrollAlgorithm {
|
||||
} else {
|
||||
previousNotificationIsSwiped = ambientState.getDraggedViews().contains(child);
|
||||
previousNotificationEnd = newNotificationEnd;
|
||||
previousNotificationStart = newYTranslation + state.clipTopAmount * state.scale;
|
||||
previousNotificationStart = newYTranslation + state.clipTopAmount;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,13 +245,13 @@ public class StackScrollAlgorithm {
|
||||
float clipHeight, float backgroundHeight) {
|
||||
if (realHeight > clipHeight) {
|
||||
// Rather overlap than create a hole.
|
||||
state.topOverLap = (int) Math.floor((realHeight - clipHeight) / state.scale);
|
||||
state.topOverLap = (int) Math.floor(realHeight - clipHeight);
|
||||
} else {
|
||||
state.topOverLap = 0;
|
||||
}
|
||||
if (realHeight > backgroundHeight) {
|
||||
// Rather overlap than create a hole.
|
||||
state.clipTopAmount = (int) Math.floor((realHeight - backgroundHeight) / state.scale);
|
||||
state.clipTopAmount = (int) Math.floor(realHeight - backgroundHeight);
|
||||
} else {
|
||||
state.clipTopAmount = 0;
|
||||
}
|
||||
@@ -289,9 +274,6 @@ public class StackScrollAlgorithm {
|
||||
childViewState.dark = dark;
|
||||
childViewState.hideSensitive = hideSensitive;
|
||||
boolean isActivatedChild = activatedChild == child;
|
||||
childViewState.scale = !mScaleDimmed || !dimmed || isActivatedChild
|
||||
? 1.0f
|
||||
: DIMMED_SCALE;
|
||||
if (dimmed && isActivatedChild) {
|
||||
childViewState.zTranslation += 2.0f * mZDistanceBetweenElements;
|
||||
}
|
||||
@@ -900,11 +882,6 @@ public class StackScrollAlgorithm {
|
||||
}
|
||||
}
|
||||
|
||||
public void setDimmed(boolean dimmed) {
|
||||
mDimmed = dimmed;
|
||||
updatePadding();
|
||||
}
|
||||
|
||||
public void onReset(ExpandableView view) {
|
||||
if (view.equals(mFirstChildWhileExpanding)) {
|
||||
updateFirstChildMaxSizeToMaxHeight();
|
||||
|
||||
@@ -183,11 +183,9 @@ public class StackScrollState {
|
||||
float yTranslation = view.getTranslationY();
|
||||
float xTranslation = view.getTranslationX();
|
||||
float zTranslation = view.getTranslationZ();
|
||||
float scale = view.getScaleX();
|
||||
float newAlpha = state.alpha;
|
||||
float newYTranslation = state.yTranslation;
|
||||
float newZTranslation = state.zTranslation;
|
||||
float newScale = state.scale;
|
||||
boolean becomesInvisible = newAlpha == 0.0f;
|
||||
if (alpha != newAlpha && xTranslation == 0) {
|
||||
// apply layer type
|
||||
@@ -225,12 +223,6 @@ public class StackScrollState {
|
||||
if (zTranslation != newZTranslation) {
|
||||
view.setTranslationZ(newZTranslation);
|
||||
}
|
||||
|
||||
// apply scale
|
||||
if (scale != newScale) {
|
||||
view.setScaleX(newScale);
|
||||
view.setScaleY(newScale);
|
||||
}
|
||||
}
|
||||
|
||||
public void performSpeedBumpAnimation(int i, SpeedBumpView speedBump, StackViewState state,
|
||||
|
||||
@@ -55,19 +55,16 @@ public class StackStateAnimator {
|
||||
|
||||
private static final int TAG_ANIMATOR_TRANSLATION_Y = R.id.translation_y_animator_tag;
|
||||
private static final int TAG_ANIMATOR_TRANSLATION_Z = R.id.translation_z_animator_tag;
|
||||
private static final int TAG_ANIMATOR_SCALE = R.id.scale_animator_tag;
|
||||
private static final int TAG_ANIMATOR_ALPHA = R.id.alpha_animator_tag;
|
||||
private static final int TAG_ANIMATOR_HEIGHT = R.id.height_animator_tag;
|
||||
private static final int TAG_ANIMATOR_TOP_INSET = R.id.top_inset_animator_tag;
|
||||
private static final int TAG_END_TRANSLATION_Y = R.id.translation_y_animator_end_value_tag;
|
||||
private static final int TAG_END_TRANSLATION_Z = R.id.translation_z_animator_end_value_tag;
|
||||
private static final int TAG_END_SCALE = R.id.scale_animator_end_value_tag;
|
||||
private static final int TAG_END_ALPHA = R.id.alpha_animator_end_value_tag;
|
||||
private static final int TAG_END_HEIGHT = R.id.height_animator_end_value_tag;
|
||||
private static final int TAG_END_TOP_INSET = R.id.top_inset_animator_end_value_tag;
|
||||
private static final int TAG_START_TRANSLATION_Y = R.id.translation_y_animator_start_value_tag;
|
||||
private static final int TAG_START_TRANSLATION_Z = R.id.translation_z_animator_start_value_tag;
|
||||
private static final int TAG_START_SCALE = R.id.scale_animator_start_value_tag;
|
||||
private static final int TAG_START_ALPHA = R.id.alpha_animator_start_value_tag;
|
||||
private static final int TAG_START_HEIGHT = R.id.height_animator_start_value_tag;
|
||||
private static final int TAG_START_TOP_INSET = R.id.top_inset_animator_start_value_tag;
|
||||
@@ -212,14 +209,13 @@ public class StackStateAnimator {
|
||||
}
|
||||
boolean yTranslationChanging = child.getTranslationY() != viewState.yTranslation;
|
||||
boolean zTranslationChanging = child.getTranslationZ() != viewState.zTranslation;
|
||||
boolean scaleChanging = child.getScaleX() != viewState.scale;
|
||||
boolean alphaChanging = alpha != child.getAlpha();
|
||||
boolean heightChanging = viewState.height != child.getActualHeight();
|
||||
boolean darkChanging = viewState.dark != child.isDark();
|
||||
boolean topInsetChanging = viewState.clipTopAmount != child.getClipTopAmount();
|
||||
boolean hasDelays = mAnimationFilter.hasDelays;
|
||||
boolean isDelayRelevant = yTranslationChanging || zTranslationChanging || scaleChanging ||
|
||||
alphaChanging || heightChanging || topInsetChanging || darkChanging;
|
||||
boolean isDelayRelevant = yTranslationChanging || zTranslationChanging || alphaChanging
|
||||
|| heightChanging || topInsetChanging || darkChanging;
|
||||
long delay = 0;
|
||||
if (fixedDelay != -1) {
|
||||
delay = fixedDelay;
|
||||
@@ -280,7 +276,6 @@ public class StackStateAnimator {
|
||||
}
|
||||
boolean yTranslationChanging = child.getTranslationY() != viewState.yTranslation;
|
||||
boolean zTranslationChanging = child.getTranslationZ() != viewState.zTranslation;
|
||||
boolean scaleChanging = child.getScaleX() != viewState.scale;
|
||||
float childAlpha = child.getVisibility() == View.INVISIBLE ? 0.0f : child.getAlpha();
|
||||
boolean alphaChanging = viewState.alpha != childAlpha;
|
||||
if (child instanceof ExpandableView) {
|
||||
@@ -298,11 +293,6 @@ public class StackStateAnimator {
|
||||
startZTranslationAnimation(child, viewState, duration, delay);
|
||||
}
|
||||
|
||||
// start scale animation
|
||||
if (scaleChanging) {
|
||||
startScaleAnimation(child, viewState, duration);
|
||||
}
|
||||
|
||||
// start alpha animation
|
||||
if (alphaChanging && child.getTranslationX() == 0) {
|
||||
startAlphaAnimation(child, viewState, duration, delay);
|
||||
@@ -683,60 +673,6 @@ public class StackStateAnimator {
|
||||
child.setTag(TAG_END_TRANSLATION_Y, newEndValue);
|
||||
}
|
||||
|
||||
private void startScaleAnimation(final View child,
|
||||
ViewState viewState, long duration) {
|
||||
Float previousStartValue = getChildTag(child, TAG_START_SCALE);
|
||||
Float previousEndValue = getChildTag(child, TAG_END_SCALE);
|
||||
float newEndValue = viewState.scale;
|
||||
if (previousEndValue != null && previousEndValue == newEndValue) {
|
||||
return;
|
||||
}
|
||||
ObjectAnimator previousAnimator = getChildTag(child, TAG_ANIMATOR_SCALE);
|
||||
if (!mAnimationFilter.animateScale) {
|
||||
// just a local update was performed
|
||||
if (previousAnimator != null) {
|
||||
// we need to increase all animation keyframes of the previous animator by the
|
||||
// relative change to the end value
|
||||
PropertyValuesHolder[] values = previousAnimator.getValues();
|
||||
float relativeDiff = newEndValue - previousEndValue;
|
||||
float newStartValue = previousStartValue + relativeDiff;
|
||||
values[0].setFloatValues(newStartValue, newEndValue);
|
||||
values[1].setFloatValues(newStartValue, newEndValue);
|
||||
child.setTag(TAG_START_SCALE, newStartValue);
|
||||
child.setTag(TAG_END_SCALE, newEndValue);
|
||||
previousAnimator.setCurrentPlayTime(previousAnimator.getCurrentPlayTime());
|
||||
return;
|
||||
} else {
|
||||
// no new animation needed, let's just apply the value
|
||||
child.setScaleX(newEndValue);
|
||||
child.setScaleY(newEndValue);
|
||||
}
|
||||
}
|
||||
|
||||
PropertyValuesHolder holderX =
|
||||
PropertyValuesHolder.ofFloat(View.SCALE_X, child.getScaleX(), newEndValue);
|
||||
PropertyValuesHolder holderY =
|
||||
PropertyValuesHolder.ofFloat(View.SCALE_Y, child.getScaleY(), newEndValue);
|
||||
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(child, holderX, holderY);
|
||||
animator.setInterpolator(mFastOutSlowInInterpolator);
|
||||
long newDuration = cancelAnimatorAndGetNewDuration(duration, previousAnimator);
|
||||
animator.setDuration(newDuration);
|
||||
animator.addListener(getGlobalAnimationFinishedListener());
|
||||
// remove the tag when the animation is finished
|
||||
animator.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
child.setTag(TAG_ANIMATOR_SCALE, null);
|
||||
child.setTag(TAG_START_SCALE, null);
|
||||
child.setTag(TAG_END_SCALE, null);
|
||||
}
|
||||
});
|
||||
startAnimator(animator);
|
||||
child.setTag(TAG_ANIMATOR_SCALE, animator);
|
||||
child.setTag(TAG_START_SCALE, child.getScaleX());
|
||||
child.setTag(TAG_END_SCALE, newEndValue);
|
||||
}
|
||||
|
||||
private void startAnimator(ValueAnimator animator) {
|
||||
mAnimatorSet.add(animator);
|
||||
animator.start();
|
||||
|
||||
@@ -29,14 +29,12 @@ public class ViewState {
|
||||
public float yTranslation;
|
||||
public float zTranslation;
|
||||
public boolean gone;
|
||||
public float scale;
|
||||
|
||||
public void copyFrom(ViewState viewState) {
|
||||
alpha = viewState.alpha;
|
||||
yTranslation = viewState.yTranslation;
|
||||
zTranslation = viewState.zTranslation;
|
||||
gone = viewState.gone;
|
||||
scale = viewState.scale;
|
||||
}
|
||||
|
||||
public void initFrom(View view) {
|
||||
@@ -44,6 +42,5 @@ public class ViewState {
|
||||
yTranslation = view.getTranslationY();
|
||||
zTranslation = view.getTranslationZ();
|
||||
gone = view.getVisibility() == View.GONE;
|
||||
scale = view.getScaleX();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user