Не удалось найти вращение свойства сеттера для кнопки с типом значения float

Я использую 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 ответа

Может быть, вид не готов?

Этот код отлично работает на моем устройстве (4.3, Nexus4).

Наконец, я нашел свою основную причину. Я использую оба NineOldAndroids а также ActionbarSherlock, А потом, потому что ActionbarSherlock уже включает в себя часть NineOldAndroids, поэтому я импортировал com.actionbarsherlock.internal.nineoldandroids.animation.ObjectAnimator вместо com.nineoldandroids.animation.ObjectAnimator,

NineOldAndroids отлично работает на всех версиях Android SDK.

Вы можете попробовать заменить все PropertyValuesHolder на ObjectAnimator (с плавающими переменными) согласно ответу здесь. PropertyValuesHolder: Не удалось найти установщик / получатель для свойства alpha с типом значения float.

Или вы можете попробовать анимацию поворота ниже:

Создайте анимационный XML в res / drawable / anim

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());
        }
    });

РЕДАКТИРОВАТЬ: ObjectAnimator доступен начиная с уровня API 11. Ваше устройство уровня API 9. Попробуйте запустить свой код на устройстве как минимум с Android 3.0+.

Другие вопросы по тегам