
Force LTR on timeline controls, as per the Material Design guidelines. The guidelines state that while "directional" UIs should be LTR/RTL depending on locale, "timeline" UIs should always by LTR, as the direction of time is universal. Auxio did not do this, and so the timeline controls would be RTL on other elements. Fix this by forcing LTR on the UI elements that correspond to timelines. Now, this is not the best system. To ensure that the rest of the layout remains sane, much of the directional views have to be wrapped in a redundant layout, which is somewhat in-efficient. However, the impact seems to be at least negligable.
93 lines
4 KiB
XML
93 lines
4 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<android.widget.RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
android:id="@android:id/background"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:background="@android:color/transparent"
|
|
android:theme="@style/Theme.Widget">
|
|
|
|
<!--
|
|
For most widget forms to work, we need to scale the ImageView across a 1:1 aspect ratio.
|
|
However, since we are working with a RemoteViews instance, we can't just use ConstraintLayout
|
|
to achieve this. We can use RelativeLayout, but there's no way to force an aspect ratio with
|
|
that layout. However, if we create an invisible ImageView that contains a massive fixed-size
|
|
drawable and then clamp our main ImageView to it, we can make the view scale on a 1:1 aspect
|
|
ratio.
|
|
|
|
This is easily one of the worst layout hacks I've done, but it seems to work.
|
|
-->
|
|
|
|
<android.widget.ImageView
|
|
android:id="@+id/widget_aspect_ratio"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_alignParentStart="true"
|
|
android:layout_alignParentTop="true"
|
|
android:layout_alignParentEnd="true"
|
|
android:layout_alignParentBottom="true"
|
|
android:layout_marginStart="@dimen/spacing_small"
|
|
android:layout_marginTop="@dimen/spacing_small"
|
|
android:layout_marginEnd="@dimen/spacing_small"
|
|
android:layout_marginBottom="@dimen/spacing_small"
|
|
android:adjustViewBounds="true"
|
|
android:scaleType="fitCenter"
|
|
android:src="@drawable/ui_remote_aspect_ratio"
|
|
android:visibility="invisible"
|
|
tools:ignore="ContentDescription" />
|
|
|
|
<android.widget.ImageView
|
|
android:id="@+id/widget_cover"
|
|
android:layout_width="0dp"
|
|
android:layout_height="0dp"
|
|
android:layout_alignStart="@id/widget_aspect_ratio"
|
|
android:layout_alignTop="@id/widget_aspect_ratio"
|
|
android:layout_alignEnd="@id/widget_aspect_ratio"
|
|
android:layout_alignBottom="@id/widget_aspect_ratio"
|
|
android:src="@drawable/ic_remote_default_cover"
|
|
tools:ignore="ContentDescription" />
|
|
|
|
<android.widget.LinearLayout
|
|
android:id="@+id/widget_controls"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
android:layout_alignParentBottom="true"
|
|
android:layout_gravity="center"
|
|
android:background="@drawable/ui_widget_panel"
|
|
android:orientation="horizontal"
|
|
android:paddingStart="@dimen/spacing_small"
|
|
android:paddingTop="@dimen/spacing_small"
|
|
android:paddingEnd="@dimen/spacing_small"
|
|
android:paddingBottom="@dimen/spacing_small">
|
|
|
|
<android.widget.ImageButton
|
|
android:id="@+id/widget_skip_prev"
|
|
style="@style/Widget.Auxio.PlaybackButton.AppWidget"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_weight="1"
|
|
android:contentDescription="@string/desc_skip_prev"
|
|
android:src="@drawable/ic_skip_prev" />
|
|
|
|
<android.widget.ImageButton
|
|
android:id="@+id/widget_play_pause"
|
|
style="@style/Widget.Auxio.PlaybackButton.AppWidget"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_weight="1"
|
|
android:contentDescription="@string/desc_play_pause"
|
|
android:src="@drawable/ic_play" />
|
|
|
|
<android.widget.ImageButton
|
|
android:id="@+id/widget_skip_next"
|
|
style="@style/Widget.Auxio.PlaybackButton.AppWidget"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_weight="1"
|
|
android:contentDescription="@string/desc_skip_next"
|
|
android:src="@drawable/ic_skip_next" />
|
|
|
|
</android.widget.LinearLayout>
|
|
</android.widget.RelativeLayout>
|
|
|
|
|