mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-02 14:35:29 +00:00
Strip out most StaggeredGridLayoutManager in code
This commit is contained in:
parent
da2b00de59
commit
893a8ec8d9
@ -2,8 +2,6 @@ package com.topjohnwu.magisk.model.entity.recycler
|
|||||||
|
|
||||||
import androidx.databinding.Bindable
|
import androidx.databinding.Bindable
|
||||||
import androidx.databinding.Observable
|
import androidx.databinding.Observable
|
||||||
import androidx.databinding.ViewDataBinding
|
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
|
||||||
import com.topjohnwu.magisk.BR
|
import com.topjohnwu.magisk.BR
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.core.model.module.Module
|
import com.topjohnwu.magisk.core.model.module.Module
|
||||||
@ -16,12 +14,6 @@ import com.topjohnwu.magisk.utils.set
|
|||||||
object InstallModule : ComparableRvItem<InstallModule>() {
|
object InstallModule : ComparableRvItem<InstallModule>() {
|
||||||
override val layoutRes = R.layout.item_module_download
|
override val layoutRes = R.layout.item_module_download
|
||||||
|
|
||||||
override fun onBindingBound(binding: ViewDataBinding) {
|
|
||||||
super.onBindingBound(binding)
|
|
||||||
val params = binding.root.layoutParams as? StaggeredGridLayoutManager.LayoutParams
|
|
||||||
params?.isFullSpan = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun contentSameAs(other: InstallModule) = this == other
|
override fun contentSameAs(other: InstallModule) = this == other
|
||||||
override fun itemSameAs(other: InstallModule) = this === other
|
override fun itemSameAs(other: InstallModule) = this === other
|
||||||
}
|
}
|
||||||
@ -45,12 +37,6 @@ class SectionTitle(
|
|||||||
var hasButton = _button != 0 && _icon != 0
|
var hasButton = _button != 0 && _icon != 0
|
||||||
set(value) = set(value, field, { field = it }, BR.hasButton)
|
set(value) = set(value, field, { field = it }, BR.hasButton)
|
||||||
|
|
||||||
override fun onBindingBound(binding: ViewDataBinding) {
|
|
||||||
super.onBindingBound(binding)
|
|
||||||
val params = binding.root.layoutParams as? StaggeredGridLayoutManager.LayoutParams
|
|
||||||
params?.isFullSpan = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun itemSameAs(other: SectionTitle): Boolean = this === other
|
override fun itemSameAs(other: SectionTitle): Boolean = this === other
|
||||||
override fun contentSameAs(other: SectionTitle): Boolean = this === other
|
override fun contentSameAs(other: SectionTitle): Boolean = this === other
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,6 @@ package com.topjohnwu.magisk.model.entity.recycler
|
|||||||
|
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import androidx.databinding.Bindable
|
import androidx.databinding.Bindable
|
||||||
import androidx.databinding.ViewDataBinding
|
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
|
||||||
import com.topjohnwu.magisk.BR
|
import com.topjohnwu.magisk.BR
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.core.model.MagiskPolicy
|
import com.topjohnwu.magisk.core.model.MagiskPolicy
|
||||||
@ -60,12 +58,6 @@ class PolicyItem(val item: MagiskPolicy, val icon: Drawable) : ObservableItem<Po
|
|||||||
viewModel.updatePolicy(updatedPolicy, isLogging = true)
|
viewModel.updatePolicy(updatedPolicy, isLogging = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindingBound(binding: ViewDataBinding) {
|
|
||||||
super.onBindingBound(binding)
|
|
||||||
val params = binding.root.layoutParams as? StaggeredGridLayoutManager.LayoutParams
|
|
||||||
params?.isFullSpan = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun contentSameAs(other: PolicyItem) = itemSameAs(other)
|
override fun contentSameAs(other: PolicyItem) = itemSameAs(other)
|
||||||
override fun itemSameAs(other: PolicyItem) = item.uid == other.item.uid
|
override fun itemSameAs(other: PolicyItem) = item.uid == other.item.uid
|
||||||
|
|
||||||
|
@ -1,19 +1,11 @@
|
|||||||
package com.topjohnwu.magisk.model.entity.recycler
|
package com.topjohnwu.magisk.model.entity.recycler
|
||||||
|
|
||||||
import androidx.databinding.ViewDataBinding
|
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.databinding.ComparableRvItem
|
import com.topjohnwu.magisk.databinding.ComparableRvItem
|
||||||
|
|
||||||
class TextItem(val text: Int) : ComparableRvItem<TextItem>() {
|
class TextItem(val text: Int) : ComparableRvItem<TextItem>() {
|
||||||
override val layoutRes = R.layout.item_text
|
override val layoutRes = R.layout.item_text
|
||||||
|
|
||||||
override fun onBindingBound(binding: ViewDataBinding) {
|
|
||||||
super.onBindingBound(binding)
|
|
||||||
val params = binding.root.layoutParams as? StaggeredGridLayoutManager.LayoutParams
|
|
||||||
params?.isFullSpan = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun contentSameAs(other: TextItem) = text == other.text
|
override fun contentSameAs(other: TextItem) = text == other.text
|
||||||
override fun itemSameAs(other: TextItem) = contentSameAs(other)
|
override fun itemSameAs(other: TextItem) = contentSameAs(other)
|
||||||
}
|
}
|
@ -8,15 +8,14 @@ import android.view.MenuItem
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.databinding.FragmentModuleMd2Binding
|
import com.topjohnwu.magisk.databinding.FragmentModuleMd2Binding
|
||||||
import com.topjohnwu.magisk.ktx.hideKeyboard
|
import com.topjohnwu.magisk.ktx.hideKeyboard
|
||||||
import com.topjohnwu.magisk.model.events.InstallExternalModuleEvent
|
import com.topjohnwu.magisk.model.events.InstallExternalModuleEvent
|
||||||
import com.topjohnwu.magisk.model.events.ViewEvent
|
import com.topjohnwu.magisk.model.events.ViewEvent
|
||||||
import com.topjohnwu.magisk.ui.MainActivity
|
import com.topjohnwu.magisk.ui.MainActivity
|
||||||
import com.topjohnwu.magisk.ui.base.ReselectionTarget
|
|
||||||
import com.topjohnwu.magisk.ui.base.BaseUIFragment
|
import com.topjohnwu.magisk.ui.base.BaseUIFragment
|
||||||
|
import com.topjohnwu.magisk.ui.base.ReselectionTarget
|
||||||
import com.topjohnwu.magisk.utils.EndlessRecyclerScrollListener
|
import com.topjohnwu.magisk.utils.EndlessRecyclerScrollListener
|
||||||
import com.topjohnwu.magisk.utils.MotionRevealHelper
|
import com.topjohnwu.magisk.utils.MotionRevealHelper
|
||||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||||
@ -112,12 +111,7 @@ class ModuleFragment : BaseUIFragment<ModuleViewModel, FragmentModuleMd2Binding>
|
|||||||
|
|
||||||
override fun onReselected() {
|
override fun onReselected() {
|
||||||
binding.moduleList
|
binding.moduleList
|
||||||
.takeIf {
|
.also { it.scrollToPosition(10) }
|
||||||
(it.layoutManager as? StaggeredGridLayoutManager)?.let {
|
|
||||||
it.findFirstVisibleItemPositions(IntArray(it.spanCount)).min()
|
|
||||||
} ?: 0 > 10
|
|
||||||
}
|
|
||||||
?.also { it.scrollToPosition(10) }
|
|
||||||
.let { binding.moduleList }
|
.let { binding.moduleList }
|
||||||
.also { it.post { it.smoothScrollToPosition(0) } }
|
.also { it.post { it.smoothScrollToPosition(0) } }
|
||||||
}
|
}
|
||||||
|
@ -54,8 +54,8 @@ class EndlessRecyclerScrollListener(
|
|||||||
|
|
||||||
val visibleItemPosition = if (direction == Direction.BOTTOM) {
|
val visibleItemPosition = if (direction == Direction.BOTTOM) {
|
||||||
when (layoutManager) {
|
when (layoutManager) {
|
||||||
is StaggeredGridLayoutManager -> layoutManager.findLastVisibleItemPositions(null).max()
|
is StaggeredGridLayoutManager ->
|
||||||
?: 0
|
layoutManager.findLastVisibleItemPositions(null).max() ?: 0
|
||||||
is GridLayoutManager -> layoutManager.findLastVisibleItemPosition()
|
is GridLayoutManager -> layoutManager.findLastVisibleItemPosition()
|
||||||
is LinearLayoutManager -> layoutManager.findLastVisibleItemPosition()
|
is LinearLayoutManager -> layoutManager.findLastVisibleItemPosition()
|
||||||
else -> throw IllegalArgumentException("Only LinearLayoutManager, GridLayoutManager and StaggeredGridLayoutManager are supported")
|
else -> throw IllegalArgumentException("Only LinearLayoutManager, GridLayoutManager and StaggeredGridLayoutManager are supported")
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
android:paddingStart="@dimen/l1"
|
android:paddingStart="@dimen/l1"
|
||||||
android:paddingTop="@{viewModel.insets.top + (int) @dimen/internal_action_bar_size + (int) @dimen/l1}"
|
android:paddingTop="@{viewModel.insets.top + (int) @dimen/internal_action_bar_size + (int) @dimen/l1}"
|
||||||
android:paddingBottom="@{viewModel.insets.bottom + (int) @dimen/l2}"
|
android:paddingBottom="@{viewModel.insets.bottom + (int) @dimen/l2}"
|
||||||
app:layoutManager="androidx.recyclerview.widget.StaggeredGridLayoutManager"
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
app:spanCount="2"
|
app:spanCount="2"
|
||||||
tools:layout_marginTop="24dp"
|
tools:layout_marginTop="24dp"
|
||||||
tools:listitem="@layout/item_policy_md2"
|
tools:listitem="@layout/item_policy_md2"
|
||||||
|
Loading…
Reference in New Issue
Block a user