【问题标题】:Android animation one after another安卓动画一个接一个
【发布时间】:2011-08-09 12:23:25
【问题描述】:

这是我的场景。

首先,我为我的视图 (View.startAnimation(animationSet)) 设置动画,其中动画集同时包含 Translate + Rotate + Scale。它工作正常。 在那个动画集上我有fillAfter(true)。 一段时间后,用户单击一个按钮并 onClick 我必须在同一个视图上启动新的 ScaleAnimation。所以如果我做这样的事情:

@Override
public void onClick(View v) {
    ScaleAnimation scaleAnimation = new ScaleAnimation(mOldScaleFactor, mScaleFactor, mOldScaleFactor, mScaleFactor, mPivotX, mPivotY);
    scaleAnimation.setDuration(ANIMATION_DURATION_MILIS);
    scaleAnimation.setStartOffset(ANIMATION_OFFSET_MILIS);
    scaleAnimation.setFillAfter(true);
    v.startAnimation(scaleAnimation);
}

之前的所有动画(Translate + Rotete + Scale)都被遗忘了。

如何从旧动画结束的地方开始新动画?

【问题讨论】:

    标签: android animation


    【解决方案1】:

    您可以尝试实现一个侦听器,并可能从上一个动画停止时捕获信息,但是我不确定您是否能够查询动画的状态。另一种选择是确保动画停止到已知状态。这样你就可以知道你需要如何开始下一个动画。

    public float param1;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
    
        //load text view to add animation
        ImageView image1 = (ImageView) findViewById(R.id.splash_imageView1);
        Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_anim);
        image1.startAnimation(fade1);
        fade1.setAnimationListener(new AnimationListener() {
            public void onAnimationEnd(Animation animation) {
                //interrogate animation here
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多