문제
안녕하세요 저는 2 초마다 모양이 튀어 나오는 레이아웃을 만들려고합니다. 사용자가 이러한 모양 중 하나를 클릭하면 사라져야합니다.
이 작업을 수행하는 올바른 방법은 무엇입니까? 나는 실에 대해 생각했지만 놓쳤다. 현재 내 코드는 다음과 같습니다 (작동하지 않습니다) :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
l = new LinearLayout(this);
setContentView(l);
int counter = 1;
View v = new CustomDrawableView(this,20,50);
l.addView(v);
Thread t = new Thread() {
public void run() {
while (true) {
Log.i("THREAD","INSIDE");
View h = new CustomDrawableView(c,
(int)Math.round(Math.random()*100),
(int)Math.round(Math.random()*100));
SystemClock.sleep(2000);
l.addView(h);
}
}
};
t.start();
}
해결책
별도의 스레드에서 화면을 조작 할 수 없습니다. UI 스레드에서 호출되므로 핸들러를 사용해야합니다.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
l = new LinearLayout(this);
setContentView(l);
int counter = 1;
View v = new CustomDrawableView(this,20,50);
l.addView(v);
ShapeHandler handler = new ShapeHandler();
handler.sendEmptyMessage(0);
}
private class ShapeHandler extends Handler
{
@Override
public void handleMessage(Message msg)
{
View h = new CustomDrawableView(c,
(int)Math.round(Math.random()*100),
(int)Math.round(Math.random()*100));
l.addView(h);
this.sendEmptyMessageDelayed(0, 2000);
}
}
제휴하지 않습니다 StackOverflow