我正在從隨機生成的數字中創建一個簡單的序列。每個號碼都會顯示一個鏈接到它的圖像。例如, ,遞增值如何一次顯示一個值
值1將顯示貓的圖片。 值2狗 和值3鼠標。
每張圖片都有自己專用的ImageView,佈局看起來像這樣在默認情況下,存儲黑,直到它即圖像視圖數被稱爲:
每次序列遞增。所以第二次運行時會顯示兩個圖像,第三個將顯示等等。
我遇到的問題是所有圖像一次顯示。因此,對於序列,只有一個圖像閃爍(這是我想要的)。但在第二次運行時,兩個圖像同時顯示在一起,而不是顯示第一個圖像,然後顯示第二個圖像。
所以要澄清,讓我們在4次操作的存儲陣列是1,2,3,3說我想
圖片1顯示,和disappear.then 圖像2顯示和消失。然後 圖像3顯示並消失 然後圖像3顯示並消失。
但是我實際得到的是第四次運行1,2 & 3會同時顯示並同時消失在一起。我如何分解這些以達到我想要的。我已經嘗試了很多方法,並且發生了相同的結果。我無法解決這個問題。
這裏是我的代碼:
ArrayList<Integer> stored_vals = new ArrayList<Integer>();
public void Gen() {
int i=0 ;
Random rand = new Random();
int rndInt = rand.nextInt(3)+ 1 ;
list.add(rndInt);
int totalElements = list.size();
Log.d("LOOK", Integer.toString(rndInt));
Log.i("VALUE LIST ", list.toString()+" <<<<LIST HERE");
while(i < totalElements) {
retval =list.get(i);
Log.d("RETVAL", Integer.toString(retval));
String imgName = "flash" + retval;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
if (retval==1){
Cat.setImageResource(id);
Reset_View();
}
else if (retval==2){
Dog.setImageResource(id);
Reset_View();
}
else if (retval==3){
Mouse.setImageResource(id);
Reset_View();
}
i++;
}
}
要嘗試,並在時間延遲顯示在一個圖像和復位到它的默認顯示幾秒鐘,我叫Reset_View()之後;這是下面的代碼:
CountDownTimer Reset_View = new CountDownTimer(1000 , 0010){
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
Centre.setImageResource(R.drawable.i1);
upperRight.setImageResource(R.drawable.i2);
lowerRight.setImageResource(R.drawable.i3);
lowerLeft.setImageResource(R.drawable.i4);
upperLeft.setImageResource(R.drawable.i5);
}
};
那麼我怎麼能達到我想要的。我一直堅持這個想法好幾個星期。
我不完全確定,但是CountDownTimer是否運行異步? IE瀏覽器。它是否阻止你的for循環進入下一個循環?如果不是這樣,那麼爲什麼所有人立即出現並立即消失,這是有道理的。 – 2015-04-02 20:35:37
我加了一個高級別的答案。你可以做到這一點的方法很少,我想到的第一個想法就是解釋。 – 2015-04-02 20:46:36
這段代碼是如何編譯的?粘貼它或其他東西時你把它搞亂了嗎?因爲這不會產生大量的語法錯誤。 – Gumbo 2015-04-02 20:57:53