2

无论如何都知道进度条何时达到最大值。就像一个监听器然后可以插入 ProgressBar 并让我们知道进度条处于最高级别?

亲切的问候

4

4 回答 4

11

没有直接的方法可以做到这一点。一种解决方法可能是对 ProgressBar 进行自定义实现并覆盖 setProgress 方法:

public MyProgressBar extends ProgressBar
{
   @Override
   public void setProgress(int progress)
   {
       super.setProgress(progress);
       if(progress == this.getMax())
       {
           //Do stuff when progress is max
       }
   }
}
于 2012-08-31T07:24:54.460 回答
2

我认为最干净的方法就是将其添加到您的代码中:

 if (progressBar.getProgress() == progressBar.getMax()) {
     // do stuff you need
 }
于 2016-12-01T21:34:56.810 回答
0

如果您需要onProgressChanged-SeekBar创建自定义进度(Kotlin):

class MyProgressBar : ProgressBar {

    private var listener: OnMyProgressBarChangeListener? = null

    fun setOnMyProgressBarChangeListener(l: OnMyProgressBarChangeListener) {
        listener = l
    }

    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(
        context,
        attrs
    )

    constructor(
        context: Context?,
        attrs: AttributeSet?,
        defStyleAttr: Int
    ) : super(context, attrs, defStyleAttr)

    override fun setProgress(progress: Int) {
        super.setProgress(progress)
        listener?.onProgressChanged(this)
    }

    interface OnMyProgressBarChangeListener {
        fun onProgressChanged(myProgressBar: MyProgressBar?)
    }

}

例如在你的片段中:

 progress_bar?.setOnMyProgressBarChangeListener(object :
            MyProgressBar.OnMyProgressBarChangeListener {
            override fun onProgressChanged(myProgressBar: MyProgressBar?) {
                val p = progress_bar.progress
                // do stuff like this
                if (p != 100) {
                    percentCallback?.changePercent(p.toString()) // show animation custom view with grow percents
                } else {
                    shieldView.setFinishAndDrawCheckMark() // draw check mark
                }
            }
        })
于 2019-12-23T21:16:31.990 回答
-1

我认为总的来说你不应该这样做。是否只有一种有效的情况需要您收听进度条进度?我的意思是,通常情况是相反的:您根据某事设置进度条进度,而不是相反,因此您需要跟踪该某事的进度,而不是听一个视图(视图可能存在也可能不存在)方式)。

于 2020-08-25T13:48:18.443 回答