Начните две анимации вместе - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу, чтобы два запускали две анимации вместе.

Первая анимация - это анимация транзакции

 val transaction = supportFragmentManager.beginTransaction()
    transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
    transaction.replace(R.id.container, fragment, fragment::javaClass.name)
    transaction.addToBackStack(fragment::javaClass.name)
    transaction.commit()

И Вторая анимация - это анимация поисковой панели в действии

abstract class BaseProgressFragment : BaseFragment() {

abstract val progressCount: Int

abstract val seekBar: NonEnabledSeekBar

abstract val tvProgress: TextView

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    animateProgress()
}

private fun animateProgress() {
    val progress = "$progressCount%"
    val progressAnimator = ObjectAnimator.ofInt(seekBar, "progress", seekBar.progress, progressCount * 100)
    progressAnimator.duration = 600
    progressAnimator.interpolator = LinearInterpolator()
    progressAnimator.start()
    seekBar.progress = progressCount * 100
    tvProgress.text = progress
}}

В дочернем фрагменте

override val seekBar: NonEnabledSeekBar
    get() = (activity as CreateOrderActivity).sbCreatingOrder

Когдая запускаю только 1 анимацию, это нормально, но когда я пытаюсь запустить их вместе, пользовательский интерфейс начинает зависать.

Скажите, пожалуйста, как я могу решить эту проблему.

1 Ответ

0 голосов
/ 16 февраля 2019

Я могу это решить, что

seekBar.setLayerType(View.LAYER_TYPE_HARDWARE, null)

и

val progressAnimator = ObjectAnimator.ofInt(seekBar, "progress", seekBar.progress, progressCount * 100)
        progressAnimator.duration = 600
        progressAnimator.interpolator = LinearInterpolator()
        progressAnimator.addListener(object : AnimatorListenerAdapter() {
            override fun onAnimationEnd(animation: Animator) {
                seekBar.setLayerType(View.LAYER_TYPE_NONE, null)
            }
        })
        progressAnimator.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...