2013-04-10 3 views
2

이것이 문제입니다.
처음 실행했을 때의 애니메이션이 작동하지 않습니다. 이유가 없습니다.
처음에는 애니메이션을 위해 xml을 사용했지만 애니메이션은 처음 시도에서만 다시 작동하므로 자바 코드에서 모든 것을 변경하고 변경했습니다.
하지만 이제는 처음 시도 할 때를 제외하고 항상 실행됩니다.

2.2 (froyo) 버전에서 작업해야한다고 정리해야합니다.첫 번째 실행시 Android 애니메이션이 작동하지 않음

public class HomePage extends Activity { 
protected View menu; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home_page_portrait); 
    ImageButton plus = (ImageButton) findViewById(R.id.button1); 
    menu = (View) findViewById(R.id.layoutmenu); 
    plus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //menu.clearAnimation(); 
      Animation animation = new TranslateAnimation(0,-menu.getWidth(),0,0); 
      menu.clearAnimation(); 
      if(menu.isShown()) { 
       animation.setDuration(500); 
       animation.setFillAfter(true); 
       menu.setAnimation(animation); 
       menu.setVisibility(View.GONE);  
      } 
      else { 
       animation.reset(); 
       animation = new TranslateAnimation(-menu.getWidth(),0,0,0); 
       animation.setDuration(500); 
       animation.setFillAfter(true); 
       menu.setVisibility(View.VISIBLE); 
       menu.setAnimation(animation); 
      } 
     } 
    }); 
} 
} 

실마리가 있습니까?

수정
그래서 코드가 변경되었지만 전혀 작동하지 않습니다.

public void onClick(View v) { 
      //menu.clearAnimation(); 
      Animation animation; 
      menu.clearAnimation(); 
      if(menu.isShown()) { 
       //animation.reset(); 
       animation = new TranslateAnimation(0,-menu.getWidth(),0,0); 
       animation.setDuration(500); 
       animation.setFillAfter(true); 
       animation.setAnimationListener(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) { 
         // TODO Auto-generated method stub 
         menu.setVisibility(View.GONE); 
        } 

       }); 
       menu.setAnimation(animation); 
       menu.setVisibility(View.GONE);  
      } 
      else { 
       //animation.reset(); 
       animation = new TranslateAnimation(-menu.getWidth(),0,0,0); 
       animation.setDuration(500); 
       animation.setFillAfter(true); 
       animation.setAnimationListener(new Animation.AnimationListener() { 

        @Override 
        public void onAnimationStart(Animation animation) { 
         // TODO Auto-generated method stub 
         menu.setVisibility(View.VISIBLE); 
        } 

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

        } 

        @Override 
        public void onAnimationEnd(Animation animation) { 
         // TODO Auto-generated method stub 
         menu.setVisibility(View.VISIBLE); 
        } 

       }); 
       menu.setAnimation(animation); 
       //menu.setVisibility(View.VISIBLE); 
      } 
      animation.reset(); 
     } 
    }); 

답변

0

다음 줄을 제거하십시오.

menu.setVisibility(View.GONE); 

대신 여기에 갔었 가시성을 만드는,하는 AnimationListeneranimation에 청취자에 추가 onAnimationEnd(Animation animation) 방법 GONE에보기 가시성을합니다.

전체 애니메이션이 완료된 후보기의 가시성을 GONE으로 변경하는 데주의해야합니다.

+0

오, 잘 .. 변경되었지만 전혀 작동하지 않습니다. 어떤 생각? [새 코드 게시] –

+0

줄을 제거하십시오 menu.setVisibility (View.GONE); 듣는 사람 밖에있다. – Pavandroid

+0

아직 없습니다. 전혀 작동하지 않습니다! –

관련 문제