2013-04-10 59 views
2

工作,所以这是问题。
动画在第一次运行不起作用,我不知道为什么。
起初我用于动画的XML,但以这种方式仅动画第一次尝试,并不会再工作,所以我改变,并在Java代码中的一切..
但现在,还有它总是除了在第一次尝试运行。

不得不清理,我要在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的知名度。

+0

哦..改..但没有在所有的工作。任何想法? [New code post] – 2013-04-11 15:24:19

+0

删除行menu.setVisibility(View.GONE);这是Listener的一面。 – Pavandroid 2013-04-17 06:30:04

+0

还没有。根本不起作用! – 2013-04-25 13:28:35