いくつかのクロノメーターが逆方向にカウントされている画面があります。各クロノには、0 (スタートがいっぱい)ProgressBarに達するまでの残り時間を表す独自のものがあります。ProgressBarこれActivityはAndroid4 ではうまく機能しますが、今日はAndroid2.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 では動作しません (いくつかのデバイスとエミュレーターで試しました)。
ありがとう!