From 27293f1bf8914e20273887ee0698ebea9dce9749 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sun, 5 Sep 2021 16:00:15 +0300 Subject: [PATCH] Remove some findViewById --- .../favourites/ui/FavouritesContainerFragment.kt | 4 ++-- .../org/koitharu/kotatsu/list/ui/MangaListFragment.kt | 4 ++-- .../java/org/koitharu/kotatsu/main/ui/AppBarOwner.kt | 8 ++++++++ .../java/org/koitharu/kotatsu/main/ui/MainActivity.kt | 10 +++++++--- .../search/ui/suggestion/SearchSuggestionFragment.kt | 6 +++--- .../org/koitharu/kotatsu/tracker/ui/FeedFragment.kt | 5 +++-- 6 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/org/koitharu/kotatsu/main/ui/AppBarOwner.kt diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt index a76612600..399314311 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt @@ -6,7 +6,6 @@ import androidx.core.graphics.Insets import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.appbar.AppBarLayout import com.google.android.material.snackbar.Snackbar import com.google.android.material.tabs.TabLayoutMediator import org.koin.androidx.viewmodel.ext.android.viewModel @@ -18,6 +17,7 @@ import org.koitharu.kotatsu.databinding.FragmentFavouritesBinding import org.koitharu.kotatsu.favourites.ui.categories.CategoriesActivity import org.koitharu.kotatsu.favourites.ui.categories.CategoriesEditDelegate import org.koitharu.kotatsu.favourites.ui.categories.FavouritesCategoriesViewModel +import org.koitharu.kotatsu.main.ui.AppBarOwner import org.koitharu.kotatsu.utils.RecycledViewPoolHolder import org.koitharu.kotatsu.utils.ext.getDisplayMessage import org.koitharu.kotatsu.utils.ext.measureHeight @@ -68,7 +68,7 @@ class FavouritesContainerFragment : BaseFragment(), } override fun onWindowInsetsChanged(insets: Insets) { - val headerHeight = requireActivity().findViewById(R.id.appbar).measureHeight() + val headerHeight = (activity as? AppBarOwner)?.appBar?.measureHeight() ?: insets.top binding.root.updatePadding( top = headerHeight - insets.top ) diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt index cbb215e00..066da26ec 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/MangaListFragment.kt @@ -14,7 +14,6 @@ import androidx.drawerlayout.widget.DrawerLayout import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import com.google.android.material.appbar.AppBarLayout import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.launch import org.koin.android.ext.android.get @@ -37,6 +36,7 @@ import org.koitharu.kotatsu.list.ui.adapter.MangaListAdapter import org.koitharu.kotatsu.list.ui.filter.FilterAdapter import org.koitharu.kotatsu.list.ui.filter.OnFilterChangedListener import org.koitharu.kotatsu.list.ui.model.ListModel +import org.koitharu.kotatsu.main.ui.AppBarOwner import org.koitharu.kotatsu.main.ui.MainActivity import org.koitharu.kotatsu.utils.RecycledViewPoolHolder import org.koitharu.kotatsu.utils.ext.* @@ -223,7 +223,7 @@ abstract class MangaListFragment : BaseFragment(), } override fun onWindowInsetsChanged(insets: Insets) { - val headerHeight = requireActivity().findViewById(R.id.appbar).measureHeight() + val headerHeight = (activity as? AppBarOwner)?.appBar?.measureHeight() ?: insets.top binding.recyclerViewFilter.updatePadding( top = headerHeight, bottom = insets.bottom diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/AppBarOwner.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/AppBarOwner.kt new file mode 100644 index 000000000..d5a2de5bc --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/AppBarOwner.kt @@ -0,0 +1,8 @@ +package org.koitharu.kotatsu.main.ui + +import com.google.android.material.appbar.AppBarLayout + +interface AppBarOwner { + + val appBar: AppBarLayout +} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index c651f557d..4272a2b5e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -20,6 +20,7 @@ import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.commit import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.CircularProgressDrawable +import com.google.android.material.appbar.AppBarLayout import com.google.android.material.navigation.NavigationView import com.google.android.material.snackbar.Snackbar import org.koin.android.ext.android.get @@ -50,7 +51,7 @@ import org.koitharu.kotatsu.tracker.work.TrackWorker import org.koitharu.kotatsu.utils.ext.* class MainActivity : BaseActivity(), - NavigationView.OnNavigationItemSelectedListener, + NavigationView.OnNavigationItemSelectedListener, AppBarOwner, View.OnClickListener, View.OnFocusChangeListener, SearchSuggestionListener { private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) @@ -62,6 +63,9 @@ class MainActivity : BaseActivity(), private lateinit var drawerToggle: ActionBarDrawerToggle private var searchViewElevation = 0f + override val appBar: AppBarLayout + get() = binding.appbar + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(ActivityMainBinding.inflate(layoutInflater)) @@ -334,7 +338,7 @@ class MainActivity : BaseActivity(), binding.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) drawerToggle.isDrawerIndicatorEnabled = false // Avoiding shadows on the sides if the color is transparent, so we make the AppBarLayout white/dark - binding.appbar.setBackgroundColor(resources.getColor(R.color.color_on_secondary)) + binding.appbar.setBackgroundColor(ContextCompat.getColor(this, R.color.color_on_secondary)) binding.toolbarCard.cardElevation = 0f binding.appbar.elevation = searchViewElevation } @@ -343,7 +347,7 @@ class MainActivity : BaseActivity(), binding.drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED) drawerToggle.isDrawerIndicatorEnabled = true // Returning transparent color - binding.appbar.setBackgroundColor(resources.getColor(android.R.color.transparent)) + binding.appbar.setBackgroundColor(Color.TRANSPARENT) binding.appbar.elevation = 0f binding.toolbarCard.cardElevation = searchViewElevation } diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt index 3777955dd..f48e9b0da 100644 --- a/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/suggestion/SearchSuggestionFragment.kt @@ -7,12 +7,11 @@ import android.view.ViewGroup import androidx.core.graphics.Insets import androidx.core.view.updatePadding import androidx.recyclerview.widget.ItemTouchHelper -import com.google.android.material.appbar.AppBarLayout import org.koin.android.ext.android.get import org.koin.androidx.viewmodel.ext.android.sharedViewModel -import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.BaseFragment import org.koitharu.kotatsu.databinding.FragmentSearchSuggestionBinding +import org.koitharu.kotatsu.main.ui.AppBarOwner import org.koitharu.kotatsu.search.ui.suggestion.adapter.SearchSuggestionAdapter import org.koitharu.kotatsu.utils.ext.measureHeight @@ -42,8 +41,9 @@ class SearchSuggestionFragment : BaseFragment() } override fun onWindowInsetsChanged(insets: Insets) { + val headerHeight = (activity as? AppBarOwner)?.appBar?.measureHeight() ?: insets.top binding.root.updatePadding( - top = requireActivity().findViewById(R.id.appbar).measureHeight(), + top = headerHeight, left = insets.left, right = insets.right, bottom = insets.bottom, diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt index b24c74b31..66413a5f5 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt @@ -5,7 +5,6 @@ import android.view.* import androidx.appcompat.app.AlertDialog import androidx.core.graphics.Insets import androidx.core.view.updatePadding -import com.google.android.material.appbar.AppBarLayout import com.google.android.material.snackbar.Snackbar import org.koin.android.ext.android.get import org.koin.androidx.viewmodel.ext.android.viewModel @@ -17,6 +16,7 @@ import org.koitharu.kotatsu.core.model.Manga import org.koitharu.kotatsu.databinding.FragmentFeedBinding import org.koitharu.kotatsu.details.ui.DetailsActivity import org.koitharu.kotatsu.list.ui.model.ListModel +import org.koitharu.kotatsu.main.ui.AppBarOwner import org.koitharu.kotatsu.tracker.ui.adapter.FeedAdapter import org.koitharu.kotatsu.tracker.work.TrackWorker import org.koitharu.kotatsu.utils.ext.getDisplayMessage @@ -98,8 +98,9 @@ class FeedFragment : BaseFragment(), PaginationScrollListen } override fun onWindowInsetsChanged(insets: Insets) { + val headerHeight = (activity as? AppBarOwner)?.appBar?.measureHeight() ?: insets.top binding.recyclerView.updatePadding( - top = requireActivity().findViewById(R.id.appbar).measureHeight(), + top = headerHeight, left = insets.left, right = insets.right, bottom = insets.bottom