我在android中有问题,首先我想要一个按钮,我每2秒移动一次到屏幕上的不同位置,但我不能这样做(如果有人知道这将是非常有帮助的)。 无论如何,我的另一种方法是在不同的位置制作5个不同的按钮并使用setVisibility()函数移动,但它在中间崩溃我不知道为什么,这里是代码:
final ImageButton[] face = new ImageButton[5];
face[0] = (ImageButton) findViewById(R.id.ImageButton1);
face[1] = (ImageButton) findViewById(R.id.ImageButton2);
face[2] = (ImageButton) findViewById(R.id.ImageButton3);
face[3] = (ImageButton) findViewById(R.id.ImageButton4);
face[4] = (ImageButton) findViewById(R.id.ImageButton5);
for(int i=0;i<5;i++)
{
face[i].setVisibility(View.GONE);
}
Thread timer=new Thread() {
public void run(){
for(int i=0;true;i++)
{
if(i==5)
{
i=0;
}
Log.v("VISIBLE AT I = ",Integer.toString(i));
face[i].setVisibility(View.VISIBLE);
try {
sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
Log.v("CATCH","CATCH");
e.printStackTrace();
}
//Log.v("SLEPT","SLEPT");
face[i].setVisibility(View.INVISIBLE); // IT CRASHES HERE
Log.v("INVISIBLE AT I = ",Integer.toString(i));
}
}
};
timer.start();
如果有人能帮助我,那就太棒了,谢谢。
答案 0 :(得分:1)
你想过用动画做这件事吗?如果您的目标是Honeycomb,则可以使用property animation;对于早期平台,您可以使用view animation。
对于崩溃,您只能从UI线程修改UI元素,而不能从单独的线程修改。您需要发回信号,或使用其中一个(非常好的)帮助程序来处理此问题,例如AsyncTask。
请参阅:http://developer.android.com/resources/articles/painless-threading.html