我有这个跟踪器屏幕,可以跟踪用户锻炼和完成锻炼的日期。我想添加ProgressBar
或RatingBar
,通过增加我的计数器来显示某种进度/评级。
让我们说,当counter2达到300(counter2(训练集完成))时,5星或全ProgressBar
将是。
我目前的代码:
@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;
}
}
}
答案 0 :(得分:0)
让我们说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;