爲什麼這個值總是正確的?我只是無法弄清楚如何讓布爾值每秒閃爍一次。「閃爍」布爾型與system.currentTimeMillis()
long millis = System.currentTimeMillis();
boolean blink = (Math.floor(millis/1000 + 0.5)==Math.floor(millis/1000));
爲什麼這個值總是正確的?我只是無法弄清楚如何讓布爾值每秒閃爍一次。「閃爍」布爾型與system.currentTimeMillis()
long millis = System.currentTimeMillis();
boolean blink = (Math.floor(millis/1000 + 0.5)==Math.floor(millis/1000));
這是我會做它
long millis = System.currentTimeMillis();
boolean blink = (millis % 2000) < 1000;
此使用模%
運營商,以確定當前時間是多遠重複兩秒的時間窗。然後它會看到它是在窗口的前半部分(0到999)還是在後半部分(從1000到1999)。這會產生一個布爾值,每秒都會交替出現true和false。
可變millis
是long
類型,這是一個整數類型,因此millis/1000
被 0.5在加入之前截斷爲一個整數值。
更簡單的方法做你想做的可能是什麼:
boolean blink = ((millis/1000) & 1) == 0;
這(由1000分)的毫秒值秒轉換,然後測試的最低位,看它是否爲0
謝謝,現在我明白出了什麼問題。 – CookieMonster 2011-04-23 10:20:02
謝謝,這是有效的。一旦可能就會接受你的回答(5分鐘左右) – CookieMonster 2011-04-23 10:19:14