widgets: increase minheight
Prevent issues with malformed widget forms on certain devices by increasing the minimum widget height to 152dp, which is the height that the minimal widget should take up.
This commit is contained in:
parent
3107464dd2
commit
926fef4218
7 changed files with 117 additions and 95 deletions
|
@ -92,8 +92,8 @@ fun createDefaultWidget(context: Context): RemoteViews {
|
|||
return createViews(context, R.layout.widget_default)
|
||||
}
|
||||
|
||||
fun createTerminalWidget(context: Context, state: WidgetState): RemoteViews {
|
||||
val views = createViews(context, R.layout.widget_terminal)
|
||||
fun createCompactWidget(context: Context, state: WidgetState): RemoteViews {
|
||||
val views = createViews(context, R.layout.widget_compact)
|
||||
views.applyMeta(context, state)
|
||||
views.applyControls(context, state)
|
||||
return views
|
||||
|
|
|
@ -48,8 +48,8 @@ import org.oxycblt.auxio.util.logD
|
|||
*
|
||||
* - Full: Large widgets will show cover art and all controls
|
||||
* - Small: Tall and thin widgets will show cover art and three controls
|
||||
* - Minimal: Wide and short widgets will show cover art and all controls in a compact manner
|
||||
* - Text: Small widgets will only show text and three controls
|
||||
* - Compact: Wide and short widgets will show cover art and all controls in a compact manner
|
||||
* - Minimal: Small widgets will only show cover art and three controls
|
||||
*
|
||||
* There are some minor problems with this implementation [notably UI jittering when the widget
|
||||
* picks a new layout below Android 12], but this is tolerable. It may be improved in the future.
|
||||
|
@ -80,8 +80,8 @@ class WidgetProvider : AppWidgetProvider() {
|
|||
|
||||
// Map each widget form to the cells where it would look at least okay.
|
||||
val views = mapOf(
|
||||
SizeF(180f, 110f) to createTerminalWidget(context, state),
|
||||
SizeF(250f, 110f) to createMinimalWidget(context, state),
|
||||
SizeF(180f, 152f) to createMinimalWidget(context, state),
|
||||
SizeF(250f, 152f) to createCompactWidget(context, state),
|
||||
SizeF(180f, 270f) to createSmallWidget(context, state),
|
||||
SizeF(250f, 270f) to createFullWidget(context, state)
|
||||
)
|
||||
|
|
104
app/src/main/res/layout/widget_compact.xml
Normal file
104
app/src/main/res/layout/widget_compact.xml
Normal file
|
@ -0,0 +1,104 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@android:id/background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center_vertical"
|
||||
android:background="?attr/colorSurface"
|
||||
android:theme="@style/Theme.Widget">
|
||||
|
||||
<android.widget.LinearLayout style="@style/Widget.Auxio.AppWidget.Panel">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_cover"
|
||||
style="@style/Widget.Auxio.Image.Normal"
|
||||
android:contentDescription="@string/desc_no_cover"
|
||||
android:scaleType="centerCrop"
|
||||
android:layout_marginEnd="@dimen/spacing_medium"
|
||||
android:src="@drawable/ic_song" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<android.widget.TextView
|
||||
android:id="@+id/widget_song"
|
||||
style="@style/Widget.Auxio.TextView.Primary.AppWidget"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/def_widget_song" />
|
||||
|
||||
<android.widget.TextView
|
||||
android:id="@+id/widget_artist"
|
||||
style="@style/Widget.Auxio.TextView.Secondary.AppWidget"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/def_widget_artist" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<android.widget.LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/spacing_medium"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_loop"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_change_loop"
|
||||
android:src="@drawable/ic_loop" />
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_skip_prev"
|
||||
android:layout_weight="1"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_skip_prev"
|
||||
android:src="@drawable/ic_skip_prev" />
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_play_pause"
|
||||
android:layout_weight="1"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_play_pause"
|
||||
android:src="@drawable/sel_playing_state" />
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_skip_next"
|
||||
android:layout_weight="1"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_skip_next"
|
||||
android:src="@drawable/ic_skip_next" />
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_shuffle"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
android:src="@drawable/ic_shuffle" />
|
||||
|
||||
</android.widget.LinearLayout>
|
||||
|
||||
</android.widget.LinearLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -49,22 +49,12 @@
|
|||
<android.widget.LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/spacing_medium"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_loop"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_change_loop"
|
||||
android:src="@drawable/ic_loop" />
|
||||
android:layout_marginTop="@dimen/spacing_medium">
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_skip_prev"
|
||||
android:layout_weight="1"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_skip_prev"
|
||||
|
@ -72,31 +62,22 @@
|
|||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_play_pause"
|
||||
android:layout_weight="1"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_play_pause"
|
||||
android:src="@drawable/sel_playing_state" />
|
||||
android:src="@drawable/ic_play" />
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_skip_next"
|
||||
android:layout_weight="1"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_skip_next"
|
||||
android:src="@drawable/ic_skip_next" />
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_shuffle"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_shuffle"
|
||||
android:src="@drawable/ic_shuffle" />
|
||||
|
||||
</android.widget.LinearLayout>
|
||||
|
||||
</android.widget.LinearLayout>
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@android:id/background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center_vertical"
|
||||
android:background="?attr/colorSurface"
|
||||
android:theme="@style/Theme.Widget">
|
||||
|
||||
<android.widget.LinearLayout style="@style/Widget.Auxio.AppWidget.Panel">
|
||||
|
||||
<android.widget.TextView
|
||||
android:id="@+id/widget_song"
|
||||
style="@style/Widget.Auxio.TextView.Primary.AppWidget"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/def_widget_song" />
|
||||
|
||||
<android.widget.TextView
|
||||
android:id="@+id/widget_artist"
|
||||
style="@style/Widget.Auxio.TextView.Secondary.AppWidget"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/def_widget_artist" />
|
||||
|
||||
<android.widget.LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/spacing_medium">
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_skip_prev"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
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.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_play_pause"
|
||||
android:src="@drawable/ic_play" />
|
||||
|
||||
<android.widget.ImageButton
|
||||
android:id="@+id/widget_skip_next"
|
||||
style="@style/Widget.Auxio.Button.AppWidget"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/desc_skip_next"
|
||||
android:src="@drawable/ic_skip_next" />
|
||||
|
||||
</android.widget.LinearLayout>
|
||||
|
||||
</android.widget.LinearLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -3,7 +3,7 @@
|
|||
android:description="@string/info_widget_desc"
|
||||
android:initialLayout="@layout/widget_small"
|
||||
android:minResizeWidth="180dp"
|
||||
android:minResizeHeight="110dp"
|
||||
android:minResizeHeight="152dp"
|
||||
android:previewLayout="@layout/widget_small"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:minWidth="180dp"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
android:minWidth="180dp"
|
||||
android:minHeight="180dp"
|
||||
android:minResizeWidth="180dp"
|
||||
android:minResizeHeight="110dp"
|
||||
android:minResizeHeight="152dp"
|
||||
android:previewImage="@drawable/ui_widget_preview"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:updatePeriodMillis="0"
|
||||
|
|
Loading…
Reference in a new issue