내 응용 프로그램을 멈추게하는 대기 명령이 끝난 직후에 10 밀리 초가 걸리므로 움직이는 것처럼 보입니다 (내 경우 공).그냥 '빠른 대기 명령을 찾으십시오.
public class PiranhaDrop extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FrameLayout main = (FrameLayout) findViewById(R.id.main_view);
main.addView(new Drawing(this,0,0,0));
int MyLoop=0;
while(MyLoop<100)
{
main.addView(new Drawing(this,MyLoop,10,10));
synchronized(this){wait(10);}
//try{Thread.sleep(WaitTime);} catch (InterruptedException e){}
MyLoop=MyLoop+1;
main.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent e)
{
float x = e.getX();
float y = e.getY();
FrameLayout flView = (FrameLayout) v;
flView.addView(new Drawing(getParent(),x,y,25));
return false;
}
});
}
}
}
당신은 루프가 내가 몇 가지를 시도했습니다 시작 직후 볼 수 있듯이합니다 (있는 waittime 나는 그것이 작동하지 않았다 제거있어하는 길이를 의미한다) - 둘 없습니다 그 중 일부는 효과가있다.
감사합니다.
try
{
Thread.sleep(10);
}
catch (Exception e){}
그러나,이 UI 스레드에서 실행됩니다 참고 :
당신이 말했듯이 UI 스레드에서 sleep()을 호출하는 것은 나쁜 습관입니다. 그러므로 해결책으로 제시하지 마십시오. –
동의하지 않습니다. 10ms의 경우 좋은 방법입니다 ... 10ms의 수면에서 얻을 수있는 것이 무엇인지 모르겠음에도 불구하고 – IncrediApp
위의 IncrediApp의 코드를 사용하여 작동시키고 있다고 생각합니다. 이클립스의 에뮬레이터는별로 좋아하지 않지만 제대로 작동하는지 확인할 수 있습니다. – djmcbell