Анимация рисованного изменения в кнопке

У меня есть Button это имеет BitmapDrawable и ряд текста в нем. Не то, чтобы это имело значение, но мой текст "выше" моего текста, который будет соответствовать третьей кнопке сверху.

Примеры использования setCompundDrawablesWithIntrisicBounds

Drawable устанавливается с помощью:

BitmapDrawable top = new BitmapDrawable(mContext.getResources(), Bitmap.createScaledBitmap(buttonContent.content, 
            mContext.IMAGE_WIDTH, mContext.IMAGE_HEIGHT, false));

    button.setCompoundDrawablesWithIntrinsicBounds(null, top.getCurrent(), null, null);

Изображение, которое я установил, первоначально изменяется после некоторых событий, и я хочу, чтобы изменение изображения было анимированным. У меня уже есть android:animateLayoutChanges=true поле в моем макете.

Моё первоначальное предположение - создать кастом Button-учебный класс. Но мне интересно, есть ли другой способ решить мою проблему?

2 ответа

Решение

Вы можете анимировать сам инструмент. TransitionDrawableпозволяет плавно переходить между слоями (setCrossFadeEnabled(true)), вы можете начать переход с помощью чего-то вроде

((TransitionDrawable) button.getCompoundDrawables()[INDEX]).startTransition(MILLIS);

Старый ответ, основанный наAnimatables: см. документацию "Drawable Animation". Вы можете использовать эту технику и для составных чертежей.

Запустите анимацию, используя что-то вроде

((Animatable) button.getCompoundDrawables()[INDEX]).start();

или держите ссылку на Animatable когда не устанавливается рисование из XML.

Ответ "дст" дал правильный. Но если вы ищете перекрестную анимацию между несколькими изображениями и не хотите использовать Animator-классы TransitionDrawable не собирается сокращать это. Это только для двух изображений.

Там есть ответ на почти аналогичный пост. Проверьте это!

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