Snippets

Семен Величко PaginationProgressDrawer

Updated by Семен Величко

File PaginationProgressDrawer.kt Modified

  • Ignore whitespace
  • Hide word diff
 private const val RADIUS = 30f
 private const val MARGIN_BOTTOM = 40f
 
-@Suppress("MagicNumber", "UseIfInsteadOfWhen")
 internal object PaginationProgressDrawer {
 
     private val oval = RectF()
Updated by Семен Величко

File PaginationProgressDrawer.kt Modified

  • Ignore whitespace
  • Hide word diff
 private const val RADIUS = 30f
-private const val MARGIN_BOTTOM = 80f
+private const val MARGIN_BOTTOM = 40f
 
+@Suppress("MagicNumber", "UseIfInsteadOfWhen")
 internal object PaginationProgressDrawer {
 
     private val oval = RectF()
             sweepAngle > 40f && sweepAngle <= 60f -> 2.2f
             sweepAngle > 60f && sweepAngle <= 80f -> 2.4f
             sweepAngle > 80f && sweepAngle <= 100f -> 2.5f
-            sweepAngle > 100f && sweepAngle <= 180f -> 2.6f  
+            sweepAngle > 100f && sweepAngle <= 180f -> 2.6f
             sweepAngle > 180f && sweepAngle <= 200f -> 2.4f
             sweepAngle > 200f && sweepAngle <= 220f -> 2.2f
             sweepAngle > 220f && sweepAngle <= 240f -> 2.1f
         isAntiAlias = true
     }
 
-    fun drawSpinner(recyclerView: RecyclerView, canvas: Canvas) {
+    fun drawSpinner(recyclerView: RecyclerView, view: View?, canvas: Canvas) {
+        if (view == null) return
 
-        val coorX = (recyclerView.right / 2).toFloat()
-        val coorY = recyclerView.bottom.toFloat() - MARGIN_BOTTOM
+        val coorX = (view.right / 2).toFloat()
+        val coorY = view.bottom.toFloat() + MARGIN_BOTTOM
         val ovalDiameter = RADIUS * 2
 
-        setPaintColor(recyclerView.context)
+        setPaintColor(view.context)
         oval.set(coorX, coorY, coorX + ovalDiameter, coorY + ovalDiameter)
         calculateStartAngle()
         calculateSweepAngle()
Updated by Семен Величко

File PaginationProgressDrawer.kt Modified

  • Ignore whitespace
  • Hide word diff
 internal object PaginationProgressDrawer {
 
     private val oval = RectF()
-    private var speed = 1f
     private var sweepStep = 4
     private var startAngle = 0f
     private var sweepAngle = 10f
     private var isIncrement = true
     private var shouldFreeze = false
     private var freezeCount = 0
-    private val rangeFrom0to20 = (0f..20f).contains(sweepAngle)
-    private val rangeFrom20to40 = (20f..40f).contains(sweepAngle)
-    private val rangeFrom40to60 = (40f..60f).contains(sweepAngle)
-    private val rangeFrom60to80 = (60f..80f).contains(sweepAngle)
-    private val rangeFrom80to100 = (80f..100f).contains(sweepAngle)
-    private val rangeFrom100to180 = (100f..180f).contains(sweepAngle)
-    private val rangeFrom180to200 = (180f..200f).contains(sweepAngle)
-    private val rangeFrom200to220 = (200f..220f).contains(sweepAngle)
-    private val rangeFrom220to240 = (220f..240f).contains(sweepAngle)
-    private val rangeFrom240to260 = (240f..260f).contains(sweepAngle)
-    private val rangeFrom260to280 = (260f..280f).contains(sweepAngle)
+    private val speed: Float
+        get() = when {
+            sweepAngle >= 0f && sweepAngle <= 20f -> 1.5f
+            sweepAngle > 20f && sweepAngle <= 40f -> 1.6f
+            sweepAngle > 40f && sweepAngle <= 60f -> 2.2f
+            sweepAngle > 60f && sweepAngle <= 80f -> 2.4f
+            sweepAngle > 80f && sweepAngle <= 100f -> 2.5f
+            sweepAngle > 100f && sweepAngle <= 180f -> 2.6f  
+            sweepAngle > 180f && sweepAngle <= 200f -> 2.4f
+            sweepAngle > 200f && sweepAngle <= 220f -> 2.2f
+            sweepAngle > 220f && sweepAngle <= 240f -> 2.1f
+            sweepAngle > 240f && sweepAngle <= 260f -> 1.6f
+            sweepAngle > 260f && sweepAngle <= 280f -> 1.5f
+            else -> 1f
+        }
+
 
     private val paint = Paint().apply {
         strokeWidth = 18.dp.toFloat()
             return
         }
 
-        speed = getSpeed()
-
         when (isIncrement) {
             true -> sweepAngle += sweepStep * speed
             else -> sweepAngle -= sweepStep * speed
             }
         }
     }
-
-    private fun getSpeed(): Float {
-        return when {
-            rangeFrom0to20 -> 1.5f
-            rangeFrom20to40 -> 1.6f
-            rangeFrom40to60 -> 2.2f
-            rangeFrom60to80 -> 2.4f
-            rangeFrom80to100 -> 2.5f
-            rangeFrom100to180 -> 2.6f
-            rangeFrom180to200 -> 2.4f
-            rangeFrom200to220 -> 2.2f
-            rangeFrom220to240 -> 2.1f
-            rangeFrom240to260 -> 1.6f
-            rangeFrom260to280 -> 1.5f
-            else -> 1f
-        }
-    }
 }
Updated by Семен Величко

File PaginationProgressDrawer.kt Modified

  • Ignore whitespace
  • Hide word diff
-import android.content.Context
-import android.graphics.Canvas
-import android.graphics.Paint
-import android.graphics.RectF
-import androidx.recyclerview.widget.RecyclerView
-import com.jitjatjo.android.core.extensions.getColorFromAttr
-import com.jitjatjo.android.ui.R
-import com.jitjatjo.android.ui.extensions.dp
-
 private const val RADIUS = 30f
 private const val MARGIN_BOTTOM = 80f
 
Updated by Семен Величко

File PaginationProgressDrawer.kt Modified

  • Ignore whitespace
  • Hide word diff
-package com.jitjatjo.android.ui.view.recycler
-
 import android.content.Context
 import android.graphics.Canvas
 import android.graphics.Paint
  1. 1
  2. 2
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.