Attempt to fix insets
This commit is contained in:
@@ -22,6 +22,7 @@ import org.koitharu.kotatsu.explore.ui.adapter.ExploreListEventListener
|
||||
import org.koitharu.kotatsu.explore.ui.model.ExploreItem
|
||||
import org.koitharu.kotatsu.favourites.ui.categories.FavouriteCategoriesActivity
|
||||
import org.koitharu.kotatsu.history.ui.HistoryActivity
|
||||
import org.koitharu.kotatsu.main.ui.BottomNavOwner
|
||||
import org.koitharu.kotatsu.parsers.model.Manga
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.search.ui.MangaListActivity
|
||||
@@ -108,11 +109,13 @@ class ExploreFragment : BaseFragment<FragmentExploreBinding>(),
|
||||
override fun onEmptyActionClick() = onManageClick(requireView())
|
||||
|
||||
private fun onError(e: Throwable) {
|
||||
Snackbar.make(
|
||||
val snackbar = Snackbar.make(
|
||||
binding.recyclerView,
|
||||
e.getDisplayMessage(resources),
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
)
|
||||
snackbar.anchorView = (activity as? BottomNavOwner)?.bottomNav
|
||||
snackbar.show()
|
||||
}
|
||||
|
||||
private fun onOpenManga(manga: Manga) {
|
||||
@@ -124,4 +127,4 @@ class ExploreFragment : BaseFragment<FragmentExploreBinding>(),
|
||||
|
||||
fun newInstance() = ExploreFragment()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ class ReadingProgressDrawable(
|
||||
paint.color = backgroundColor
|
||||
canvas.drawCircle(cx, cy, radius, paint)
|
||||
}
|
||||
val innerRadius = radius - paint.strokeWidth / 2.5f
|
||||
val innerRadius = radius - paint.strokeWidth / 2f
|
||||
paint.style = Paint.Style.STROKE
|
||||
if (hasOutline) {
|
||||
paint.color = outlineColor
|
||||
@@ -139,4 +139,4 @@ class ReadingProgressDrawable(
|
||||
paint.getTextBounds(text, 0, text.length, tempRect)
|
||||
return testTextSize * width / tempRect.width()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.koitharu.kotatsu.library.ui.model.LibrarySectionModel
|
||||
import org.koitharu.kotatsu.list.ui.ItemSizeResolver
|
||||
import org.koitharu.kotatsu.list.ui.MangaSelectionDecoration
|
||||
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||
import org.koitharu.kotatsu.main.ui.BottomNavOwner
|
||||
import org.koitharu.kotatsu.parsers.model.Manga
|
||||
import org.koitharu.kotatsu.parsers.util.flattenTo
|
||||
import org.koitharu.kotatsu.utils.ShareHelper
|
||||
@@ -171,11 +172,13 @@ class LibraryFragment :
|
||||
}
|
||||
|
||||
private fun onError(e: Throwable) {
|
||||
Snackbar.make(
|
||||
val snackbar = Snackbar.make(
|
||||
binding.recyclerView,
|
||||
e.getDisplayMessage(resources),
|
||||
Snackbar.LENGTH_SHORT,
|
||||
).show()
|
||||
)
|
||||
snackbar.anchorView = (activity as? BottomNavOwner)?.bottomNav
|
||||
snackbar.show()
|
||||
}
|
||||
|
||||
private fun onActionDone(action: ReversibleAction) {
|
||||
@@ -185,6 +188,7 @@ class LibraryFragment :
|
||||
if (handle != null) {
|
||||
snackbar.setAction(R.string.undo) { handle.reverseAsync() }
|
||||
}
|
||||
snackbar.anchorView = (activity as? BottomNavOwner)?.bottomNav
|
||||
snackbar.show()
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ import org.koitharu.kotatsu.list.ui.model.ListHeader
|
||||
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||
import org.koitharu.kotatsu.list.ui.model.MangaItemModel
|
||||
import org.koitharu.kotatsu.main.ui.AppBarOwner
|
||||
import org.koitharu.kotatsu.main.ui.BottomNavOwner
|
||||
import org.koitharu.kotatsu.main.ui.MainActivity
|
||||
import org.koitharu.kotatsu.parsers.model.Manga
|
||||
import org.koitharu.kotatsu.parsers.model.MangaTag
|
||||
@@ -155,6 +156,7 @@ abstract class MangaListFragment :
|
||||
val handle = action.handle
|
||||
val length = if (handle == null) Snackbar.LENGTH_SHORT else Snackbar.LENGTH_LONG
|
||||
val snackbar = Snackbar.make(binding.recyclerView, action.stringResId, length)
|
||||
snackbar.anchorView = (activity as? BottomNavOwner)?.bottomNav
|
||||
if (handle != null) {
|
||||
snackbar.setAction(R.string.undo) { handle.reverseAsync() }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package org.koitharu.kotatsu.main.ui
|
||||
|
||||
import org.koitharu.kotatsu.base.ui.widgets.KotatsuBottomNavigationView
|
||||
|
||||
interface BottomNavOwner {
|
||||
|
||||
val bottomNav: KotatsuBottomNavigationView?
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import androidx.transition.TransitionManager
|
||||
import com.google.android.material.R as materialR
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.appbar.AppBarLayout.LayoutParams.*
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||
import com.google.android.material.navigation.NavigationBarView
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -29,6 +30,7 @@ import org.koin.android.ext.android.get
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.base.ui.BaseActivity
|
||||
import org.koitharu.kotatsu.base.ui.widgets.KotatsuBottomNavigationView
|
||||
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||
import org.koitharu.kotatsu.databinding.ActivityMainBinding
|
||||
import org.koitharu.kotatsu.details.ui.DetailsActivity
|
||||
@@ -59,6 +61,7 @@ private const val TAG_SEARCH = "search"
|
||||
class MainActivity :
|
||||
BaseActivity<ActivityMainBinding>(),
|
||||
AppBarOwner,
|
||||
BottomNavOwner,
|
||||
View.OnClickListener,
|
||||
View.OnFocusChangeListener,
|
||||
SearchSuggestionListener,
|
||||
@@ -72,15 +75,18 @@ class MainActivity :
|
||||
override val appBar: AppBarLayout
|
||||
get() = binding.appbar
|
||||
|
||||
override val bottomNav: KotatsuBottomNavigationView?
|
||||
get() = binding.bottomNav
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(ActivityMainBinding.inflate(layoutInflater))
|
||||
|
||||
navBar = checkNotNull(binding.bottomNav ?: binding.navRail)
|
||||
if (binding.bottomNav != null) {
|
||||
navBar = checkNotNull(bottomNav ?: binding.navRail)
|
||||
if (bottomNav != null) {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, insets ->
|
||||
if (insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom > 0) {
|
||||
val elevation = binding.bottomNav?.elevation ?: 0f
|
||||
val elevation = bottomNav?.elevation ?: 0f
|
||||
window.setNavigationBarTransparentCompat(this@MainActivity, elevation)
|
||||
}
|
||||
insets
|
||||
@@ -269,7 +275,7 @@ class MainActivity :
|
||||
}
|
||||
|
||||
private fun onError(e: Throwable) {
|
||||
Snackbar.make(binding.container, e.getDisplayMessage(resources), Snackbar.LENGTH_SHORT).show()
|
||||
Snackbar.make(binding.container, e.getDisplayMessage(resources), Snackbar.LENGTH_SHORT).setAnchorView(bottomNav).show()
|
||||
}
|
||||
|
||||
private fun onCountersChanged(counters: SparseIntArray) {
|
||||
@@ -331,7 +337,7 @@ class MainActivity :
|
||||
}
|
||||
|
||||
private fun showNav(visible: Boolean) {
|
||||
binding.bottomNav?.run {
|
||||
bottomNav?.run {
|
||||
if (visible) {
|
||||
slideUp()
|
||||
} else {
|
||||
|
||||
@@ -18,6 +18,7 @@ import org.koitharu.kotatsu.details.ui.DetailsActivity
|
||||
import org.koitharu.kotatsu.list.ui.adapter.MangaListListener
|
||||
import org.koitharu.kotatsu.list.ui.model.ListHeader
|
||||
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||
import org.koitharu.kotatsu.main.ui.BottomNavOwner
|
||||
import org.koitharu.kotatsu.parsers.model.Manga
|
||||
import org.koitharu.kotatsu.parsers.model.MangaTag
|
||||
import org.koitharu.kotatsu.tracker.ui.adapter.FeedAdapter
|
||||
@@ -63,7 +64,7 @@ class FeedFragment :
|
||||
setColorSchemeColors(context.getThemeColor(com.google.android.material.R.attr.colorOnPrimary))
|
||||
isEnabled = false
|
||||
}
|
||||
addMenuProvider(FeedMenuProvider(binding.recyclerView, viewModel))
|
||||
addMenuProvider(FeedMenuProvider(binding.recyclerView, (activity as? BottomNavOwner)?.bottomNav ?: binding.recyclerView, viewModel))
|
||||
|
||||
viewModel.content.observe(viewLifecycleOwner, this::onListChanged)
|
||||
viewModel.onError.observe(viewLifecycleOwner, this::onError)
|
||||
@@ -101,19 +102,23 @@ class FeedFragment :
|
||||
}
|
||||
|
||||
private fun onFeedCleared() {
|
||||
Snackbar.make(
|
||||
val snackbar = Snackbar.make(
|
||||
binding.recyclerView,
|
||||
R.string.updates_feed_cleared,
|
||||
Snackbar.LENGTH_LONG
|
||||
).show()
|
||||
)
|
||||
snackbar.anchorView = (activity as? BottomNavOwner)?.bottomNav
|
||||
snackbar.show()
|
||||
}
|
||||
|
||||
private fun onError(e: Throwable) {
|
||||
Snackbar.make(
|
||||
val snackbar = Snackbar.make(
|
||||
binding.recyclerView,
|
||||
e.getDisplayMessage(resources),
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
)
|
||||
snackbar.anchorView = (activity as? BottomNavOwner)?.bottomNav
|
||||
snackbar.show()
|
||||
}
|
||||
|
||||
private fun onIsTrackerRunningChanged(isRunning: Boolean) {
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.koitharu.kotatsu.tracker.work.TrackWorker
|
||||
|
||||
class FeedMenuProvider(
|
||||
private val snackbarHost: View,
|
||||
private val anchorView: View,
|
||||
private val viewModel: FeedViewModel,
|
||||
) : MenuProvider {
|
||||
|
||||
@@ -27,11 +28,13 @@ class FeedMenuProvider(
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) {
|
||||
R.id.action_update -> {
|
||||
TrackWorker.startNow(context)
|
||||
Snackbar.make(
|
||||
val snackbar = Snackbar.make(
|
||||
snackbarHost,
|
||||
R.string.feed_will_update_soon,
|
||||
Snackbar.LENGTH_LONG,
|
||||
).show()
|
||||
)
|
||||
snackbar.anchorView = anchorView
|
||||
snackbar.show()
|
||||
true
|
||||
}
|
||||
R.id.action_clear_feed -> {
|
||||
@@ -51,4 +54,4 @@ class FeedMenuProvider(
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,18 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
||||
|
||||
<com.google.android.material.appbar.KotatsuAppBarLayout
|
||||
android:id="@+id/appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true"
|
||||
app:elevation="0dp">
|
||||
android:stateListAnimator="@null">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@id/toolbar"
|
||||
@@ -20,10 +26,4 @@
|
||||
|
||||
</com.google.android.material.appbar.KotatsuAppBarLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
||||
|
||||
</org.koitharu.kotatsu.base.ui.widgets.KotatsuCoordinatorLayout>
|
||||
</org.koitharu.kotatsu.base.ui.widgets.KotatsuCoordinatorLayout>
|
||||
|
||||
@@ -66,15 +66,18 @@
|
||||
android:id="@+id/fab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginBottom="-4dp"
|
||||
android:text="@string/_continue"
|
||||
android:visibility="gone"
|
||||
app:backgroundTint="?attr/colorContainer"
|
||||
app:icon="@drawable/ic_read"
|
||||
app:layout_anchor="@id/container"
|
||||
app:layout_anchorGravity="bottom|end"
|
||||
app:layout_anchor="@id/bottomNav"
|
||||
app:layout_anchorGravity="top|end"
|
||||
app:layout_behavior="org.koitharu.kotatsu.base.ui.util.ShrinkOnScrollBehavior"
|
||||
app:layout_insetEdge="bottom"
|
||||
app:layout_dodgeInsetEdges="bottom"
|
||||
android:paddingBottom="8dp"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<org.koitharu.kotatsu.base.ui.widgets.KotatsuBottomNavigationView
|
||||
@@ -87,4 +90,4 @@
|
||||
app:menu="@menu/nav_bottom"
|
||||
tools:ignore="KeyboardInaccessibleWidget" />
|
||||
|
||||
</org.koitharu.kotatsu.base.ui.widgets.KotatsuCoordinatorLayout>
|
||||
</org.koitharu.kotatsu.base.ui.widgets.KotatsuCoordinatorLayout>
|
||||
|
||||
@@ -23,12 +23,16 @@
|
||||
android:id="@+id/layout_sync"
|
||||
layout="@layout/layout_synchronization"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.google.android.material.divider.MaterialDivider
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="@dimen/margin_small" />
|
||||
android:layout_marginVertical="@dimen/margin_small"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_storage"
|
||||
|
||||
Reference in New Issue
Block a user