android动画,两个view,时间2000ms,前一半时间,一个view得scale和alpha从1变成0.5,后半部分时间,另一个view的scalse逐渐从0.5变为1
时间: 2024-01-04 22:01:54 浏览: 18
可以通过使用`ValueAnimator`和`ObjectAnimator`配合使用来实现该动画效果。
首先,我们需要创建两个`View`对象,并设置它们的初始状态。假设这两个`View`对象分别为`view1`和`view2`,我们可以通过以下代码设置它们的初始状态:
```java
// 设置view1的初始状态
view1.setScaleX(1f);
view1.setScaleY(1f);
view1.setAlpha(1f);
// 设置view2的初始状态
view2.setScaleX(0.5f);
view2.setScaleY(0.5f);
```
然后,我们需要创建一个`ValueAnimator`来控制`view1`的`scale`和`alpha`属性的变化。代码如下:
```java
ValueAnimator animator1 = ValueAnimator.ofFloat(1f, 0.5f);
animator1.setDuration(1000);
animator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (float) animation.getAnimatedValue();
view1.setScaleX(value);
view1.setScaleY(value);
view1.setAlpha(value);
}
});
```
接着,我们需要创建一个`ObjectAnimator`来控制`view2`的`scale`属性的变化。代码如下:
```java
ObjectAnimator animator2 = ObjectAnimator.ofFloat(view2, "scaleX", 0.5f, 1f);
animator2.setDuration(1000);
animator2.setStartDelay(1000);
animator2.start();
```
最后,我们将两个动画同时启动:
```java
animator1.start();
animator2.start();
```
完整代码如下:
```java
// 设置view1的初始状态
view1.setScaleX(1f);
view1.setScaleY(1f);
view1.setAlpha(1f);
// 设置view2的初始状态
view2.setScaleX(0.5f);
view2.setScaleY(0.5f);
// 控制view1的scale和alpha属性的变化
ValueAnimator animator1 = ValueAnimator.ofFloat(1f, 0.5f);
animator1.setDuration(1000);
animator1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (float) animation.getAnimatedValue();
view1.setScaleX(value);
view1.setScaleY(value);
view1.setAlpha(value);
}
});
// 控制view2的scale属性的变化
ObjectAnimator animator2 = ObjectAnimator.ofFloat(view2, "scaleX", 0.5f, 1f);
animator2.setDuration(1000);
animator2.setStartDelay(1000);
animator2.start();
// 启动动画
animator1.start();
animator2.start();
```