2012-02-13 40 views
2

我有一个活动,带有作为菜单出现的滑动画笔。当活动启动时,按钮在那里并淡出以允许全屏视图。当点击抽屉顶部的按钮(此时它的alpha值为0)时,它应该淡入并弹出菜单。当再次点击时,菜单崩溃并且按钮淡出。要做到这一点,我在活动中有以下代码。Android动画在动画过程中不会重新绘制

最初的淡出按预期工作。该活动已创建并且按钮淡出。当我点击按钮展开菜单时,按钮不会出现,当我再次单击时,按钮就会出现并且不会淡出。奇怪的是,动画实际上被称为,如果我在调用animatin之后的动画时移动了抽屉后面的滚动,那么只要保持其背景中的视图移动,动画就会正常继续。如果我停止移动这些视图,动画将冻结在某个alpha值。

为什么第一个功能正常,而其他功能不正常?我该如何解决?

drawer = (SlidingDrawer) this.findViewById(R.id.slidingDrawer1); 
    drawer.setOnDrawerCloseListener(new OnDrawerCloseListener(){ 

     public void onDrawerClosed() { 
      doFadeOut(); 
     }  
    }); 
    drawer.setOnDrawerOpenListener(new OnDrawerOpenListener(){ 

     public void onDrawerOpened() { 
      doFadeIn();    
     }   
    }); 


fadeOut = AnimationUtils.loadAnimation(this, R.anim.buttonfadeout); 
    fadeOut.setFillAfter(true); 
    fadeIn = AnimationUtils.loadAnimation(this, R.anim.buttonfadein); 
    fadeIn.setFillAfter(true); 
    doFadeOut(); //this is the end of onCreate and fades when the activity is created 

,这些都是在

public void doFadeOut(){ 
    fadeOut.reset(); 
    menuButton.clearAnimation(); 
    menuButton.startAnimation(fadeOut); 
} 

public void doFadeIn(){ 
    fadeIn.reset(); 
    menuButton.clearAnimation(); 
    menuButton.startAnimation(fadeIn); 
} 

回答

0

你有没有实现AnimationListener活性的方法?您可以使用onAnimationEnd()。在那里你可以放置另一个监听器,它会触发另一个alpha动画,当你关闭抽屉时,按钮会淡入。

我从动画中学到了如果你有多个动画,你应该总是实现AnimationListener,因为android不能决定自己怎么处理它们。

检查出Android开发者本文档:

Animation Listener Documentation