特定の日付までカウントダウンするカウントダウンがありました。ティック(間隔1秒)ごとに、イベントまでの残りの日数/時間/分でテキストボックスが更新されます。私の問題は、分(まだ日/時間についてはわかりません)がちらつき続けることです。つまり、1分間に18、17、18、17の順になり、16、17、16の順になり、そのようになります。
ちらつきの問題は解決しましたが、現在は機能していないタイムゾーンだけです。(フリッカーはPshemoのコードを使用して解決されました)
また、TimeZoneが機能していないようです。それは2時間から多くを示しています。SimpleTimeZoneを使用して変更しようとしましたが、機能せず、+ 2時間が表示されます(SimpleTimeZoneの設定に関係なく)
原因は何でしょうか?
カウントダウンコード:
new CountDownTimer(remaining, 1000) {
TextView tv = (TextView)getActivity().findViewById(R.id.introTimeLeft);
public void onTick(long millisUntilFinished) {
SimpleTimeZone ts = new SimpleTimeZone(2, "Middle Europe");
Calendar cal = Calendar.getInstance(ts);
cal.set(2012, 5, 28, 17, 0);
long endTime = cal.getTimeInMillis();
long currentTime = System.currentTimeMillis();
long remaining = endTime - currentTime;
tv.setText(getDurationBreakdown(remaining));
}
...
}.start();
public String getDurationBreakdown(long millis)
{
if(millis < 0)
{
throw new IllegalArgumentException("Duration must be greater than zero!");
}
long days = TimeUnit.MILLISECONDS.toDays(millis);
millis -= TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS.toHours(millis);
millis -= TimeUnit.HOURS.toMillis(hours);
long minutes = (long) Math.ceil(TimeUnit.MILLISECONDS.toMinutes(millis));
StringBuilder sb = new StringBuilder(64);
sb.append(days);
sb.append(" Days ");
sb.append(hours);
sb.append(" Hours ");
sb.append(minutes);
sb.append(" Minutes");
return(sb.toString());
}