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

我正在制作一个唱首歌游戏,您可以在其中点击一个按钮来增加能量。当我的进度条达到最大值时,它会重置并将最大值设置为下一个更高的值(一切正常)。但是当我再次点击时,进度会增加旧的最大值,但之后它会正常继续。我不知道如何解决这个问题


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, int

newmaxPoints, 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);

        }

        }

    });

}

}


繁花如伊
浏览 197回答 3
3回答

Qyouu

设置你的progressbar inderminate state,这样它会无限显示进度。KiAnzeige.setIndeterminate(true);

呼唤远方

您的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。

猛跑小猪

尝试这个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);        }        }    });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java