Android 旋转在 ObjectAnimator 中不起作用
Android rotation does not work in ObjectAnimator
我使用 Animator XML 为 ImageView 设置动画。 ImageView 应该增长(从 0f 到 1f,Y 比 X 快)并从 90 旋转 90° 到 0。
我将这个 XML 文件用于动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="500"
android:propertyName="scaleY"
android:valueFrom="0f"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:valueTo="1f"
android:valueType="floatType" />
<objectAnimator
android:duration="1000"
android:propertyName="scaleX"
android:valueFrom="0f"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:valueTo="1f"
android:valueType="floatType" />
<objectAnimator
android:duration="1000"
android:transformPivotX="0dp"
android:transformPivotY="0dp"
android:interpolator="@android:anim/linear_interpolator"
android:propertyName="rotate"
android:valueFrom="90"
android:valueType="floatType"
android:valueTo="0" />
</set>
当我使用
应用 Animator 时
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(this,
R.animator.login_bubble_animation);
set.setTarget(mContactBubble);
set.start();
除了旋转之外的一切都有效,所以 ImageView 增长但不旋转。我已经用过
RotateAnimation rotate = new RotateAnimation(90, 0, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(1000);
mContactBubble.startAnimation(rotate);
它确实有效,但如果它在 XML 文件中会更好。
您的 属性 字符串名称 rotate
无效。您需要使用 rotation
,或者 rotationX
and/or rotationY
,就像您对比例所做的那样。 http://developer.android.com/guide/topics/graphics/prop-animation.html#views 可用于 ObjectAnimator
的属性列表
您使用的 属性 名称不正确:rotate
。应该是 rotation
.
视图 class 必须具有该属性的 setter 和 getter 才能作为 属性。
我使用 Animator XML 为 ImageView 设置动画。 ImageView 应该增长(从 0f 到 1f,Y 比 X 快)并从 90 旋转 90° 到 0。 我将这个 XML 文件用于动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="500"
android:propertyName="scaleY"
android:valueFrom="0f"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:valueTo="1f"
android:valueType="floatType" />
<objectAnimator
android:duration="1000"
android:propertyName="scaleX"
android:valueFrom="0f"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:valueTo="1f"
android:valueType="floatType" />
<objectAnimator
android:duration="1000"
android:transformPivotX="0dp"
android:transformPivotY="0dp"
android:interpolator="@android:anim/linear_interpolator"
android:propertyName="rotate"
android:valueFrom="90"
android:valueType="floatType"
android:valueTo="0" />
</set>
当我使用
应用 Animator 时AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(this,
R.animator.login_bubble_animation);
set.setTarget(mContactBubble);
set.start();
除了旋转之外的一切都有效,所以 ImageView 增长但不旋转。我已经用过
RotateAnimation rotate = new RotateAnimation(90, 0, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(1000);
mContactBubble.startAnimation(rotate);
它确实有效,但如果它在 XML 文件中会更好。
您的 属性 字符串名称 rotate
无效。您需要使用 rotation
,或者 rotationX
and/or rotationY
,就像您对比例所做的那样。 http://developer.android.com/guide/topics/graphics/prop-animation.html#views 可用于 ObjectAnimator
您使用的 属性 名称不正确:rotate
。应该是 rotation
.
视图 class 必须具有该属性的 setter 和 getter 才能作为 属性。