Я хочу изменить изображение в кнопке fab во время перехода, но я не нашел, как это сделать с помощью xml, потому что тег CustomAttribute поддерживает только рисованные цвета в качестве значений. Мое решение - установить для TransitionAdapter значение MotionLayout и изменить возможность рисования в функции onTransitionChange.
motionLayout.setTransitionListener(object : TransitionAdapter() {
var fromStart = true
var wasChanged = false
override fun onTransitionChange(
motionLayout: MotionLayout?,
startId: Int,
endId: Int,
progress: Float
) {
if (!wasChanged) {
if (fromStart && progress >= 0.5f) {
fab.setImageResource(R.drawable.ic_done_black_24dp)
wasChanged = true
}
if (!fromStart && progress <= 0.5f) {
fab.setImageResource(R.drawable.ic_add_black_24dp)
wasChanged = true
}
}
}
override fun onTransitionCompleted(motionLayout: MotionLayout?, currentId: Int) {
wasChanged = false
fromStart = !fromStart
}
})
Но в этом случае изображение сразу меняется. Есть ли способ сделать переход плавным, как при обычном переходе в MotionLayout?