Мне нужно изменить значок рисования меню MenuItem на панели инструментов с плавным постепенным исчезновением, поэтому я реализовал простую функцию, используя TransitionDrawable
private fun MenuItem.transIconTo(newIcon: Drawable, duration: Int) {
val crossfader = TransitionDrawable(arrayOf(this.icon, newIcon))
this.icon = crossfader
crossfader.startTransition(duration)
}
toolbar.menu.findItem(R.id.action_edit)?.transIconTo(ContextCompat.getDrawable(baseContext, R.drawable.ic_edit_grad_1)!!, DRAWABLE_GRAD_TRANS_DURATION)
. Она отлично работает на Jelly Bean и Marshmallow,но не на нуге и на орео!(Я не тестировал другие версии).Он немедленно меняет значок, не исчезая, независимо от значения duration
.
Я создаю свое приложение со следующими целями:
compileSdkVersion 28
minSdkVersion 16
targetSdkVersion 28
Версия поддержки зависимостей
28.0.0-rc01
Так что я не знаю, является ли проблема моей программной ошибкой или конфликтом зависимости платформы.У кого-нибудь есть идеи?Можете ли вы предложить допустимые альтернативы?
PS: Использование настраиваемого представления в качестве представления действия не решает проблему.