为了账号安全,请及时绑定邮箱和手机立即绑定

当我的 Progressbar 达到最大值时,如何重置它并给它新的值?

当我的 Progressbar 达到最大值时,如何重置它并给它新的值?

繁花如伊 2023-03-31 17:01:08
我正在制作一个唱首歌游戏,您可以在其中点击一个按钮来增加能量。当我的进度条达到最大值时,它会重置并将最大值设置为下一个更高的值(一切正常)。但是当我再次点击时,进度会增加旧的最大值,但之后它会正常继续。我不知道如何解决这个问题public class MainActivity extends AppCompatActivity {    public int MinPoints = 0;    public int MaxPointsSSJ = 10;    public int MaxPointsSSJ2 = 20;    public int MaxPointsSSJ3 = 50;    public int Progress;    private void checker(int currentPoints, int maxPoints, intnewmaxPoints, ImageView anzeige, int bild, ProgressBar pb){        if (currentPoints == maxPoints)            maxPoints = newmaxPoints;            pb.setMax(newmaxPoints);            anzeige.setImageResource(bild);            pb.setProgress(currentPoints - maxPoints);            }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        final ImageView Anzeige = (ImageView) findViewById(R.id.imageView);        final ProgressBar KiAnzeige = (ProgressBar) findViewById  (R.id.progressBar);        Button MehrEnergie = (Button) findViewById(R.id.button);    KiAnzeige.setMax(MaxPointsSSJ);    KiAnzeige.setMin(MinPoints);    KiAnzeige.setProgress(0);    Progress = KiAnzeige.getProgress();    MehrEnergie.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            Progress++;            KiAnzeige.setProgress(Progress);            if (Progress == MaxPointsSSJ){                checker(Progress, MaxPointsSSJ, MaxPointsSSJ2, Anzeige, R.drawable.goku_ssj1, KiAnzeige);            }        if (Progress == MaxPointsSSJ2){            checker(Progress, MaxPointsSSJ2, MaxPointsSSJ3, Anzeige, R.drawable.goku_ssj2, KiAnzeige);        }        }    });}}
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

设置你的progressbar inderminate state,这样它会无限显示进度。

KiAnzeige.setIndeterminate(true);


查看完整回答
反对 回复 2023-03-31
?
呼唤远方

TA贡献1856条经验 获得超11个赞

您的OnClick函数将进度条进度递增 1,但在您的checker函数中,您将进度条进度设置为 0,因为 currentPoints 等于 maxPoints。

所以在 中OnClick,它看起来像 1/10、2/10、3/10、... 10/10,然后触发checker,将其设置为 0/20,然后返回到OnClick继续为 11/ 的位置20、12/20、13/20 等

您可以通过将最大值更改为新最大值与旧最大值之间的差值然后将 Progress 设置回 0 或在设置进度时考虑差值来解决此问题。

currentPoints或者,如果您希望进度条“加宽”以便仍然显示之前的点击,但进度条的比例增加了,您可以在函数中设置进度条checker


查看完整回答
反对 回复 2023-03-31
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

尝试这个


MehrEnergie.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            ++Progress;

            KiAnzeige.setProgress(Progress);

            if (Progress == MaxPointsSSJ){

                checker(Progress, MaxPointsSSJ, MaxPointsSSJ2, Anzeige, R.drawable.goku_ssj1, KiAnzeige);

            }

        if (Progress == MaxPointsSSJ2){

            checker(Progress, MaxPointsSSJ2, MaxPointsSSJ3, Anzeige, R.drawable.goku_ssj2, KiAnzeige);

        }

        }

    });


查看完整回答
反对 回复 2023-03-31
  • 3 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信