【问题标题】:Android: Stay in state of older animation when start a new animationAndroid:开始新动画时保持旧动画状态
【发布时间】:2016-11-02 19:02:08
【问题描述】:

我想在一个视图上制作两种类型的动画:TranslateAnimation 和稍后的 ScaleAnimation。问题是当 ScaleAnimation 开始时,视图会返回到它们的初始状态(在 TranslateAnimation 之前)。有没有办法做我想做的事?

【问题讨论】:

    标签: android animation android-framelayout


    【解决方案1】:

    您可以为TranslateAnimation 添加一个监听器,完成后,将View 的位置更改为动画的结束位置。

    TranslateAnimation anim = new TranslateAnimation(...);
    anim.setAnimationListener(new AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) { }
    @Override
    public void onAnimationRepeat(Animation animation) { }
    @Override
    public void onAnimationEnd(Animation animation) {
        view.setX(NEW_X_POSITION);
        view.setY(NEW_Y_POSITION);
    }
    });
    

    但我建议实际上从旧的 TranslateAnimation/ScaleAnimation 类型的类切换到新的 ViewPropertyAnimator 框架 (http://android-developers.blogspot.co.il/2011/05/introducing-viewpropertyanimator.html)。 在新框架中你不必像上面的代码那样改变位置,语法也简单得多:

    myView.animate().x(500).y(500);
    

    您还可以使用AnimatorSet 创建一组动画,以便一起或一个接一个地播放。

    延伸阅读:https://developer.android.com/reference/android/view/ViewPropertyAnimator.html

    【讨论】:

    • 是的,它有效!我根本没有考虑听众
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2019-01-30
    • 2011-12-16
    • 1970-01-01
    • 2021-03-22
    • 2012-10-11
    相关资源
    最近更新 更多