Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b42698fe authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed an issue where icons were jumping

Because width and height are different for icons on
some devices, the animation could jump unfortunately.
This was mainly introduced since we changed the
statusbar height.

Test: observe icon animations (Especially on last notification)
Change-Id: Iee4f63467895045146c92d68eb4f9ca8a38d943a
Fixes: 64008528
parent 51f65bbc
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
    private boolean mHasItemsInStableShelf;
    private NotificationIconContainer mCollapsedIcons;
    private int mScrollFastThreshold;
    private int mIconSize;
    private int mStatusBarState;
    private float mMaxShelfEnd;
    private int mRelativeOffset;
@@ -120,6 +121,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
        mShelfIcons.setPadding(padding, 0, padding, 0);
        mScrollFastThreshold = res.getDimensionPixelOffset(R.dimen.scroll_fast_threshold);
        mShowNotificationShelf = res.getBoolean(R.bool.config_showNotificationShelf);
        mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size);

        if (!mShowNotificationShelf) {
            setVisibility(GONE);
@@ -486,12 +488,12 @@ public class NotificationShelf extends ActivatableNotificationView implements
        }
        notificationIconPosition += iconTopPadding;
        float shelfIconPosition = getTranslationY() + icon.getTop();
        shelfIconPosition += ((1.0f - icon.getIconScale()) * icon.getHeight()) / 2.0f;
        shelfIconPosition += (icon.getHeight() - icon.getIconScale() * mIconSize) / 2.0f;
        float iconYTranslation = NotificationUtils.interpolate(
                notificationIconPosition - shelfIconPosition,
                0,
                transitionAmount);
        float shelfIconSize = icon.getHeight() * icon.getIconScale();
        float shelfIconSize = mIconSize * icon.getIconScale();
        float alpha = 1.0f;
        boolean noIcon = !row.isShowingIcon();
        if (noIcon) {
@@ -503,7 +505,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
        float newSize = NotificationUtils.interpolate(notificationIconSize, shelfIconSize,
                transitionAmount);
        if (iconState != null) {
            iconState.scaleX = newSize / icon.getHeight() / icon.getIconScale();
            iconState.scaleX = newSize / shelfIconSize;
            iconState.scaleY = iconState.scaleX;
            iconState.hidden = transitionAmount == 0.0f && !iconState.isAnimating(icon);
            boolean isAppearing = row.isDrawingAppearAnimation() && !row.isInShelf();