【问题标题】:Android alpha animation not repainting during the animationAndroid alpha动画在动画期间未重新绘制
【发布时间】:2012-02-13 03:09:09
【问题描述】:

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

初始淡出按预期工作。活动被创建并且按钮淡出。当我单击按钮以展开菜单时,该按钮不会出现,当我再次单击它时,该按钮在那里并且不会淡出。奇怪的是,动画实际上是被调用的,如果我将滚动视图移动到抽屉后面,而动画之后的动画被调用,只要我保持其背景中的视图移动,动画就会正常进行。如果我停止移动这些视图,动画将冻结在某个 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);
}

【问题讨论】:

    标签: android android-animation


    【解决方案1】:

    你实现了 AnimationListener 吗?

    您可以使用 onAnimationEnd()。在那里你可以放置另一个监听器,它会触发另一个 alpha 动画,当你关闭抽屉时你的按钮会淡出。

    我从我的动画工作中学到,如果你有多个动画,你应该始终实现 AnimationListener,因为 android 无法自行决定如何处理其中的许多。

    查看有关 Android 开发人员的此文档:

    Animation Listener Documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多