2013-03-14 6 views
1

운동 일정과 운동 세트가 완료된 사용자를 추적하는 추적 화면이 있습니다. ProgressBar 또는 RatingBar을 추가하여 내 카운터가 증가하여 진행률/등급이 표시되는 것을 추가하고 싶습니다.RatingBar로 진행 상황 표시하기

5 개의 별 또는 전체 ProgressBar은 counter2가 300에 도달 할 때가됩니다 (counter2 (운동 세트가 완료 됨)).

enter image description here

내 현재 코드 :

@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

당신은'RatingBar' 클래스로 보았다? http://developer.android.com/reference/android/widget/RatingBar.html 또는 'ProgressBar' 클래스? http://developer.android.com/reference/android/widget/ProgressBar.html –

+0

내가했는데 몇 가지 코드로 도움이 필요하다 : ( – lakyberry

+0

) 프로젝트 (Google 드라이브 또는 무언가)에 연결하면 너의 코드를 봐 –

답변

0

는 COUNTER2 가 300에 도달하면 별 5 개 또는 전체의 ProgressBar가 될 것이라고 말할 수 있습니다 (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; 
+0

모든 +25 카운터 범위에 표시 텍스트를 추가하고 싶습니다. 그래서 사용자가 앱을 시작하면 진도 표시 줄 아래에 신인이 표시됩니다. 카운터 2에서 +25에 도달하면 초급, 중간 50 등등이 표시됩니다. 아이디어가 있습니까? – lakyberry

+0

@lakyberry 레이아웃에 다른 'TextView'를 추가하십시오. 위의 두 버튼에 대한 코드에서 bar.setProgress (counter2) 다음에 다음 코드를 추가합니다. if (counter2 <= 25) {levelTextView.s – Luksprog

+0

Awsome ... :) 감사합니다 Luksprog – lakyberry