2012-05-25 2 views
1

내 응용 프로그램의 애니메이션 문제와 시스템 시간을 변경할 수 있다는 사실이 있습니다. 이 방법으로 애니메이터 객체를 만듭니다.TimingFramework 및 시스템 시간

animator = new Animator(600, Animator.INFINITE, Animator.RepeatBehavior.REVERSE, setter); 

세터는 0.0에서 1.0까지 변하는 알파 속성입니다. 문제는 내가 시스템 시간을 변경할 때마다 애니메이션이 멈추거나 차단된다는 것입니다. 내가 설정 한 시스템 시간에 따라 잠시 후 다시 시작됩니다. 이 문제를 해결할 수있는 방법이 있습니까? 고마워.

답변

2

타이머를 넣고 애니메이터가 같은 시간 동안 작동하도록 예약합니다 (타이머의 run 메서드는 애니메이터 객체를 인스턴스화합니다). 따라서 애니메이터가 멈출 때마다 다음과 같이 다시 인스턴스화됩니다 :
타이머 메소드는 애니메이터가 작동하는지 여부를 확인하고, 답변이 음수이면 동일한 매개 변수로 다른 애니메이터를 인스턴스화하지만 애니메이션에만 적용됩니다 남은 시간과 동일한 기간 동안

코드 예제 :

public void execute() { 
start(); 
timer_.scheduleRepeating(100); 
} 

public void start() { 
    timer_ = new Timer() { 
     public void run() { 
     update(); 
     } 
    }; 
} 


public void update() { 
    if (time > neededTime) { 
     timer_.cancel(); 
    }else { 
     if(!animator) { //needs some optimization 
     animator = new Animator(.... 
     } 
    } 
} 
+0

타이머도 난 당신이 설명하는 것과 유사한 솔루션을 시도 ... 시스템 시간을 사용하지만, 모든 것이 때 시스템 시간 변경을 차단 될 것으로 보인다. – jerome

+0

왜 시스템 시간이 변경됩니까? – GingerHead

+1

은'System.currentTimeMillis()'대신'System.nanoTime()'을 사용합니다 – GingerHead

관련 문제