我正在Android中執行一個簡單的動畫應用程序。這是場景。我有一個按鈕和4個文字瀏覽。當用戶點擊按鈕時,第一個文本視圖應該開始動畫(閃爍效果),然後是第二個文本視圖等等。這是我到目前爲止所嘗試的:Android java線程睡眠示例
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
btGo.setEnabled(false);
glowCircuit2();
glowCircuit3();
glowCircuit4();
}
private void glowCircuit2() {
new Thread(new Runnable()
{
@Override
public void run()
{
while (!Thread.interrupted())
try
{
Thread.sleep(3000);
runOnUiThread(new Runnable() // start actions in UI thread
{
@Override
public void run()
{
// this action have to be in UI thread
tvCircuit2.setCompoundDrawablesWithIntrinsicBounds(0,
R.drawable.activecircuit, 0, 0);
tvCircuit2.startAnimation(animBlink);
}
});
}
catch (InterruptedException e)
{
// ooops
}
}
}).start(); // the while thread will start in BG thread
}
private void glowCircuit3() {
new Thread(new Runnable()
{
@Override
public void run()
{
while (!Thread.interrupted())
try
{
Thread.sleep(3000);
runOnUiThread(new Runnable() // start actions in UI thread
{
@Override
public void run()
{
// this action have to be in UI thread
tvCircuit3.setCompoundDrawablesWithIntrinsicBounds(0,
R.drawable.activecircuit, 0, 0);
tvCircuit3.startAnimation(animBlink);
}
});
}
catch (InterruptedException e)
{
// ooops
}
}
}).start(); // the while thread will start in BG thread
}
private void glowCircuit4() {
new Thread(new Runnable()
{
@Override
public void run()
{
while (!Thread.interrupted())
try
{
Thread.sleep(3000);
runOnUiThread(new Runnable() // start actions in UI thread
{
@Override
public void run()
{
// this action have to be in UI thread
tvCircuit4.setCompoundDrawablesWithIntrinsicBounds(0,
R.drawable.activecircuit, 0, 0);
tvCircuit4.startAnimation(animBlink);
}
});
}
catch (InterruptedException e)
{
// ooops
}
}
}).start(); // the while thread will start in BG thread
}
我得到了閃爍的效果,但我得到了同步效果。我想要的是等待每個文本視圖進行動畫製作,而不是同時進行動畫製作。你有什麼聰明的想法來做到這一點?非常感謝幫助。謝謝。
提示:要達到該目的,必須在glowCircuit2()內調用'glowCircuit3()' –
您還沒有爲等待線程逐個做動畫做任何編碼。有多種方法可以實現這一點,你應該閱讀如何在線程上加入()。其他先進的方法,通過使用'障礙'來做同樣的事情。 – sakura
@sakura nope,我用xml完成了閃爍的動畫。所以我現在想做的是等待textview在下一個textview出現之前顯示。 – Dunkey