Merge pull request #657 from ultrasonic/mainScroll

Scrolling / Database
This commit is contained in:
Óscar García Amor 2021-12-24 18:18:51 +01:00 committed by GitHub
commit 3588bb9380
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 234 additions and 215 deletions

View File

@ -40,6 +40,8 @@ android {
buildFeatures { buildFeatures {
buildConfig = false buildConfig = false
viewBinding true
dataBinding true
} }
} }

View File

@ -58,6 +58,12 @@ android {
kotlinOptions { kotlinOptions {
jvmTarget = "1.8" jvmTarget = "1.8"
} }
buildFeatures {
viewBinding true
dataBinding true
}
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8

View File

@ -30,6 +30,7 @@ val appPermanentStorage = module {
.addMigrations(MIGRATION_1_2) .addMigrations(MIGRATION_1_2)
.addMigrations(MIGRATION_2_3) .addMigrations(MIGRATION_2_3)
.addMigrations(MIGRATION_3_4) .addMigrations(MIGRATION_3_4)
.fallbackToDestructiveMigration()
.build() .build()
} }

View File

@ -4,7 +4,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView import android.widget.TextView
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
@ -12,6 +11,7 @@ import androidx.navigation.Navigation
import org.koin.core.component.KoinComponent import org.koin.core.component.KoinComponent
import org.moire.ultrasonic.R import org.moire.ultrasonic.R
import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline
import org.moire.ultrasonic.databinding.MainBinding
import org.moire.ultrasonic.util.Constants import org.moire.ultrasonic.util.Constants
import org.moire.ultrasonic.util.Settings import org.moire.ultrasonic.util.Settings
import org.moire.ultrasonic.util.Util import org.moire.ultrasonic.util.Util
@ -21,7 +21,6 @@ import org.moire.ultrasonic.util.Util
*/ */
class MainFragment : Fragment(), KoinComponent { class MainFragment : Fragment(), KoinComponent {
private lateinit var list: LinearLayout
private lateinit var musicTitle: TextView private lateinit var musicTitle: TextView
private lateinit var artistsButton: TextView private lateinit var artistsButton: TextView
private lateinit var albumsButton: TextView private lateinit var albumsButton: TextView
@ -41,6 +40,8 @@ class MainFragment : Fragment(), KoinComponent {
private lateinit var albumsAlphaByArtistButton: TextView private lateinit var albumsAlphaByArtistButton: TextView
private lateinit var videosButton: TextView private lateinit var videosButton: TextView
private var binding: MainBinding? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
Util.applyTheme(this.context) Util.applyTheme(this.context)
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -50,13 +51,12 @@ class MainFragment : Fragment(), KoinComponent {
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View {
return inflater.inflate(R.layout.main, container, false) binding = MainBinding.inflate(inflater, container, false)
return binding!!.root
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
list = view.findViewById(R.id.main_list)
setupButtons() setupButtons()
setupClickListener() setupClickListener()
setupItemVisibility() setupItemVisibility()
@ -81,25 +81,30 @@ class MainFragment : Fragment(), KoinComponent {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
binding = null
}
private fun setupButtons() { private fun setupButtons() {
musicTitle = list.findViewById(R.id.main_music) musicTitle = binding!!.mainMusic
artistsButton = list.findViewById(R.id.main_artists_button) artistsButton = binding!!.mainArtistsButton
albumsButton = list.findViewById(R.id.main_albums_button) albumsButton = binding!!.mainAlbumsButton
genresButton = list.findViewById(R.id.main_genres_button) genresButton = binding!!.mainGenresButton
videosTitle = list.findViewById(R.id.main_videos_title) videosTitle = binding!!.mainVideosTitle
songsTitle = list.findViewById(R.id.main_songs) songsTitle = binding!!.mainSongs
randomSongsButton = list.findViewById(R.id.main_songs_button) randomSongsButton = binding!!.mainSongsButton
songsStarredButton = list.findViewById(R.id.main_songs_starred) songsStarredButton = binding!!.mainSongsStarred
albumsTitle = list.findViewById(R.id.main_albums) albumsTitle = binding!!.mainAlbums
albumsNewestButton = list.findViewById(R.id.main_albums_newest) albumsNewestButton = binding!!.mainAlbumsNewest
albumsRandomButton = list.findViewById(R.id.main_albums_random) albumsRandomButton = binding!!.mainAlbumsRandom
albumsHighestButton = list.findViewById(R.id.main_albums_highest) albumsHighestButton = binding!!.mainAlbumsHighest
albumsStarredButton = list.findViewById(R.id.main_albums_starred) albumsStarredButton = binding!!.mainAlbumsStarred
albumsRecentButton = list.findViewById(R.id.main_albums_recent) albumsRecentButton = binding!!.mainAlbumsRecent
albumsFrequentButton = list.findViewById(R.id.main_albums_frequent) albumsFrequentButton = binding!!.mainAlbumsFrequent
albumsAlphaByNameButton = list.findViewById(R.id.main_albums_alphaByName) albumsAlphaByNameButton = binding!!.mainAlbumsAlphaByName
albumsAlphaByArtistButton = list.findViewById(R.id.main_albums_alphaByArtist) albumsAlphaByArtistButton = binding!!.mainAlbumsAlphaByArtist
videosButton = list.findViewById(R.id.main_videos) videosButton = binding!!.mainVideos
} }
private fun setupItemVisibility() { private fun setupItemVisibility() {

View File

@ -1,211 +1,216 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android" <layout>
a:id="@+id/main_list" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="fill_parent" android:layout_height="fill_parent"
a:orientation="vertical"> android:id="@+id/main_list">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView <TextView
a:id="@+id/main_music" android:id="@+id/main_music"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:paddingStart="6dp" android:paddingStart="6dp"
a:text="@string/main.music" android:text="@string/main.music"
a:textAllCaps="true" android:textAllCaps="true"
a:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
a:textColor="@color/cyan" android:textColor="@color/cyan"
a:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
a:id="@+id/main_artists_button" android:id="@+id/main_artists_button"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.artists_title" android:text="@string/main.artists_title"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_button" android:id="@+id/main_albums_button"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_title" android:text="@string/main.albums_title"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_genres_button" android:id="@+id/main_genres_button"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.genres_title" android:text="@string/main.genres_title"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_songs" android:id="@+id/main_songs"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:paddingStart="6dp" android:paddingStart="6dp"
a:text="@string/main.songs_title" android:text="@string/main.songs_title"
a:textAllCaps="true" android:textAllCaps="true"
a:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
a:textColor="@color/cyan" android:textColor="@color/cyan"
a:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
a:id="@+id/main_songs_button" android:id="@+id/main_songs_button"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.songs_random" android:text="@string/main.songs_random"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_songs_starred" android:id="@+id/main_songs_starred"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.songs_starred" android:text="@string/main.songs_starred"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums" android:id="@+id/main_albums"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:paddingStart="6dp" android:paddingStart="6dp"
a:text="@string/main.albums_title" android:text="@string/main.albums_title"
a:textAllCaps="true" android:textAllCaps="true"
a:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
a:textColor="@color/cyan" android:textColor="@color/cyan"
a:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
a:id="@+id/main_albums_newest" android:id="@+id/main_albums_newest"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_newest" android:text="@string/main.albums_newest"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_recent" android:id="@+id/main_albums_recent"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_recent" android:text="@string/main.albums_recent"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_frequent" android:id="@+id/main_albums_frequent"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_frequent" android:text="@string/main.albums_frequent"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_highest" android:id="@+id/main_albums_highest"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_highest" android:text="@string/main.albums_highest"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_random" android:id="@+id/main_albums_random"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_random" android:text="@string/main.albums_random"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_starred" android:id="@+id/main_albums_starred"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_starred" android:text="@string/main.albums_starred"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_alphaByName" android:id="@+id/main_albums_alphaByName"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_alphaByName" android:text="@string/main.albums_alphaByName"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_albums_alphaByArtist" android:id="@+id/main_albums_alphaByArtist"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.albums_alphaByArtist" android:text="@string/main.albums_alphaByArtist"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView <TextView
a:id="@+id/main_videos_title" android:id="@+id/main_videos_title"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:paddingStart="6dp" android:paddingStart="6dp"
a:text="@string/main.videos" android:text="@string/main.videos"
a:textAllCaps="true" android:textAllCaps="true"
a:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
a:textColor="@color/cyan" android:textColor="@color/cyan"
a:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
a:id="@+id/main_videos" android:id="@+id/main_videos"
a:layout_width="fill_parent" android:layout_width="fill_parent"
a:layout_height="wrap_content" android:layout_height="wrap_content"
a:gravity="center_vertical" android:gravity="center_vertical"
a:minHeight="40dip" android:minHeight="40dip"
a:paddingStart="6dip" android:paddingStart="6dip"
a:paddingEnd="6dip" android:paddingEnd="6dip"
a:text="@string/main.videos" android:text="@string/main.videos"
a:textAppearance="?android:attr/textAppearanceMedium" /> android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</layout>