いくつかのクロノメーターが逆方向にカウントされている画面があります。各クロノには、0 (スタートがいっぱい)ProgressBar
に達するまでの残り時間を表す独自のものがあります。ProgressBar
これActivity
はAndroid
4 ではうまく機能しますが、今日はAndroid
2.3.6 で試してみましたProgressBars
が、表示されないことがあります。
以下にいくつかの使用例を示しますので、どのケースで正常に機能していないかを理解できます。いずれの場合も、ProgressBars が表示されます。
- ユーザーが初めて を開きます。Activity
すべてProgressBars
がいっぱいで実行されていない必要があります。ProgressBars
表示されません。
-一部 ProgressBars
は実行を開始します (減少)。それらはまだ表示されていません。ユーザーが を閉じapp
て再度開くと、すべてがProgressBars
表示されます (満杯のものも含む)。
-一部のクロノメーターが 0 になるProgressBar
と、再び塗りつぶされ、内側の色が赤に変わります。それが起こると、 もProgressBar
消えます。
それがなぜだろうと誰でも知っていますか?
ProgressBars
これは、xml で宣言する方法です。
<ProgressBar
android:id="@+id/lci_progbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@+id/lci_time"
android:layout_centerHorizontal="true"
android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
android:indeterminateOnly="false"
android:maxHeight="20dip"
android:minHeight="20dip"
android:paddingTop="5dp"
android:progressDrawable="@drawable/time_progressbar" />
これは、アクティビティで行うことです。
// Initialize progress bar.
progBars[i] = (ProgressBar) findViewById(ids[i]);
if (progBars[i].getAnimation() != null)
progBars[i].getAnimation().cancel();
if (arr_Chronometers[i].isCountingReverse()) {
// Chrono hasn't reached 0.
progBars[i].setMax((int) arr_Chronometers[i].doGetTotalTime());
progBars[i].setProgress((int) arr_Chronometers[i].doGetElapsedTime());
progBars[i].setProgressDrawable(getResources().getDrawable(
R.drawable.time_progressbar)); // Green bar
}
else {
// Chrono has reached 0.
progBars[i].setProgressDrawable(getResources().getDrawable(
R.drawable.time_progressbar_red)); // Red bar
progBars[i].setMax(100);
progBars[i].setProgress(100);
}
私が言ったように、それは Android 4 (4.0.4 および 4.2) で動作しますが、Android 2.3.6 では動作しません (いくつかのデバイスとエミュレーターで試しました)。
ありがとう!