有办法用一个动画来实现吗
时间: 2024-02-24 12:57:13 浏览: 50
可以使用一个`ValueAnimator`来实现这个动画,具体代码如下:
```java
// 设置view1的初始状态
view1.setScaleX(1f);
view1.setScaleY(1f);
view1.setAlpha(1f);
// 设置view2的初始状态
view2.setScaleX(0.5f);
view2.setScaleY(0.5f);
// 创建ValueAnimator对象
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f);
animator.setDuration(2000);
// 设置ValueAnimator的动画变化监听器
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (float) animation.getAnimatedValue();
if (value < 0.5f) {
float scale = 1f - (value / 0.5f) * 0.5f;
view1.setScaleX(scale);
view1.setScaleY(scale);
view1.setAlpha(scale);
} else {
float scale = 0.5f + ((value - 0.5f) / 0.5f) * 0.5f;
view2.setScaleX(scale);
view2.setScaleY(scale);
}
}
});
// 启动动画
animator.start();
```
在这个实现中,我们使用了一个`ValueAnimator`对象,并设置了它的持续时间为2000ms。在动画变化监听器中,我们根据`value`值的变化来控制`view1`和`view2`的变化。当`value`小于0.5时,我们通过计算来控制`view1`的`scale`和`alpha`属性的变化;当`value`大于等于0.5时,我们通过计算来控制`view2`的`scale`属性的变化。
这样,就实现了一个连续2000ms的动画,前1000ms控制`view1`的变化,后1000ms控制`view2`的变化。
阅读全文