【问题标题】:Android: No Animation is played (several buttons implementing the same animation effect)Android:不播放动画(几个按钮实现相同的动画效果)
【发布时间】:2014-05-14 14:17:32
【问题描述】:

我想为按钮 A、B 和 C 应用相同的 alpha 动画,因此实现了以下代码:

public void onCreate(Bundle savedInstanceState) 
{
    animation = new MutableAlphaAnimation();
    animation.setAnimationListener(this);   

    btn_A.setOnClickListener(new OnClickListener() 
    {         
        public void onClick(View v) 
        {                           
            animation.setResetBlocked(true);
            btn_A.setAnimation(animation);
            animation.setResetBlocked(false);
            animation.start(0.0f, 0.5f, FADE_IN_DURATION);
            btn_A.invalidate();
        }  
    }); 
}

public class MutableAlphaAnimation extends Animation 
    {
        private float mFromAlpha;
        private float mToAlpha;
        private boolean resetBlocked;

        public MutableAlphaAnimation() 
        {
        }

        public void start(float fromAlpha, float toAlpha, long duration) 
        {
            mFromAlpha = fromAlpha;
            mToAlpha = toAlpha;
            setDuration(duration);
            setStartTime(START_ON_FIRST_FRAME);
        }

        public void setResetBlocked(boolean resetBlocked) 
        {
            this.resetBlocked = resetBlocked;
        }

        @Override
        public void reset() 
        {
            if (! resetBlocked) super.reset();
        }

        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) 
        {
            final float alpha = mFromAlpha;
            t.setAlpha(alpha + ((mToAlpha - alpha) * interpolatedTime));
        }

        @Override
        public boolean willChangeTransformationMatrix() 
        {
            return false;
        }

        @Override
        public boolean willChangeBounds() 
        {
            return false;
        }
    } 

问题:

btn_A、B 和 C 使用相同的setOnClickListener 实现。然而,当它们被按下时,什么也没有发生。为什么?以上如何修改?

谢谢!

【问题讨论】:

    标签: android animation view onclicklistener


    【解决方案1】:

    您没有将转换应用到 btn_home。是的,您将它设置为动画,但您的动画类从不触及 btn_home。你的 t.setAlpha... 应该真的是 btn_home.setAlpha...,所以使用构造函数传入视图,然后你可以在将来将它与任何视图一起使用。

    【讨论】:

    • 您能否详细说明如何在OnCreate 或其他地方进行编码,以便在按下 btn_A 后它可以显示动画?谢谢!!
    • 好的,有机会试用实际代码。那不是你的问题。问题是你永远不会开始动画。修复:添加 'btn_A.startAnimation(animation);'在您的 onClick 方法中作为最后一行。您可以删除 btn_A.invalidate();行,不需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 2011-12-07
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    相关资源
    最近更新 更多