2010-12-31 2 views
1

사용자보기가 Dial입니다. 이보기에는 Dial의 중첩 클래스로 작성된 맞춤 애니메이션 DialAnimation이 있습니다. 아래 코드는 내 Activity에서 Dial을 인스턴스화하고 일련의 애니메이션을 수행하려고 시도하는 코드입니다. 코드가 실행되면 애니메이션 중 하나만 화면에 표시됩니다. 내가 여기서 무엇을 놓치고 있니? 이 최초의 애니메이션에 AnimationListener을 설정하고 onAnimationEnd을 무시하는 것입니다 할일련의 애니메이션을 어떻게 실행시킬 수 있습니까? AnimationSet이 나를 실패했습니다.

Dial dial = (Dial) findViewById(R.id.dial); 
DialAnimation anim1 = dial.new DialAnimation(0, 90, 3000); 
DialAnimation anim2 = dial.new DialAnimation(180, 360, 3000); 
anim2.setStartOffset(3500); 

AnimationSet set = new AnimationSet(false); 
set.addAnimation(anim1); 
set.addAnimation(anim2); 
dial.startAnimation(set); 

답변

4

한 가지 방법은()가 순서대로 다음 애니메이션을 시작하게합니다. 이 u는 당신이 응용 프로그램에서 간단한 스레드를 사용하여 순서 .. 또는에서 애니메이션을 업데이트합니다

animation1Listener = new Animation.AnimationListener() { 

      @Override 
      public void onAnimationStart(Animation animation) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 
       dial.startAnimation(animation2) 
      } 
} 

animation1.setAnimationListener(animation1Listener); 
dial.startAnimation(animation1); 
+0

물론 쉽지는 않습니다. 확실히 예쁘지 않습니다. 그러나 그것은 효과적이다. – dfetter88

0

시도 애니메이션의 청취자 doinbackground() 방법 : 그것은 다음과 같이 보일 것입니다.

-1

각 애니메이션에 .setDuration (3500) 메서드를 추가하고 secondanimation에 대한 .setStartOffset (3500) 메서드의 시간과 시간이 일치하는지 확인하십시오.

관련 문제