Java 当Progressbar达到最大值时,如何重置Progressbar并为其提供新值?
我正在做一个点击游戏,你点击一个按钮来增加你的能量。 当我的Progressbar达到最大值时,它会重置并将最大值设置为下一个更高的值(一切正常)。 但当我再次点击时,进度会增加原来的最大值,但之后它会正常继续。 我不知道怎么解决这个问题Java 当Progressbar达到最大值时,如何重置Progressbar并为其提供新值?,java,android,progress-bar,Java,Android,Progress Bar,我正在做一个点击游戏,你点击一个按钮来增加你的能量。 当我的Progressbar达到最大值时,它会重置并将最大值设置为下一个更高的值(一切正常)。 但当我再次点击时,进度会增加原来的最大值,但之后它会正常继续。 我不知道怎么解决这个问题 public class MainActivity extends AppCompatActivity { public int MinPoints = 0; public int MaxPointsSSJ = 10; public
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);
}
}
});
}
}试试这个
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);
}
}
});
将progressbar设置为InDeminate状态,使其显示无限进度
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。。。等等
您可以通过将最大值更改为新最大值和旧最大值之间的差值,然后将进度设置回0,或者在设置进度时考虑差值来解决此问题
或者,如果您希望进度条“加宽”,以便仍然显示以前的单击,但进度条的比例增加,您可以在
checker
功能中将进度设置为currentPoints
。可以尝试创建一个新的进度条实例