ObjectAnimator с использованием наборов CharSequence

Я играю с «новыми» анимациями свойств в Android. И наткнулся на стену, пытаясь реализовать ValueAnimator, который меняет текст TextView.

Это моя анимационная логика (text1 – TextView)

ValueAnimator textAnim = ObjectAnimator.ofObject(text1, "text", new TypeEvaluator<CharSequence>() { public CharSequence evaluate(float fraction, CharSequence startValue, CharSequence endValue) { if (startValue.length() < endValue.length()) return endValue.subSequence(0, (int) (endValue.length() * fraction)); else return startValue.subSequence( 0, endValue.length() + (int) ((startValue.length() - endValue .length()) * fraction)); } }, start, end); textAnim.setRepeatCount(ValueAnimator.INFINITE); textAnim.setDuration(6000); textAnim.start(); 

Это ошибка получения: 11-22 14:37:35.848: E/PropertyValuesHolder(3481): Couldn't find setter/getter for property text with value type class java.lang.String .

Кто-нибудь знает, как я могу заставить ObjectAnimator искать setText с параметром CharSequence?

Это старый вопрос, и мне интересно, кто-то другой столкнулся с этой проблемой. Я сделал это сегодня. Вот как я создал работу. Я все еще использую ObjectAnimator с классом-оболочкой (это было намеком на документацию на Android)

Класс Wrapper для TextView:

 private class AnimatedTextView { private final TextView textView; public AnimatedTextView(TextView textView) {this.textView = textView;} public String getText() {return textView.getText().toString();} public void setText(String text) {textView.setText(text);} } 

С помощью этого класса вы можете использовать ObjectAnimator:

  ObjectAnimator.ofObject(new AnimatedTextView((TextView) findViewById(R.id.shortcutLabel)), "Text", new TypeEvaluator<String>() { @Override public String evaluate(float fraction, String startValue, String endValue) { return (fraction < 0.5)? startValue:endValue; } }, "3", "2", "1", "0") .setDuration(3000L) .start(); 

Этот фрагмент кода делает обратный отсчет от 3 до 0 за 3 секунды.

Я не нашел способ заставить ObjectAnimator работать с значениями CharSequence.

Однако мне удалось реализовать это только с использованием стандартного ValueAnimator.

Пример ниже.

 ValueAnimator textAnimator = new ValueAnimator(); textAnimator.setObjectValues(start, end); textAnimator.addUpdateListener(new AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { text1.setText((CharSequence)animation.getAnimatedValue()); } }); textAnimator.setEvaluator(new TypeEvaluator<CharSequence>() { public CharSequence evaluate(float fraction, CharSequence startValue, CharSequence endValue) { if (startValue.length() < endValue.length()) return endValue.subSequence(0, (int) (endValue.length() * fraction)); else return startValue.subSequence( 0, endValue.length() + (int) ((startValue.length() - endValue .length()) * fraction)); } }); textAnimator.setDuration(6000); textAnimator.setRepeatCount(ValueAnimator.INFINITE); textAnimator.start(); 
Intereting Posts
Как создать TAB VIEW в Android-макете Ожидание намерения всегда делает новую деятельность Можно ли использовать API android для перехвата и чтения сообщений оператора (сообщения USSD)? Установите цвет фона в навигационном ящике Что лучше: 1 таблица за запись или 1 таблица со всеми записями, связанными с внешними ключами? Фрагменты Android: метод Lifecycle * всегда * называется, когда отображается фрагмент? Самый приятный способ попросить пользователей перейти на новый пакет (удалить фактическое приложение и установить новый) Android – Создать приложение с чистой Java и без XML? ListView в виджетах добавляет случайные элементы для прокрутки и изменения размера (вложенные удаленные просмотры) Разделить ActionBar в два раза больше значков Как узнать, находится ли теперь тег NFC в диапазоне от Android? Установка высоты элемента ListView Список API для Android, для которых требуются определенные разрешения для Android Переключить камеру с помощью MediaDevices.getUserMedia () в webrtc Как имитировать, что эмулятор имеет SD-карту?