Improve thumbnail sheet
This commit is contained in:
committed by
Koitharu
parent
57111f628d
commit
7bb809f227
@@ -6,6 +6,7 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import org.koin.android.ext.android.get
|
import org.koin.android.ext.android.get
|
||||||
@@ -53,6 +54,15 @@ class PagesThumbnailsSheet : BaseBottomSheet<SheetPagesBinding>(),
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
val title = arguments?.getString(ARG_TITLE)
|
||||||
|
binding.toolbar.title = title
|
||||||
|
binding.toolbar.setNavigationOnClickListener { dismiss() }
|
||||||
|
binding.toolbar.subtitle =
|
||||||
|
resources.getQuantityString(R.plurals.pages, thumbnails.size, thumbnails.size)
|
||||||
|
|
||||||
|
val initialTopPosition = binding.recyclerView.top
|
||||||
|
|
||||||
with(binding.recyclerView) {
|
with(binding.recyclerView) {
|
||||||
addItemDecoration(
|
addItemDecoration(
|
||||||
SpacingItemDecoration(view.resources.getDimensionPixelOffset(R.dimen.grid_spacing))
|
SpacingItemDecoration(view.resources.getDimensionPixelOffset(R.dimen.grid_spacing))
|
||||||
@@ -64,42 +74,27 @@ class PagesThumbnailsSheet : BaseBottomSheet<SheetPagesBinding>(),
|
|||||||
get(),
|
get(),
|
||||||
this@PagesThumbnailsSheet
|
this@PagesThumbnailsSheet
|
||||||
)
|
)
|
||||||
|
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||||
|
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) = Unit
|
||||||
|
|
||||||
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
|
super.onScrolled(recyclerView, dx, dy)
|
||||||
|
binding.appbar.isLifted = getChildAt(0).top < initialTopPosition
|
||||||
|
}
|
||||||
|
})
|
||||||
addOnLayoutChangeListener(spanResolver)
|
addOnLayoutChangeListener(spanResolver)
|
||||||
spanResolver.setGridSize(get<AppSettings>().gridSize / 100f, this)
|
spanResolver.setGridSize(get<AppSettings>().gridSize / 100f, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
val title = arguments?.getString(ARG_TITLE)
|
|
||||||
binding.toolbar.title = title
|
|
||||||
binding.toolbar.setNavigationOnClickListener { dismiss() }
|
|
||||||
binding.toolbar.subtitle =
|
|
||||||
resources.getQuantityString(R.plurals.pages, thumbnails.size, thumbnails.size)
|
|
||||||
binding.textViewTitle.text = title
|
|
||||||
if (dialog !is BottomSheetDialog) {
|
|
||||||
binding.toolbar.isVisible = true
|
|
||||||
binding.textViewTitle.isVisible = false
|
|
||||||
binding.appbar.elevation = resources.getDimension(R.dimen.elevation_large)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?) =
|
override fun onCreateDialog(savedInstanceState: Bundle?) =
|
||||||
super.onCreateDialog(savedInstanceState).also {
|
super.onCreateDialog(savedInstanceState).also {
|
||||||
val behavior = (it as? BottomSheetDialog)?.behavior ?: return@also
|
val behavior = (it as? BottomSheetDialog)?.behavior ?: return@also
|
||||||
behavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
|
behavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
|
||||||
private val elevation = resources.getDimension(R.dimen.elevation_large)
|
|
||||||
|
|
||||||
override fun onSlide(bottomSheet: View, slideOffset: Float) = Unit
|
override fun onSlide(bottomSheet: View, slideOffset: Float) = Unit
|
||||||
|
|
||||||
override fun onStateChanged(bottomSheet: View, newState: Int) {
|
override fun onStateChanged(bottomSheet: View, newState: Int) = Unit
|
||||||
if (newState == BottomSheetBehavior.STATE_EXPANDED) {
|
|
||||||
binding.toolbar.isVisible = true
|
|
||||||
binding.textViewTitle.isVisible = false
|
|
||||||
binding.appbar.elevation = elevation
|
|
||||||
} else {
|
|
||||||
binding.toolbar.isVisible = false
|
|
||||||
binding.textViewTitle.isVisible = true
|
|
||||||
binding.appbar.elevation = 0f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,33 +9,17 @@
|
|||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/appbar"
|
android:id="@+id/appbar"
|
||||||
|
style="@style/Widget.Kotatsu.Sheet.AppBar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_height="?attr/actionBarSize"
|
||||||
android:background="?android:windowBackground"
|
app:liftOnScroll="true">
|
||||||
android:elevation="0dp"
|
|
||||||
app:elevation="0dp">
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<com.google.android.material.appbar.MaterialToolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
style="@style/Widget.MaterialComponents.Toolbar.Surface"
|
style="@style/Widget.Kotatsu.Toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:elevation="0dp"
|
app:navigationIcon="@drawable/ic_cross" />
|
||||||
android:outlineProvider="@null"
|
|
||||||
android:visibility="gone"
|
|
||||||
app:elevation="0dp"
|
|
||||||
app:navigationIcon="@drawable/ic_cross"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/textView_title"
|
|
||||||
style="@style/MaterialAlertDialog.MaterialComponents.Title.Text"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:padding="16dp"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
|
||||||
tools:visibility="gone" />
|
|
||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
@@ -47,6 +31,7 @@
|
|||||||
android:padding="@dimen/grid_spacing"
|
android:padding="@dimen/grid_spacing"
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
|
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
|
||||||
app:spanCount="3"
|
app:spanCount="3"
|
||||||
tools:listitem="@layout/item_page_thumb" />
|
tools:listitem="@layout/item_page_thumb" />
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,10 @@
|
|||||||
<item name="android:elevation">8dp</item>
|
<item name="android:elevation">8dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="Widget.Kotatsu.Sheet.AppBar" parent="@style/Widget.Kotatsu.AppBar">
|
||||||
|
<item name="android:elevation">0dp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="Widget.Kotatsu.Toolbar" parent="Widget.MaterialComponents.Toolbar">
|
<style name="Widget.Kotatsu.Toolbar" parent="Widget.MaterialComponents.Toolbar">
|
||||||
<item name="android:paddingEnd">8dp</item>
|
<item name="android:paddingEnd">8dp</item>
|
||||||
<item name="popupTheme">@style/ThemeOverlay.Kotatsu</item>
|
<item name="popupTheme">@style/ThemeOverlay.Kotatsu</item>
|
||||||
|
|||||||
Reference in New Issue
Block a user