Update portrait tablet layout

Update the portait tablet layout to look better.
This commit is contained in:
OxygenCobalt 2021-02-07 20:18:06 -07:00
parent ed10bd1898
commit 54f9ceca90
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
3 changed files with 19 additions and 18 deletions

View file

@ -41,7 +41,7 @@
android:id="@+id/playback_cover"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="@dimen/margin_mid_large"
android:layout_margin="@dimen/margin_huge"
android:contentDescription="@{@string/description_album_cover(song.name)}"
android:elevation="@dimen/elevation_normal"
android:outlineProvider="bounds"
@ -57,8 +57,8 @@
android:id="@+id/playback_song"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_mid_large"
android:layout_marginEnd="@dimen/margin_mid_large"
android:layout_marginStart="@dimen/margin_huge"
android:layout_marginEnd="@dimen/margin_huge"
android:ellipsize="marquee"
android:fontFamily="@font/inter_semibold"
android:marqueeRepeatLimit="marquee_forever"
@ -77,8 +77,8 @@
android:id="@+id/playback_artist"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_mid_large"
android:layout_marginEnd="@dimen/margin_mid_large"
android:layout_marginStart="@dimen/margin_huge"
android:layout_marginEnd="@dimen/margin_huge"
android:ellipsize="end"
android:onClick="@{() -> detailModel.navToItem(playbackModel.song.album.artist)}"
android:singleLine="true"
@ -95,8 +95,8 @@
android:id="@+id/playback_album"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_mid_large"
android:layout_marginEnd="@dimen/margin_mid_large"
android:layout_marginStart="@dimen/margin_huge"
android:layout_marginEnd="@dimen/margin_huge"
android:layout_marginBottom="@dimen/margin_medium"
android:ellipsize="end"
android:onClick="@{() -> detailModel.navToItem(playbackModel.song.album)}"
@ -116,8 +116,8 @@
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:paddingStart="@dimen/margin_mid_large"
android:paddingEnd="@dimen/margin_mid_large"
android:paddingStart="@dimen/margin_huge"
android:paddingEnd="@dimen/margin_huge"
android:progressBackgroundTint="?android:attr/colorControlNormal"
android:progressTint="?attr/colorPrimary"
android:splitTrack="false"
@ -132,7 +132,7 @@
android:id="@+id/playback_duration_current"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_mid_large"
android:layout_marginStart="@dimen/margin_huge"
android:layout_marginBottom="@dimen/margin_medium"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
app:layout_constraintStart_toStartOf="parent"
@ -142,7 +142,7 @@
android:id="@+id/playback_song_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/margin_mid_large"
android:layout_marginEnd="@dimen/margin_huge"
android:layout_marginBottom="@dimen/margin_medium"
android:text="@{song.formattedDuration}"
app:layout_constraintBottom_toTopOf="@+id/playback_play_pause"
@ -174,7 +174,7 @@
<ImageButton
android:id="@+id/playback_play_pause"
style="@style/PlayPause"
android:layout_marginBottom="@dimen/margin_medium"
android:layout_marginBottom="@dimen/margin_large"
android:contentDescription="@string/description_play_pause"
android:onClick="@{() -> playbackModel.invertPlayingStatus()}"
app:layout_constraintBottom_toBottomOf="parent"

View file

@ -12,6 +12,7 @@
<dimen name="margin_medium">16dp</dimen>
<dimen name="margin_mid_large">24dp</dimen>
<dimen name="margin_large">32dp</dimen>
<dimen name="margin_huge">48dp</dimen>
<dimen name="margin_insane">128dp</dimen>
<!-- Height Namespace | Height for UI elements -->

View file

@ -1,6 +1,6 @@
# Architecture
This document is designed to provide a simple overview of Auxio's architecture and some guides on how to add to the codebase in an elegant manner. It will be updated as aspects about Auxio change.
This document is designed to provide a simple overview of Auxio's architecture and where code resides/should reside. It will be updated as aspects about Auxio change.
#### Code structure
@ -100,7 +100,7 @@ All music objects inherit `BaseModel`, which guarantees that all music has both
Auxio's playback system is somewhat unorthodox, as it avoids a lot of the built-in android code in favor of a more understandable and controllable system. Its structured around a couple of objects, the connections being highlighted in this diagram.
```
Playback UI Queue UIs PlaybackService
Playback UIs Queue UI PlaybackService
│ │ │
│ │ │
PlaybackViewModel─────┘ │
@ -109,13 +109,13 @@ Auxio's playback system is somewhat unorthodox, as it avoids a lot of the built-
PlaybackStateManager───────────────────┘
```
`PlaybackStateManager` is the shared object that contains the master copy of the playback state, doing all operations on it. This object should ***NEVER*** be used in a UI, as it does not sanitize input and can cause major problems if a Volatile UI interacts with it. It's callback system is also prone to memory leaks if not cleared when done. `PlaybackViewModel` can be used instead, as it exposes stable data and abstracted functions that UI's can use to interact with the playback state.
`PlaybackStateManager` is the shared object that contains the master copy of the playback state, doing all operations on it. This object should ***NEVER*** be used in a UI, as it does not sanitize input and can cause major problems if a Volatile UI interacts with it. It's callback system is also prone to memory leaks if not cleared when done. `PlaybackViewModel` should be used instead, as it exposes stable data and safe functions that UI's can use to interact with the playback state.
`PlaybackService`'s job is to use the playback state to manage the ExoPlayer instance and also modify the state depending on system events, such as when a button is pressed on a headset. It should **never** be bound to, mostly because there is no need given that `PlaybackViewModel` exposes the same data in a much safer fashion.
`PlaybackService`'s job is to use the playback state to manage the ExoPlayer instance and also modify the state depending on system events, such as when a button is pressed on a headset. It should **never** be bound to, mostly because there is no need given that `PlaybackViewModel` exposes the same data in a much safer fashion.
#### `.recycler`
Shared RecyclerView utilities. Important ones to note are `DiffCallback`, which acts as a reusable differ callback for all `BaseModel` instances, and the shared ViewHolders for each data type, such as `SongViewHolder` or `HeaderViewHolder`.
Shared RecyclerView utilities, often for adapters and ViewHolders. Important ones to note are `DiffCallback`, which acts as a reusable differ callback based off of `BaseModel` for `ListAdapter`s, and the shared ViewHolders for each data type, such as `SongViewHolder` or `HeaderViewHolder`.
#### `.search`
@ -127,7 +127,7 @@ Package for the songs UI, there is no data management here, only a user interfac
#### `.ui`
Shared User Interface utilities. This is primarily made up of convenience/extension functions. It also contains some dedicated utilities, such as:
Shared User Interface utilities. This is primarily made up of convenience/extension functions relating to Views, Resources, Configurations, and Contexts. It also contains some dedicated utilities, such as:
- The Accent Management system
- `newMenu` and `ActionMenu`, which automates menu creation for most datatypes
- `memberBinding` and `MemberBinder`, which allows for viewbindings to be used as a member variable without memory leaks or nullability issues.