Android alpha动画在动画期间不重新绘制

时间:2012-02-13 03:09:10

标签: android android-animation

我有一个带有滑动画面的活动,它作为菜单出现。当活动开始时,按钮就在那里并淡出以允许全屏视图。当单击抽屉顶部的按钮(此时它的alpha为0)时,它应该淡入并弹出菜单。再次单击时,菜单会折叠,按钮会退出。要做到这一点,我在活动中有以下代码。

初始淡出按预期工作。活动已创建,按钮淡出。当我单击按钮以展开菜单时,按钮不会出现,当我再次单击它时,按钮就在那里并且不会淡出。奇怪的是,动画实际上是被调用的,如果我在调用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);
}

1 个答案:

答案 0 :(得分:0)

你实现了AnimationListener吗?

您可以使用 onAnimationEnd()。在那里,您可以放置​​另一个将触发另一个alpha动画的侦听器,让您的按钮在关闭抽屉时淡出。

我从动画制作中了解到,如果你有多个动画,你应该总是实现AnimationListener,因为android无法自行决定如何处理它们。

在Android开发者上查看此文档:

Animation Listener Documentation