找不到值类型为float的Button的setter属性旋转

时间:2013-10-24 08:34:10

标签: android android-animation nineoldandroids

当用户点击按钮时,我正在使用NineOldAndroids来旋转按钮。这是代码:

Button btntest = (Button) findViewById(R.id.testbutton);
        btntest.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ObjectAnimator.ofFloat(v, "rotation", 0f, 360f).start();
            }
        });

当我点击按钮时,它会将此日志抛入logcat:

10-24 05:25:42.394: E/PropertyValuesHolder(2387): Couldn't find setter property rotation for Button with value type float

我已经进行了很多搜索,但我在这里找不到任何解决方案。 请帮帮我。

感谢。

4 个答案:

答案 0 :(得分:1)

编辑:自 API级别11 以来,ObjectAnimator可用。您的设备 API级别9 。尝试在至少安装Android 3.0的设备上运行代码。

答案 1 :(得分:1)

也许视图没有准备好?

这些代码在我的设备上运行良好(4.3,Nexus4)。

答案 2 :(得分:1)

您可以尝试使用ObjectAnimator(使用float vars)替换所有PropertyValuesHolder,方法是PropertyValuesHolder: Couldn't find setter/getter for property alpha with value type float中的答案。

或者你可能想尝试下面的旋转动画:

在res / drawable / anim

中创建动画XML

<强> rotate_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >

<rotate
    android:duration="800"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:repeatMode="restart"
    android:toDegrees="360" />
</set>

创建旋转动画。

private Animation rotate() {
    Animation animation = AnimationUtils.loadAnimation(NameOfActivity.this, R.anim.rotate_animation);
    return animation;
}

然后,当用户点击它时,使用按钮中的rotate()动画。

Button btntest = (Button) findViewById(R.id.testbutton);
    btntest.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            v.startAnimation(rotate());
        }
    });

答案 3 :(得分:1)

最后,我找到了根本原因。我同时使用NineOldAndroidsActionbarSherlock。然后,因为ActionbarSherlock已经包含了NineOldAndroids的一部分,所以我导入了com.actionbarsherlock.internal.nineoldandroids.animation.ObjectAnimator而不是com.nineoldandroids.animation.ObjectAnimator

NineOldAndroids适用于所有Android SDK版本。