【问题标题】:Android ProgressBar countdownAndroid ProgressBar 倒计时
【发布时间】:2012-05-01 18:25:36
【问题描述】:

我正在针对 Android 进行测验,我希望在有限的时间内回答每个问题。因此,我想在从 5 到 0(秒)倒计时的答案下方显示 ProgressBar。当它达到零时,我想做一些事情。我有测验,一切正常,我只想添加 ProgressBar。

提前致谢!

【问题讨论】:

    标签: android progress-bar countdown


    【解决方案1】:

    你可以在android中使用倒数计时器。

    这里有一个例子你可以参考Click Here

    您可以在 Activity 中使用下方的 ProgressBar。

       <ProgressBar 
        android:id="@+id/progressbar"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:max="100"
        android:progress="0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bottom_header_relativelayout"
        />
    

    在您的活动中使用CountDownTimer Like 下面的代码。

    ProgressBar mProgressBar;
    CountDownTimer mCountDownTimer;
    int i=0;
    
    mProgressBar=(ProgressBar)findViewById(R.id.progressbar);
    mProgressBar.setProgress(i);
       mCountDownTimer=new CountDownTimer(5000,1000) {
    
            @Override
            public void onTick(long millisUntilFinished) {
                Log.v("Log_tag", "Tick of Progress"+ i+ millisUntilFinished);
                i++;
                mProgressBar.setProgress((int)i*100/(5000/1000));
    
            }
    
            @Override
            public void onFinish() {
            //Do what you want 
                i++;
                mProgressBar.setProgress(100);
            }
        };
        mCountDownTimer.start();
    

    【讨论】:

    • 这适用于 ProgressBar 吗?因为这就是我想要显示它的方式。
    • 你想在 xml 布局上显示它吗,我的意思是你不想用 Progress Right 弹出。
    • 如何让它更流畅?因为现在需要 5 大步骤。
    • 勾选更平滑的意思,进度显示逐步递增。您在进度更新中遇到问题,请告诉我您使用的代码。
    • @hasnain_ahmad 要显示 1 秒的进度,您需要更改新的 CountDownTimer(1000,10),它将每 10 毫秒调用一次。
    【解决方案2】:

    无需 XML 声明

    ProgressDialog TempDialog;
    CountDownTimer CDT;
    int i =5;
    
    TempDialog = new ProgressDialog(Your_Class_Name.this);
    TempDialog.setMessage("Please wait...");
    TempDialog.setCancelable(false);
    TempDialog.setProgress(i);
    TempDialog.show();
    
    CDT = new CountDownTimer(5000, 1000)
    {
        public void onTick(long millisUntilFinished)
        {
            TempDialog.setMessage("Please wait.." + i + " sec");
            i--;
        }
    
        public void onFinish()
        {
            TempDialog.dismiss();
            //Your Code ...
        }
    }.start();
    

    【讨论】:

      【解决方案3】:

      您可以使用ObjectAnimator 为ProgressBar 的进度设置动画:

      ObjectAnimator animation = ObjectAnimator.ofInt(pb, "progress", 0, 100);
      animation.setDuration(5000);
      animation.setInterpolator(new DecelerateInterpolator());
      animation.addListener(new Animator.AnimatorListener() {
          @Override
          public void onAnimationStart(Animator animator) { }
      
          @Override
          public void onAnimationEnd(Animator animator) {
              //do something when the countdown is complete
          }
      
          @Override
          public void onAnimationCancel(Animator animator) { }
      
          @Override
          public void onAnimationRepeat(Animator animator) { }
      });
      animation.start();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-18
        • 1970-01-01
        相关资源
        最近更新 更多