mirror of
https://github.com/topjohnwu/Magisk.git
synced 2026-01-17 07:12:32 -08:00
Removed grid scale gestures and reverted back to * simple list as a default
* disgusting (:
This commit is contained in:
committed by
John Wu
parent
740559e3bc
commit
e9fc40d285
@@ -23,9 +23,7 @@ import androidx.databinding.InverseBindingAdapter
|
||||
import androidx.databinding.InverseBindingListener
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.*
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import com.google.android.material.card.MaterialCardView
|
||||
@@ -485,4 +483,12 @@ fun View.setPopupMenu(popupMenu: Int, listener: OnPopupMenuItemClickListener) {
|
||||
setOnClickListener {
|
||||
(tag as PopupMenu).show()
|
||||
}
|
||||
}
|
||||
|
||||
@BindingAdapter("spanCount")
|
||||
fun RecyclerView.setSpanCount(count: Int) {
|
||||
when (val lama = layoutManager) {
|
||||
is GridLayoutManager -> lama.spanCount = count
|
||||
is StaggeredGridLayoutManager -> lama.spanCount = count
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.topjohnwu.magisk.utils
|
||||
|
||||
import android.view.ScaleGestureDetector
|
||||
|
||||
abstract class PinchGestureCallback : ScaleGestureDetector.SimpleOnScaleGestureListener() {
|
||||
|
||||
private var startFactor: Float = 1f
|
||||
|
||||
override fun onScaleBegin(detector: ScaleGestureDetector?): Boolean {
|
||||
startFactor = detector?.scaleFactor ?: 1f
|
||||
return super.onScaleBegin(detector)
|
||||
}
|
||||
|
||||
override fun onScaleEnd(detector: ScaleGestureDetector?) {
|
||||
val endFactor = detector?.scaleFactor ?: 1f
|
||||
|
||||
if (endFactor > startFactor) onZoom()
|
||||
else if (endFactor < startFactor) onPinch()
|
||||
}
|
||||
|
||||
abstract fun onPinch()
|
||||
abstract fun onZoom()
|
||||
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
package com.topjohnwu.magisk.utils
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.view.MotionEvent
|
||||
import android.view.ScaleGestureDetector
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
||||
import androidx.transition.TransitionManager
|
||||
import com.topjohnwu.magisk.core.Config
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
class PinchZoomTouchListener private constructor(
|
||||
private val view: RecyclerView,
|
||||
private val max: Int = 3,
|
||||
private val min: Int = 1
|
||||
) : View.OnTouchListener {
|
||||
|
||||
private val layoutManager
|
||||
get() = view.layoutManager
|
||||
|
||||
private val pinchListener = object : PinchGestureCallback() {
|
||||
override fun onPinch() = updateSpanCount(Config.listSpanCount + 1)
|
||||
override fun onZoom() = updateSpanCount(Config.listSpanCount - 1)
|
||||
}
|
||||
|
||||
private val gestureDetector by lazy { ScaleGestureDetector(view.context, pinchListener) }
|
||||
|
||||
init {
|
||||
updateSpanCount(Config.listSpanCount, false)
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
|
||||
gestureDetector.onTouchEvent(event)
|
||||
return false
|
||||
}
|
||||
|
||||
private fun updateSpanCount(count: Int, animate: Boolean = true) {
|
||||
if (animate) {
|
||||
TransitionManager.beginDelayedTransition(view)
|
||||
}
|
||||
|
||||
val boundCount = max(min, min(max, count))
|
||||
|
||||
when (val l = layoutManager) {
|
||||
is StaggeredGridLayoutManager -> l.spanCount = boundCount
|
||||
is GridLayoutManager -> l.spanCount = boundCount
|
||||
else -> Unit
|
||||
}
|
||||
|
||||
Config.listSpanCount = boundCount
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
fun attachTo(view: RecyclerView) = view.setOnTouchListener(PinchZoomTouchListener(view))
|
||||
|
||||
fun clear(view: View) = view.setOnTouchListener(null)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user