在Android应用开发中,经常需要为视图添加旋转同时缩放Y轴的动画效果,通过XML配置动画可以让动画逻辑更清晰,也便于复用。这种组合动画可以通过<set>标签将旋转和缩放动画组合实现。

XML动画文件的基本结构
组合动画需要使用<set>标签作为根节点,内部可以包含<rotate>和<scale>两个子动画标签,分别对应旋转和缩放效果。下面是一个完整的实现旋转同时缩放Y轴的XML动画示例:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="true">
<!-- 旋转动画配置 -->
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000" />
<!-- Y轴缩放动画配置 -->
<scale
android:fromYScale="1.0"
android:toYScale="0.5"
android:fromXScale="1.0"
android:toXScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000" />
</set>
核心属性说明
rotate标签属性
- fromDegrees:旋转起始角度,0表示初始位置
- toDegrees:旋转结束角度,360表示顺时针旋转一周
- pivotX:旋转中心点的X坐标,50%表示相对于视图自身宽度的50%位置
- pivotY:旋转中心点的Y坐标,50%表示相对于视图自身高度的50%位置
- duration:动画持续时间,单位是毫秒,1000表示1秒
scale标签属性
- fromYScale:Y轴缩放起始比例,1.0表示原始大小
- toYScale:Y轴缩放结束比例,0.5表示缩小到原始Y轴尺寸的50%
- fromXScale:X轴缩放起始比例,设置为1.0表示X轴不缩放
- toXScale:X轴缩放结束比例,设置为1.0表示X轴不缩放
- pivotX和pivotY:缩放中心点的坐标,和旋转中心点保持一致可以保证动画效果协调
在代码中应用动画
将上面的XML文件保存到res/anim目录下,比如命名为rotate_scale_y.xml,然后在Activity中通过以下代码应用动画:
// 加载XML定义的动画 Animation animation = AnimationUtils.loadAnimation(this, R.anim.rotate_scale_y); // 获取需要执行动画的视图 View targetView = findViewById(R.id.target_view); // 启动动画 targetView.startAnimation(animation);
常见问题说明
如果需要让动画执行多次,可以在<set>标签中添加android:repeatCount属性,比如设置为2表示执行3次(初始1次加重复2次),设置为infinite表示无限循环。如果需要动画执行完成后保持结束状态,可以添加android:fillAfter="true"属性到<set>标签中。
注意:XML动画属于补间动画,不会改变视图的实际布局属性,只是视觉上的效果变化。如果需要改变视图的实际属性,建议使用属性动画实现。
属性对照表
| 属性名 | 含义 | 常用取值 |
|---|---|---|
| fromDegrees | 旋转起始角度 | 0, 90, 180等数值 |
| toDegrees | 旋转结束角度 | 360, -360等数值 |
| fromYScale | Y轴起始缩放比例 | 0.5, 1.0, 2.0等数值 |
| toYScale | Y轴结束缩放比例 | 0.5, 1.0, 2.0等数值 |
| duration | 动画时长 | 毫秒数值,如1000 |
Android_animationrotatetoYScaleXML动画属性动画修改时间:2026-07-24 11:21:28