Attempt to fix insets

This commit is contained in:
Zakhar Timoshenko
2022-07-21 23:14:40 +03:00
parent af901baff3
commit 70de4f750c
11 changed files with 72 additions and 34 deletions

View File

@@ -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()
}
}
}

View File

@@ -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()
}
}
}

View File

@@ -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()
}

View File

@@ -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() }
}

View File

@@ -0,0 +1,8 @@
package org.koitharu.kotatsu.main.ui
import org.koitharu.kotatsu.base.ui.widgets.KotatsuBottomNavigationView
interface BottomNavOwner {
val bottomNav: KotatsuBottomNavigationView?
}

View File

@@ -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 {

View File

@@ -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) {

View File

@@ -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
}
}
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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"