在 Android 中,AnimatorSet
允许你组合多个动画并控制它们的执行顺序。要使 AnimatorSet
同步执行动画,你可以使用以下方法:
- 将所有动画添加到同一个
AnimatorSet
中。 - 使用
start()
方法启动AnimatorSet
。
以下是一个简单的示例,展示了如何使用 AnimatorSet
同步执行动画:
import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.os.Bundle; import android.view.View; import android.view.animation.Animation; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private View view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); view = findViewById(R.id.my_view); // 创建一个 AnimatorSet AnimatorSet animatorSet = new AnimatorSet(); // 创建一个 ObjectAnimator,使 view 的宽度在 1 秒内变为 200px ObjectAnimator widthAnimator = ObjectAnimator.ofInt(view, "width", 100, 200); widthAnimator.setDuration(1000); // 创建另一个 ObjectAnimator,使 view 的透明度在 1 秒内变为 0.5 ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(view, "alpha", 1f, 0.5f); alphaAnimator.setDuration(1000); // 将两个动画添加到 AnimatorSet 中 animatorSet.playTogether(widthAnimator, alphaAnimator); // 设置动画监听器 animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); System.out.println("动画开始"); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); System.out.println("动画结束"); } }); // 启动 AnimatorSet animatorSet.start(); } }
在这个示例中,我们创建了一个 AnimatorSet
,并向其中添加了两个动画:一个改变视图宽度的动画和一个改变视图透明度的动画。通过调用 playTogether()
方法,我们将这两个动画设置为同步执行。最后,我们使用 start()
方法启动 AnimatorSet
。