Отображение прогресса с помощью RatingBar
Я получил этот экран трекера, который отслеживает дни тренировок пользователей и завершенные тренировочные наборы. Я хотел бы добавить ProgressBar
или же RatingBar
это показывает какой-то прогресс / рейтинг за счет увеличения моего счетчика.
Допустим, что 5 звезд или полный ProgressBar
будет, когда counter2 достигает 300 (counter2 (тренировки завершены)).
Мой текущий код:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
a = new AlphaAnimation(1, 0);
a.setDuration(120);
if (savedInstanceState == null) {
counter1 = 0;
counter2 = 0;
}
setContentView(R.layout.tracker);
counter1 = 0;
counter2 = 0;
add1 = (Button) findViewById(R.id.baddday);
sub1 = (Button) findViewById(R.id.bsubday);
add2 = (Button) findViewById(R.id.baddset);
sub2 = (Button) findViewById(R.id.bsubset);
list = (Button) findViewById(R.id.blist);
bar = (ProgressBar) findViewById(R.id.progressBar1);
display1 = (TextView) findViewById(R.id.tvDisplayDays);
display2 = (TextView) findViewById(R.id.tvDisplaySets);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/tele.ttf");
display1.setTypeface(tf);
display2.setTypeface(tf);
add1.setOnClickListener(this);
sub1.setOnClickListener(this);
add2.setOnClickListener(this);
sub2.setOnClickListener(this);
list.setOnClickListener(this);
SharedPreferences setting = getSharedPreferences("countersetting", 0);
counter1 = setting.getInt("countervalue1", 0);
counter2 = setting.getInt("countervalue2", 0);
display1.setText("" + counter1);
display2.setText("" + counter2);
bar.setProgress(counter2);
}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putString("YourTextViewTextIdentifier1", display1
.getText().toString());
savedInstanceState.putString("YourTextViewTextIdentifier2", display2
.getText().toString());
savedInstanceState.putInt("int", counter1);
savedInstanceState.putInt("int", counter2);
super.onSaveInstanceState(savedInstanceState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
display1.setText(savedInstanceState
.getString("YourTextViewTextIdentifier1"));
display2.setText(savedInstanceState
.getString("YourTextViewTextIdentifier2"));
counter1 = savedInstanceState.getInt("int");
counter2 = savedInstanceState.getInt("int");
}
@Override
protected void onStop() {
super.onStop();
SharedPreferences setting = getSharedPreferences("countersetting", 0);
SharedPreferences.Editor editor = setting.edit();
editor.putInt("countervalue1", counter1);
editor.putInt("countervalue2", counter2);
editor.commit();
}
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
switch (view.getId()) {
case R.id.baddday:
counter1 += 1;
display1.setText("" + counter1);
add1.startAnimation(a);
break;
case R.id.bsubday:
counter1 -= 1;
display1.setText("" + counter1);
sub1.startAnimation(a);
break;
case R.id.baddset:
counter2 += 1;
display2.setText("" + counter2);
add2.startAnimation(a);
bar.setProgress(counter2);
bar.setMax(300);
bar.incrementProgressBy(counter2);
bar.getProgress();
break;
case R.id.bsubset:
counter2 -= 1;
display2.setText("" + counter2);
sub2.startAnimation(a);
bar.setProgress(counter2);
bar.incrementProgressBy(counter2);
bar.getProgress();
break;
case R.id.blist:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(Tracker.this, List.class);
startActivity(i);
}
}, 150);
list.startAnimation(a);
break;
}
}
}
1 ответ
Решение
Допустим, что 5 звездочек или полный прогрессбар будут, когда counter2 достигнет 300 (counter2 (тренировки завершены))
Вы уже установили правильный прогресс для ProgressBar
но вы также увеличиваете вновь установленный прогресс снова (на значение счетчика), что не покажет правильные результаты. в onCreate
метод:
bar.setMax(300);
bar.setProgress(counter2); // the initial stored value
и в слушателях для кнопок:
case R.id.baddset:
counter2 += 1;
display2.setText(String.valueOf(counter2));
add2.startAnimation(a);
bar.setProgress(counter2);
break;
case R.id.bsubset:
counter2 -= 1;
display2.setText(String.valueOf(counter2));
sub2.startAnimation(a);
bar.setProgress(counter2);
break;