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

Commit 5b49db0f authored by Jeff DeCew's avatar Jeff DeCew
Browse files

Fix media layout to avoid awkward expansion transitions.

* Media notifications have always transitioned by crossfading between the two containers, which means that the leftmost 3 icons in the expanded and collapsed state crossfade.  If those match, the animation looks good, otherwise it's a little sad.  This was broken in the layout because the expanded state used padding instead of a margin, which made it look OK only if there was an action added to the left in the expanded state.  This fix preserves the old behavior.
* I also fixed an issue on larger display settings where we would pad both the start and end of the actions, causing odd truncation.  Adding nesting and moving the margin to the start wirks for RTL and avoids unnecessary padding.
* Finally, I reduced the start padding by 6dp, the visual inset of stock media action icons, which will ensure that those icons align with text.  While this could make larger icons misaligned, I can't find any examples of apps that use media notifications (as opposed to players) using non-stock icons.

Fixes: 188665741
Test: manual
Change-Id: I2f4057e91e6f519d89f197bfe93a966217ff2876
parent 551a988b
Loading
Loading
Loading
Loading
+44 −31
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/notification_content_margin_top"
            android:layout_marginStart="@dimen/notification_content_margin_start"
            android:layout_marginBottom="@dimen/notification_content_margin"
            android:layout_marginEnd="@dimen/notification_content_margin_end"
            android:orientation="vertical"
            >
@@ -50,14 +49,26 @@
            <include layout="@layout/notification_template_text"/>
        </LinearLayout>

        <!-- this FrameLayout's minHeight serves as a padding for the content above -->
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="38dp"
            android:minHeight="@dimen/notification_content_margin"
            >
            <!-- The layout_marginStart is selected to ensure that action icons which are visually
                 12x12 in a 24x24 drawable will align correctly with the text.  This means that
                 stock media action icons will align, but icons may be visually up to 20x20 and
                 remain in-spec, in which case they will protrude into the column slightly. -->

            <!-- Nesting in FrameLayout is required to ensure that the marginStart actually applies
                 at the start instead of always the left, given that the media_actions LinearLayout
                 has layoutDirection="ltr". -->
            <LinearLayout
                android:id="@+id/media_actions"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
            android:layout_marginTop="-21dp"
            android:paddingStart="44dp"
            android:paddingEnd="44dp"
            android:paddingBottom="@dimen/media_notification_actions_padding_bottom"
                android:layout_marginBottom="@dimen/media_notification_actions_padding_bottom"
                android:gravity="top"
                android:orientation="horizontal"
                android:layoutDirection="ltr"
@@ -89,6 +100,8 @@
                    />
            </LinearLayout>

        </FrameLayout>

    </LinearLayout>

    <include layout="@layout/notification_template_right_icon" />