Skip to content

Commit a39dfac

Browse files
authored
feat[#5]: onProgressStepChange receive value greater than progressCount (#8)
* fix[#5]: onProgressStepChange receive value greater than progressCount * feat[#5]: added new finish listener instead of step listener call for last value
1 parent ea89ead commit a39dfac

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

app/src/main/java/com/genius/multiprogressbarexample/MainActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@ import android.util.Log
66
import android.view.View
77
import com.genius.multiprogressbar.MultiProgressBar
88

9-
class MainActivity : AppCompatActivity(R.layout.activity_main), MultiProgressBar.ProgressStepChangeListener, View.OnClickListener {
9+
class MainActivity : AppCompatActivity(R.layout.activity_main), MultiProgressBar.ProgressStepChangeListener,
10+
View.OnClickListener, MultiProgressBar.ProgressFinishListener {
1011

1112
private val progressBar: MultiProgressBar by lazy { findViewById(R.id.mpb_main) }
1213

1314
override fun onCreate(savedInstanceState: Bundle?) {
1415
super.onCreate(savedInstanceState)
1516

1617
progressBar.setListener(this)
18+
progressBar.setFinishListener(this)
1719
}
1820

1921
override fun onClick(v: View?) {
@@ -31,4 +33,8 @@ class MainActivity : AppCompatActivity(R.layout.activity_main), MultiProgressBar
3133
override fun onProgressStepChange(newStep: Int) {
3234
Log.d("STEP", "Current step is $newStep")
3335
}
36+
37+
override fun onProgressFinished() {
38+
Log.d("PROGRESS", "Progress finished")
39+
}
3440
}

multiprogressbar/src/main/java/com/genius/multiprogressbar/MultiProgressBar.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class MultiProgressBar @JvmOverloads constructor(
3636
private var singleDisplayedTime: Float = 1F
3737

3838
private var stepChangeListener: ProgressStepChangeListener? = null
39+
private var finishListener: ProgressFinishListener? = null
3940
private var progressPercents: Int
4041

4142
private var currentAbsoluteProgress = 0F
@@ -156,6 +157,10 @@ class MultiProgressBar @JvmOverloads constructor(
156157
this.stepChangeListener = stepChangeListener
157158
}
158159

160+
fun setFinishListener(finishListener: ProgressFinishListener) {
161+
this.finishListener = finishListener
162+
}
163+
159164
fun setProgressStepsCount(progressSteps: Int) {
160165
internalSetProgressStepsCount(progressSteps)
161166
}
@@ -253,9 +258,11 @@ class MultiProgressBar @JvmOverloads constructor(
253258
val value = animator.animatedValue as Float
254259
isProgressIsRunning = value != maxValue
255260

256-
if ((value / progressPercents).toInt() != displayedStepForListener) {
261+
if ((value / progressPercents).toInt() != displayedStepForListener && value != maxValue) {
257262
displayedStepForListener = (value / progressPercents).toInt()
258263
stepChangeListener?.onProgressStepChange(displayedStepForListener)
264+
} else if (value == maxValue) {
265+
finishListener?.onProgressFinished()
259266
}
260267

261268
if (isProgressIsRunning) {
@@ -315,6 +322,10 @@ class MultiProgressBar @JvmOverloads constructor(
315322
fun onProgressStepChange(newStep: Int)
316323
}
317324

325+
interface ProgressFinishListener {
326+
fun onProgressFinished()
327+
}
328+
318329
companion object {
319330
private const val MIN_PADDING = 8F
320331
}

0 commit comments

Comments
 (0)