Always expose the front view a little bit even when backdrop... (p2)

Fixing the fact the filter sheet still moved the category recycler view
This commit is contained in:
Jay 2020-05-19 01:05:17 -04:00
parent 4652f75717
commit 6706af5bd7
3 changed files with 21 additions and 18 deletions

View File

@ -422,7 +422,7 @@ class LibraryController(
createActionModeIfNeeded() createActionModeIfNeeded()
} }
filter_bottom_sheet.onCreate(recycler_layout) filter_bottom_sheet.onCreate(this)
filter_bottom_sheet.onGroupClicked = { filter_bottom_sheet.onGroupClicked = {
when (it) { when (it) {

View File

@ -2,16 +2,15 @@ package eu.kanade.tachiyomi.ui.library.category
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.FastAdapter
import com.mikepenz.fastadapter.adapters.ItemAdapter import com.mikepenz.fastadapter.adapters.ItemAdapter
import com.mikepenz.fastadapter.listeners.OnBindViewHolderListenerImpl import com.mikepenz.fastadapter.listeners.OnBindViewHolderListenerImpl
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.view.marginTop
class CategoryRecyclerView @JvmOverloads constructor( class CategoryRecyclerView @JvmOverloads constructor(
context: Context, context: Context,
@ -71,10 +70,10 @@ class CategoryRecyclerView @JvmOverloads constructor(
} }
override fun onMeasure(widthSpec: Int, heightSpec: Int) { override fun onMeasure(widthSpec: Int, heightSpec: Int) {
val recyclerView = (parent.parent as ViewGroup).findViewById<View>(R.id.recycler) val recyclerView = (parent as ViewGroup)
val mainView = (parent.parent.parent.parent as ViewGroup) val mainView = (parent.parent.parent.parent as ViewGroup)
val top = recyclerView.paddingTop val top = recyclerView.marginTop
val parent = mainView.measuredHeight - top - 50.dpToPx val parent = mainView.measuredHeight - top - 100.dpToPx
val heightS = if (parent > 0) { val heightS = if (parent > 0) {
MeasureSpec.makeMeasureSpec(parent, MeasureSpec.AT_MOST) MeasureSpec.makeMeasureSpec(parent, MeasureSpec.AT_MOST)
} else { } else {

View File

@ -5,7 +5,6 @@ import android.content.res.Configuration
import android.os.Parcelable import android.os.Parcelable
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
@ -20,7 +19,9 @@ import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.ui.library.LibraryController
import eu.kanade.tachiyomi.ui.library.LibraryGroup import eu.kanade.tachiyomi.ui.library.LibraryGroup
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.launchUI import eu.kanade.tachiyomi.util.system.launchUI
import eu.kanade.tachiyomi.util.view.collapse import eu.kanade.tachiyomi.util.view.collapse
import eu.kanade.tachiyomi.util.view.gone import eu.kanade.tachiyomi.util.view.gone
@ -31,6 +32,8 @@ import eu.kanade.tachiyomi.util.view.isHidden
import eu.kanade.tachiyomi.util.view.updatePaddingRelative import eu.kanade.tachiyomi.util.view.updatePaddingRelative
import eu.kanade.tachiyomi.util.view.visibleIf import eu.kanade.tachiyomi.util.view.visibleIf
import kotlinx.android.synthetic.main.filter_bottom_sheet.view.* import kotlinx.android.synthetic.main.filter_bottom_sheet.view.*
import kotlinx.android.synthetic.main.library_grid_recycler.*
import kotlinx.android.synthetic.main.library_list_controller.*
import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
@ -90,15 +93,17 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri
var onGroupClicked: (Int) -> Unit = { _ -> } var onGroupClicked: (Int) -> Unit = { _ -> }
var pager: View? = null var pager: View? = null
var controller: LibraryController? = null
fun onCreate(pagerView: View) { fun onCreate(controller: LibraryController) {
clearButton = clear_button clearButton = clear_button
filter_layout.removeView(clearButton) filter_layout.removeView(clearButton)
sheetBehavior = BottomSheetBehavior.from(this) sheetBehavior = BottomSheetBehavior.from(this)
sheetBehavior?.isHideable = true sheetBehavior?.isHideable = true
pager = pagerView this.controller = controller
val shadow2: View = (pagerView.parent.parent as ViewGroup).findViewById(R.id.shadow2) pager = controller.recycler
val shadow: View = (pagerView.parent.parent as ViewGroup).findViewById(R.id.shadow) val shadow2: View = controller.shadow2
val shadow: View = controller.shadow
sheetBehavior?.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { sheetBehavior?.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
override fun onSlide(bottomSheet: View, progress: Float) { override fun onSlide(bottomSheet: View, progress: Float) {
pill.alpha = (1 - max(0f, progress)) * 0.25f pill.alpha = (1 - max(0f, progress)) * 0.25f
@ -173,10 +178,10 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri
} }
private fun stateChanged(state: Int) { private fun stateChanged(state: Int) {
val shadow = ((pager?.parent as? ViewGroup)?.findViewById(R.id.shadow) as? View) val shadow = controller?.shadow ?: return
if (state == BottomSheetBehavior.STATE_COLLAPSED) { if (state == BottomSheetBehavior.STATE_COLLAPSED) {
shadow?.alpha = 1f shadow.alpha = 1f
pager?.updatePaddingRelative(bottom = sheetBehavior?.peekHeight ?: 0) pager?.updatePaddingRelative(bottom = sheetBehavior?.peekHeight ?: 0 + 10.dpToPx)
} }
if (state == BottomSheetBehavior.STATE_EXPANDED) { if (state == BottomSheetBehavior.STATE_EXPANDED) {
pill.alpha = 0f pill.alpha = 0f
@ -184,8 +189,8 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri
if (state == BottomSheetBehavior.STATE_HIDDEN) { if (state == BottomSheetBehavior.STATE_HIDDEN) {
onGroupClicked(ACTION_HIDE_FILTER_TIP) onGroupClicked(ACTION_HIDE_FILTER_TIP)
reSortViews() reSortViews()
shadow?.alpha = 0f shadow.alpha = 0f
pager?.updatePaddingRelative(bottom = 0) pager?.updatePaddingRelative(bottom = 10.dpToPx)
} }
} }
@ -202,9 +207,8 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri
?: if (sheetBehavior.isExpanded()) 1f else 0f ?: if (sheetBehavior.isExpanded()) 1f else 0f
val percent = (trueProgress * 100).roundToInt() val percent = (trueProgress * 100).roundToInt()
val value = (percent * (maxHeight - minHeight) / 100) + minHeight val value = (percent * (maxHeight - minHeight) / 100) + minHeight
val height = context.resources.getDimensionPixelSize(R.dimen.rounder_radius)
if (trueProgress >= 0) if (trueProgress >= 0)
pager?.updatePaddingRelative(bottom = value - height) pager?.updatePaddingRelative(bottom = value + 10.dpToPx)
else else
pager?.updatePaddingRelative(bottom = (minHeight * (1 + trueProgress)).toInt()) pager?.updatePaddingRelative(bottom = (minHeight * (1 + trueProgress)).toInt())
} }