From 69b3e4f70b445550a08a1fac74d08fed1684b5a0 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 17 Oct 2020 14:18:02 +0100 Subject: [PATCH] Added custom recycler divider, further changes to ViewHolders --- .../look4sat/ui/fragments/EntriesFragment.kt | 17 ++---- .../look4sat/ui/fragments/PassesFragment.kt | 14 ++--- .../look4sat/utility/RecyclerDivider.kt | 26 +++++++++ app/src/main/res/color/nav_bottom_item.xml | 5 -- ...asses_divider.xml => rec_divider_dark.xml} | 2 +- ...ries_divider.xml => rec_divider_light.xml} | 2 +- app/src/main/res/layout/activity_main.xml | 2 - app/src/main/res/layout/fragment_passes.xml | 33 +++++++++-- app/src/main/res/layout/item_pass_geo.xml | 56 +++++++------------ app/src/main/res/layout/item_pass_leo.xml | 9 +-- app/src/main/res/layout/item_sat_entry.xml | 5 +- app/src/main/res/values/colors.xml | 4 +- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 11 +--- 14 files changed, 98 insertions(+), 89 deletions(-) create mode 100644 app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt delete mode 100644 app/src/main/res/color/nav_bottom_item.xml rename app/src/main/res/drawable/{rec_passes_divider.xml => rec_divider_dark.xml} (81%) rename app/src/main/res/drawable/{rec_entries_divider.xml => rec_divider_light.xml} (83%) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt index 9b4485b7..a8bdb527 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt @@ -4,11 +4,9 @@ import android.content.Intent import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity -import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController -import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import com.rtbishop.look4sat.R import com.rtbishop.look4sat.SharedViewModel @@ -16,6 +14,7 @@ import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.TleSource import com.rtbishop.look4sat.databinding.FragmentEntriesBinding import com.rtbishop.look4sat.ui.adapters.EntriesAdapter +import com.rtbishop.look4sat.utility.RecyclerDivider import com.rtbishop.look4sat.utility.Utilities.snack import dagger.hilt.android.AndroidEntryPoint @@ -23,9 +22,9 @@ import dagger.hilt.android.AndroidEntryPoint class EntriesFragment : Fragment(R.layout.fragment_entries) { private lateinit var binding: FragmentEntriesBinding + private lateinit var entriesAdapter: EntriesAdapter private val viewModel: SharedViewModel by activityViewModels() private val pickFileReqCode = 100 - private val entriesAdapter = EntriesAdapter() private var tleSources = listOf() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -36,17 +35,13 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { } private fun setupComponents() { + entriesAdapter = EntriesAdapter() binding.apply { entriesRecycler.apply { - val linearLayoutMgr = LinearLayoutManager(requireContext()) - val divider = DividerItemDecoration(requireContext(), linearLayoutMgr.orientation) - val drawable = ResourcesCompat - .getDrawable(resources, R.drawable.rec_entries_divider, requireActivity().theme) - drawable?.let { divider.setDrawable(it) } - layoutManager = linearLayoutMgr - adapter = entriesAdapter - addItemDecoration(divider) setHasFixedSize(true) + adapter = entriesAdapter + layoutManager = LinearLayoutManager(requireContext()) + addItemDecoration(RecyclerDivider(R.drawable.rec_divider_light)) } importWeb.setOnClickListener { showImportFromWebDialog() } importFile.setOnClickListener { showImportFromFileDialog() } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt index f15354f6..6e037a0b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassesFragment.kt @@ -22,10 +22,8 @@ package com.rtbishop.look4sat.ui.fragments import android.animation.ObjectAnimator import android.os.Bundle import android.view.View -import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.SimpleItemAnimator import com.rtbishop.look4sat.R @@ -35,6 +33,7 @@ import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentPassesBinding import com.rtbishop.look4sat.ui.adapters.PassesAdapter import com.rtbishop.look4sat.utility.PrefsManager +import com.rtbishop.look4sat.utility.RecyclerDivider import com.rtbishop.look4sat.utility.Utilities import com.rtbishop.look4sat.utility.Utilities.getRotationAnimator import dagger.hilt.android.AndroidEntryPoint @@ -78,17 +77,12 @@ class PassesFragment : Fragment(R.layout.fragment_passes) { passesAdapter = PassesAdapter(requireContext(), prefsManager.shouldUseUTC()) binding.apply { passesRecycler.apply { - val linearLayoutMgr = LinearLayoutManager(requireContext()) - val divider = DividerItemDecoration(requireContext(), linearLayoutMgr.orientation) - val drawable = ResourcesCompat - .getDrawable(resources, R.drawable.rec_passes_divider, requireActivity().theme) - drawable?.let { divider.setDrawable(it) } - layoutManager = linearLayoutMgr + setHasFixedSize(true) adapter = passesAdapter isVerticalScrollBarEnabled = false + layoutManager = LinearLayoutManager(context) (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false - addItemDecoration(divider) - setHasFixedSize(true) + addItemDecoration(RecyclerDivider(R.drawable.rec_divider_dark)) } animator = passesFab.getRotationAnimator() passesFab.setOnClickListener { diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt b/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt new file mode 100644 index 00000000..ba220ae0 --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/utility/RecyclerDivider.kt @@ -0,0 +1,26 @@ +package com.rtbishop.look4sat.utility + +import android.graphics.Canvas +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.RecyclerView + +class RecyclerDivider(private val resId: Int) : RecyclerView.ItemDecoration() { + + override fun onDrawOver(c: Canvas, parent: RecyclerView) { + val divider = ContextCompat.getDrawable(parent.context, resId)!! + val left = parent.paddingLeft + val right = parent.width - parent.paddingRight + parent.adapter?.itemCount?.let { childCount -> + for (i in 0 until childCount) { + if (i == (childCount - 1)) continue + parent.getChildAt(i)?.let { + val params = it.layoutParams as RecyclerView.LayoutParams + val top = it.bottom + params.bottomMargin + val bottom = top + divider.intrinsicHeight + divider.setBounds(left, top, right, bottom) + divider.draw(c) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/color/nav_bottom_item.xml b/app/src/main/res/color/nav_bottom_item.xml deleted file mode 100644 index 44c5deec..00000000 --- a/app/src/main/res/color/nav_bottom_item.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/rec_passes_divider.xml b/app/src/main/res/drawable/rec_divider_dark.xml similarity index 81% rename from app/src/main/res/drawable/rec_passes_divider.xml rename to app/src/main/res/drawable/rec_divider_dark.xml index b841a172..db635e1a 100644 --- a/app/src/main/res/drawable/rec_passes_divider.xml +++ b/app/src/main/res/drawable/rec_divider_dark.xml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/rec_entries_divider.xml b/app/src/main/res/drawable/rec_divider_light.xml similarity index 83% rename from app/src/main/res/drawable/rec_entries_divider.xml rename to app/src/main/res/drawable/rec_divider_light.xml index 530c4c76..d0f41380 100644 --- a/app/src/main/res/drawable/rec_entries_divider.xml +++ b/app/src/main/res/drawable/rec_divider_light.xml @@ -7,7 +7,7 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 98a3a6d0..5003c2f6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -21,8 +21,6 @@ android:layout_width="match_parent" android:layout_height="48dp" app:elevation="1dp" - app:itemIconTint="@color/nav_bottom_item" - app:itemTextColor="@color/nav_bottom_item" app:labelVisibilityMode="labeled" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/fragment_passes.xml b/app/src/main/res/layout/fragment_passes.xml index 194ff81c..1bf8ccf6 100644 --- a/app/src/main/res/layout/fragment_passes.xml +++ b/app/src/main/res/layout/fragment_passes.xml @@ -51,14 +51,39 @@ app:layout_constraintStart_toStartOf="@id/passes_bar" app:layout_constraintTop_toTopOf="parent" /> + + + + + app:cardCornerRadius="0dp"> - - + app:layout_constraintHorizontal_chainStyle="spread_inside" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintBaseline_toBaselineOf="@+id/pass_geo_name" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/pass_geo_name" /> + app:layout_constraintStart_toEndOf="@+id/pass_geo_bg" + app:layout_constraintStart_toStartOf="@+id/pass_geo_name" + app:layout_constraintTop_toBottomOf="@+id/pass_geo_name" /> + app:layout_constraintBaseline_toBaselineOf="@+id/pass_geo_az" + app:layout_constraintEnd_toEndOf="@+id/pass_geo_id" + app:layout_constraintStart_toEndOf="@+id/pass_geo_az" /> diff --git a/app/src/main/res/layout/item_pass_leo.xml b/app/src/main/res/layout/item_pass_leo.xml index d7ed4313..457579ab 100644 --- a/app/src/main/res/layout/item_pass_leo.xml +++ b/app/src/main/res/layout/item_pass_leo.xml @@ -22,7 +22,7 @@ android:id="@+id/pass_leo_card" android:layout_width="match_parent" android:layout_height="wrap_content" - app:cardCornerRadius="4dp"> + app:cardCornerRadius="0dp"> @@ -75,8 +73,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="6dp" - android:layout_marginTop="2dp" - android:textSize="15sp" + android:layout_marginTop="4dp" android:text="@string/pass_satName" android:textColor="@color/themeLight" app:layout_constraintStart_toStartOf="parent" @@ -86,9 +83,9 @@ android:id="@+id/pass_leo_aosAz" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginTop="1dp" android:text="@string/pass_aos_az" app:layout_constraintEnd_toStartOf="@+id/pass_leo_losAz" - app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_chainStyle="spread_inside" app:layout_constraintStart_toStartOf="@+id/pass_leo_satName" app:layout_constraintTop_toBottomOf="@+id/pass_leo_satName" /> diff --git a/app/src/main/res/layout/item_sat_entry.xml b/app/src/main/res/layout/item_sat_entry.xml index 7986cb86..a3dbb85b 100644 --- a/app/src/main/res/layout/item_sat_entry.xml +++ b/app/src/main/res/layout/item_sat_entry.xml @@ -20,11 +20,12 @@ + android:textColor="@color/greyLight" + android:textSize="16sp" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d7d988d8..3a1cf156 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -20,8 +20,10 @@ #FFE082 + #FFCA28 #121212 - #E0E0E0 + #C0C0C0 + #808080 #1d1d1d #B00020 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 021dc002..edf43fd0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -128,4 +128,5 @@ Wikimedia maps | Map data © OpenStreetMap contributors Import satellite data 00:00:00 + - diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 45d7a93a..06f1511b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -21,17 +21,8 @@