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

Commit 53596362 authored by Thales Lima's avatar Thales Lima
Browse files

sysui: update wallet card widths on configuration changes

When opening a foldable the animation is still not perfect because the
view is laid out before the carousel has a chance to set the new
adapter.

Fixes: 187516046
Test: manual testing
Change-Id: If4cd56053ce7599260d8d3bb5dbbdce7236442e1
parent 5eb2ccc3
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -189,6 +189,15 @@ public class WalletCardCarousel extends RecyclerView {
        return mCardHeightPx;
    }

    /**
     * Sets the adapter again in the RecyclerView, updating the ViewHolders children's layout.
     * This is needed when changing the state of the device (eg fold/unfold) so the ViewHolders are
     * recreated.
     */
    void resetAdapter() {
        setAdapter(mWalletCardCarouselAdapter);
    }

    /**
     * Returns true if the data set is changed.
     */
@@ -376,8 +385,8 @@ public class WalletCardCarousel extends RecyclerView {
            CardView cardView = viewHolder.mCardView;
            cardView.setRadius(mCornerRadiusPx);
            ViewGroup.LayoutParams layoutParams = cardView.getLayoutParams();
            layoutParams.width = mCardWidthPx;
            layoutParams.height = mCardHeightPx;
            layoutParams.width = getCardWidthPx();
            layoutParams.height = getCardHeightPx();
            view.setTag(viewHolder);
            return viewHolder;
        }
+1 −5
Original line number Diff line number Diff line
@@ -99,17 +99,13 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard
        mCardCarousel.setExpectedViewWidth(getWidth());
    }

    @Override
    protected void onConfigurationChanged(Configuration newConfig) {
        updateViewForOrientation(newConfig.orientation);
    }

    private void updateViewForOrientation(@Configuration.Orientation int orientation) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            renderViewPortrait();
        } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            renderViewLandscape();
        }
        mCardCarousel.resetAdapter(); // necessary to update cards width
        ViewGroup.LayoutParams params = mCardCarouselContainer.getLayoutParams();
        if (params instanceof MarginLayoutParams) {
            ((MarginLayoutParams) params).topMargin =