From c109c3f3595cd5d282e34dc805cadbef03fc2431 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Wed, 26 Aug 2020 16:16:01 -0600 Subject: [PATCH] Add ViewPager Add a ViewPager, currently it has no purpose but it will eventually. --- app/build.gradle | 3 ++ .../java/org/oxycblt/auxio/MainActivity.kt | 3 +- .../java/org/oxycblt/auxio/MainFragment.kt | 42 +++++++++++++++++++ .../oxycblt/auxio/loading/LoadingFragment.kt | 4 +- .../oxycblt/auxio/recycler/AlbumViewHolder.kt | 1 - .../oxycblt/auxio/recycler/RecyclerUtils.kt | 6 +-- app/src/main/res/layout/fragment_library.xml | 3 +- app/src/main/res/layout/fragment_main.xml | 14 +++++++ app/src/main/res/navigation/nav_main.xml | 10 ++--- app/src/main/res/values-night/colors.xml | 1 + app/src/main/res/values/colors.xml | 1 + 11 files changed, 75 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/org/oxycblt/auxio/MainFragment.kt create mode 100644 app/src/main/res/layout/fragment_main.xml diff --git a/app/build.gradle b/app/build.gradle index 3ce9f073d..b86244712 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,6 +56,9 @@ dependencies { implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version" implementation "androidx.navigation:navigation-ui-ktx:$navigation_version" + // Viewpager + implementation 'androidx.viewpager2:viewpager2:1.0.0' + // Image loading implementation("io.coil-kt:coil:0.12.0") diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index 6c3992607..6bc1b27f7 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -3,6 +3,7 @@ package org.oxycblt.auxio import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate class MainActivity : AppCompatActivity() { @@ -10,7 +11,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - // AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) Log.d(this::class.simpleName, "Activity Created.") } diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt new file mode 100644 index 000000000..e31859181 --- /dev/null +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -0,0 +1,42 @@ +package org.oxycblt.auxio + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.databinding.DataBindingUtil +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity +import androidx.viewpager2.adapter.FragmentStateAdapter +import org.oxycblt.auxio.databinding.FragmentMainBinding +import org.oxycblt.auxio.library.LibraryFragment + +// TODO: Placeholder, page count will be dynamic +private const val PAGES = 1 + +class MainFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val binding = DataBindingUtil.inflate( + inflater, R.layout.fragment_main, container, false + ) + + val adapter = FragmentAdapter(requireActivity()) + binding.viewPager.adapter = adapter + + return binding.root + } +} + +class FragmentAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) { + override fun getItemCount(): Int = PAGES + + override fun createFragment(position: Int): Fragment { + // TODO: Also placeholder, remove when there are other fragments than just library + return LibraryFragment() + } +} diff --git a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt index 23c8c6ef0..b6b1a4262 100644 --- a/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/loading/LoadingFragment.kt @@ -32,7 +32,7 @@ class LoadingFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View? { - binding = DataBindingUtil.inflate( + binding = DataBindingUtil.inflate( inflater, R.layout.fragment_loading, container, false ) @@ -65,7 +65,7 @@ class LoadingFragment : Fragment() { repoResponse?.let { response -> if (response == MusicLoaderResponse.DONE) { this.findNavController().navigate( - LoadingFragmentDirections.actionToLibrary() + LoadingFragmentDirections.actionToMain() ) } else { // If the response wasn't a success, then show the specific error message diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/AlbumViewHolder.kt b/app/src/main/java/org/oxycblt/auxio/recycler/AlbumViewHolder.kt index 3e6ee4aa5..9e95f9dd9 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/AlbumViewHolder.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/AlbumViewHolder.kt @@ -1,6 +1,5 @@ package org.oxycblt.auxio.recycler -import android.net.Uri import androidx.recyclerview.widget.RecyclerView import coil.load import org.oxycblt.auxio.databinding.AlbumItemBinding diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/RecyclerUtils.kt b/app/src/main/java/org/oxycblt/auxio/recycler/RecyclerUtils.kt index 1b012ab84..b4c0fa1c9 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/RecyclerUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/RecyclerUtils.kt @@ -29,21 +29,21 @@ fun RecyclerView.applyDivider() { div.setDrawable( ColorDrawable( - getDividerColor(this) + getDividerDrawable(this) ) ) addItemDecoration(div) } -private fun getDividerColor(recycler: RecyclerView): Int { +private fun getDividerDrawable(recycler: RecyclerView): Int { val isDark = AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES // Depending on the theme use a different opacity for the divider val alpha = if (isDark) 45 else 85 return ColorUtils.setAlphaComponent( - ContextCompat.getColor(recycler.context, R.color.blue), + ContextCompat.getColor(recycler.context, R.color.divider_color), alpha ) } diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml index 33145b0f0..fca3cf9bc 100644 --- a/app/src/main/res/layout/fragment_library.xml +++ b/app/src/main/res/layout/fragment_library.xml @@ -25,7 +25,8 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/toolbar" - app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" + tools:listitem="@layout/album_item" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml new file mode 100644 index 000000000..41009195c --- /dev/null +++ b/app/src/main/res/layout/fragment_main.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_main.xml b/app/src/main/res/navigation/nav_main.xml index 7cca06381..8ee52ca72 100644 --- a/app/src/main/res/navigation/nav_main.xml +++ b/app/src/main/res/navigation/nav_main.xml @@ -11,14 +11,14 @@ android:label="LoadingFragment" tools:layout="@layout/fragment_loading"> + tools:layout="@layout/fragment_main" /> \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 98aa8d113..6f1a474b2 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -1,6 +1,7 @@ #151515 + #6d6d6d