0
我在嘗試解決此問題時非常困難: 我編寫了一個應用程序,允許用戶擺脫屏幕上的一些彩色方塊。在我的班的彩色方塊,我有這樣的方法:在某些設備上查看外觀/消失很好,而不是在其他設備上
public void appearance(){
setLayoutParams(new RelativeLayout.LayoutParams(side/ 10, side/ 10));
final int[] count = {1};
final Runnable run = new Runnable() {
@Override
public void run() {
setLayoutParams(new RelativeLayout.LayoutParams(count[0] * side/ 50, count[0] * side/ 50));//View grows of 1/50 of its final size
if (count[0] < 50){
handler.postDelayed(this, 20);
} else {
setClickable(true);//When done
}
count[0]++;
}
};
handler = new Handler();
handler.postDelayed(run, 10);
}
當我在我的三星Galaxy S4迷你,它的工作原理很好。 但是,例如,它不適用於Wiko高速公路4G或模擬器1080x1920,我不明白爲什麼。
當我說那不工作:視圖出現並增長,但是當它增長時,在postDelayed之前的每個小視圖停留在那裏。 當我試圖通過點擊它使它們消失時,它縮小得很好,但所有其他更大的視圖(在postDelayed之前)也停留在那裏。
如果你不明白那裏,你會在下面的計時器。
在此期間,我有一個非常簡單的計時器是這樣的:
final java.util.Timer t = new java.util.Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if(termine){
t.cancel();
}
if(seconds == 0){
vCoul.setText(String.valueOf(minutes) + ":00");
} else if (seconds < 10) {
vCoul.setText(String.valueOf(minutes) + ":0" + String.valueOf(seconds));
} else {
vCoul.setText(String.valueOf(minutes) + ":" + String.valueOf(seconds));
}
seconds -= 1;
if(seconds == -1){
seconds = 59;
minutes=minutes-1;
}
}
});
}
}, 0, 1000);
但每一秒,新的時間是重疊的前一個。
對不起,很長的文章,在此先感謝您的答案!