mirror of
				https://github.com/SimpleMobileTools/Simple-Gallery.git
				synced 2025-06-05 21:59:19 +02:00 
			
		
		
		
	remove the static variables from MyScalableRecyclerView
This commit is contained in:
		| @@ -134,7 +134,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { | |||||||
|         mStoredAnimateGifs = config.animateGifs |         mStoredAnimateGifs = config.animateGifs | ||||||
|         mStoredCropThumbnails = config.cropThumbnails |         mStoredCropThumbnails = config.cropThumbnails | ||||||
|         mStoredScrollHorizontally = config.scrollHorizontally |         mStoredScrollHorizontally = config.scrollHorizontally | ||||||
|         MyScalableRecyclerView.mListener = null |         directories_grid.listener = null | ||||||
|         mLastMediaHandler.removeCallbacksAndMessages(null) |         mLastMediaHandler.removeCallbacksAndMessages(null) | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -242,7 +242,7 @@ class MainActivity : SimpleActivity(), DirectoryAdapter.DirOperationsListener { | |||||||
|         directories_grid.isDragSelectionEnabled = true |         directories_grid.isDragSelectionEnabled = true | ||||||
|         directories_grid.isZoomingEnabled = true |         directories_grid.isZoomingEnabled = true | ||||||
|         layoutManager.spanCount = config.dirColumnCnt |         layoutManager.spanCount = config.dirColumnCnt | ||||||
|         MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.MyScalableRecyclerViewListener { |         directories_grid.listener = object : MyScalableRecyclerView.MyScalableRecyclerViewListener { | ||||||
|             override fun zoomIn() { |             override fun zoomIn() { | ||||||
|                 if (layoutManager.spanCount > 1) { |                 if (layoutManager.spanCount > 1) { | ||||||
|                     reduceColumnCount() |                     reduceColumnCount() | ||||||
|   | |||||||
| @@ -102,7 +102,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { | |||||||
|         mStoredAnimateGifs = config.animateGifs |         mStoredAnimateGifs = config.animateGifs | ||||||
|         mStoredCropThumbnails = config.cropThumbnails |         mStoredCropThumbnails = config.cropThumbnails | ||||||
|         mStoredScrollHorizontally = config.scrollHorizontally |         mStoredScrollHorizontally = config.scrollHorizontally | ||||||
|         MyScalableRecyclerView.mListener = null |         media_grid.listener = null | ||||||
|         mLastMediaHandler.removeCallbacksAndMessages(null) |         mLastMediaHandler.removeCallbacksAndMessages(null) | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -318,7 +318,7 @@ class MediaActivity : SimpleActivity(), MediaAdapter.MediaOperationsListener { | |||||||
|         media_grid.isDragSelectionEnabled = true |         media_grid.isDragSelectionEnabled = true | ||||||
|         media_grid.isZoomingEnabled = true |         media_grid.isZoomingEnabled = true | ||||||
|         layoutManager.spanCount = config.mediaColumnCnt |         layoutManager.spanCount = config.mediaColumnCnt | ||||||
|         MyScalableRecyclerView.mListener = object : MyScalableRecyclerView.MyScalableRecyclerViewListener { |         media_grid.listener = object : MyScalableRecyclerView.MyScalableRecyclerViewListener { | ||||||
|             override fun zoomIn() { |             override fun zoomIn() { | ||||||
|                 if (layoutManager.spanCount > 1) { |                 if (layoutManager.spanCount > 1) { | ||||||
|                     reduceColumnCount() |                     reduceColumnCount() | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|     private val AUTO_SCROLL_DELAY = 25L |     private val AUTO_SCROLL_DELAY = 25L | ||||||
|     var isZoomingEnabled = false |     var isZoomingEnabled = false | ||||||
|     var isDragSelectionEnabled = false |     var isDragSelectionEnabled = false | ||||||
|  |     var listener: MyScalableRecyclerViewListener? = null | ||||||
|  |  | ||||||
|     private var mScaleDetector: ScaleGestureDetector |     private var mScaleDetector: ScaleGestureDetector | ||||||
|  |  | ||||||
| @@ -35,11 +36,8 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|     private var inTopHotspot = false |     private var inTopHotspot = false | ||||||
|     private var inBottomHotspot = false |     private var inBottomHotspot = false | ||||||
|  |  | ||||||
|     companion object { |     private var currScaleFactor = 1.0f | ||||||
|         var mListener: MyScalableRecyclerViewListener? = null |     private var lastUp = 0L    // allow only pinch zoom, not double tap | ||||||
|         var mCurrScaleFactor = 1.0f |  | ||||||
|         var mLastUp = 0L    // allow only pinch zoom, not double tap |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     constructor(context: Context) : super(context) |     constructor(context: Context) : super(context) | ||||||
|  |  | ||||||
| @@ -47,7 +45,20 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|  |  | ||||||
|     init { |     init { | ||||||
|         hotspotHeight = context.resources.getDimensionPixelSize(R.dimen.dragselect_hotspot_height) |         hotspotHeight = context.resources.getDimensionPixelSize(R.dimen.dragselect_hotspot_height) | ||||||
|         mScaleDetector = ScaleGestureDetector(context, GestureListener()) |  | ||||||
|  |         val gestureListener = object : MyGestureListenerInterface { | ||||||
|  |             override fun getLastUp() = lastUp | ||||||
|  |  | ||||||
|  |             override fun getScaleFactor() = currScaleFactor | ||||||
|  |  | ||||||
|  |             override fun setScaleFactor(value: Float) { | ||||||
|  |                 currScaleFactor = value | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             override fun getMainListener() = listener | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         mScaleDetector = ScaleGestureDetector(context, GestureListener(gestureListener)) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     override fun onMeasure(widthSpec: Int, heightSpec: Int) { |     override fun onMeasure(widthSpec: Int, heightSpec: Int) { | ||||||
| @@ -83,8 +94,8 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|                 inTopHotspot = false |                 inTopHotspot = false | ||||||
|                 inBottomHotspot = false |                 inBottomHotspot = false | ||||||
|                 autoScrollHandler.removeCallbacks(autoScrollRunnable) |                 autoScrollHandler.removeCallbacks(autoScrollRunnable) | ||||||
|                 mCurrScaleFactor = 1.0f |                 currScaleFactor = 1.0f | ||||||
|                 mLastUp = System.currentTimeMillis() |                 lastUp = System.currentTimeMillis() | ||||||
|                 return true |                 return true | ||||||
|             } |             } | ||||||
|  |  | ||||||
| @@ -139,7 +150,7 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|                             minReached = lastDraggedIndex |                             minReached = lastDraggedIndex | ||||||
|                         } |                         } | ||||||
|  |  | ||||||
|                         mListener?.selectRange(initialSelection, lastDraggedIndex, minReached, maxReached) |                         listener?.selectRange(initialSelection, lastDraggedIndex, minReached, maxReached) | ||||||
|  |  | ||||||
|                         if (initialSelection == lastDraggedIndex) { |                         if (initialSelection == lastDraggedIndex) { | ||||||
|                             minReached = lastDraggedIndex |                             minReached = lastDraggedIndex | ||||||
| @@ -166,7 +177,7 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|         maxReached = -1 |         maxReached = -1 | ||||||
|         this.initialSelection = initialSelection |         this.initialSelection = initialSelection | ||||||
|         dragSelectActive = true |         dragSelectActive = true | ||||||
|         mListener?.selectItem(initialSelection) |         listener?.selectItem(initialSelection) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private fun getItemPosition(e: MotionEvent): Int { |     private fun getItemPosition(e: MotionEvent): Int { | ||||||
| @@ -181,21 +192,23 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     class GestureListener : ScaleGestureDetector.SimpleOnScaleGestureListener() { |     class GestureListener(val gestureListener: MyGestureListenerInterface) : ScaleGestureDetector.SimpleOnScaleGestureListener() { | ||||||
|         private val ZOOM_IN_THRESHOLD = -0.4f |         private val ZOOM_IN_THRESHOLD = -0.4f | ||||||
|         private val ZOOM_OUT_THRESHOLD = 0.15f |         private val ZOOM_OUT_THRESHOLD = 0.15f | ||||||
|  |  | ||||||
|         override fun onScale(detector: ScaleGestureDetector): Boolean { |         override fun onScale(detector: ScaleGestureDetector): Boolean { | ||||||
|             if (System.currentTimeMillis() - mLastUp < 1000) |             gestureListener.apply { | ||||||
|  |                 if (System.currentTimeMillis() - getLastUp() < 1000) | ||||||
|                     return false |                     return false | ||||||
|  |  | ||||||
|             val diff = mCurrScaleFactor - detector.scaleFactor |                 val diff = getScaleFactor() - detector.scaleFactor | ||||||
|             if (diff < ZOOM_IN_THRESHOLD && mCurrScaleFactor == 1.0f) { |                 if (diff < ZOOM_IN_THRESHOLD && getScaleFactor() == 1.0f) { | ||||||
|                 mListener?.zoomIn() |                     getMainListener()?.zoomIn() | ||||||
|                 mCurrScaleFactor = detector.scaleFactor |                     setScaleFactor(detector.scaleFactor) | ||||||
|             } else if (diff > ZOOM_OUT_THRESHOLD && mCurrScaleFactor == 1.0f) { |                 } else if (diff > ZOOM_OUT_THRESHOLD && getScaleFactor() == 1.0f) { | ||||||
|                 mListener?.zoomOut() |                     getMainListener()?.zoomOut() | ||||||
|                 mCurrScaleFactor = detector.scaleFactor |                     setScaleFactor(detector.scaleFactor) | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|             return false |             return false | ||||||
|         } |         } | ||||||
| @@ -210,4 +223,14 @@ class MyScalableRecyclerView : RecyclerView { | |||||||
|  |  | ||||||
|         fun selectRange(initialSelection: Int, lastDraggedIndex: Int, minReached: Int, maxReached: Int) |         fun selectRange(initialSelection: Int, lastDraggedIndex: Int, minReached: Int, maxReached: Int) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     interface MyGestureListenerInterface { | ||||||
|  |         fun getLastUp(): Long | ||||||
|  |  | ||||||
|  |         fun getScaleFactor(): Float | ||||||
|  |  | ||||||
|  |         fun setScaleFactor(value: Float) | ||||||
|  |  | ||||||
|  |         fun getMainListener(): MyScalableRecyclerViewListener? | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user