Анимация падает только в Samsung Galaxy Note 8 - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь добиться анимации переворота кнопки при нажатии кнопки, я добился этого с помощью Аниматор объектов и с помощью Набор анимации . Он работает на всех устройствах, кроме Samsung Galaxy Note 8, а также на некоторых реальных устройствах. Когда я пытаюсь запустить это в Samsung, это вызывает мое приложение зависает на некоторое время . Я не уверен, что это проблема кода или устройства. Я почти уверен, что в коде нет ошибки, но просто чтобы опубликовать анимацию кода.

Моя Samsung Galaxy Note 8 работает на Android 9.

top_to_bottom_anim. xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:valueFrom="0"
        android:valueTo="180"
        android:propertyName="rotationX"
        android:duration="@integer/anim_length" />

    <objectAnimator
        android:valueFrom="1.0"
        android:valueTo="0.0"
        android:propertyName="alpha"
        android:startOffset="@integer/anim_length_half"
        android:duration="0" />
</set>

bottom_to_top_anim. xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <objectAnimator
        android:valueFrom="1.0"
        android:valueTo="0.0"
        android:propertyName="alpha"
        android:duration="0" />


    <objectAnimator
        android:valueFrom="-180"
        android:valueTo="0"
        android:propertyName="rotationX"
        android:repeatMode="reverse"
        android:duration="@integer/anim_length" />

    <objectAnimator
        android:valueFrom="0.0"
        android:valueTo="1.0"
        android:propertyName="alpha"
        android:startOffset="@integer/anim_length_half"
        android:duration="0" />
</set>

layout_button. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/btnAdd"
        android:layout_width="wrap_content"
        android:layout_height="36dp"
        android:layout_marginEnd="30dp"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        android:text="Add"
        android:textSize="14sp"
         />

    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/btnRemove"
        android:layout_width="wrap_content"
        android:layout_height="36dp"
        android:layout_marginEnd="30dp"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:text="Remove"
        android:textSize="14sp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
         />


</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity. java

class MainActivity : AppCompatActivity() {

    private val mSetTopDown: AnimatorSet by lazy {
        AnimatorInflater.loadAnimator(this, R.animator.top_to_bottom_anim) as AnimatorSet
    }

    private val mSetBottomUp: AnimatorSet by lazy {
        AnimatorInflater.loadAnimator(this, R.animator.bottom_to_top_anim) as AnimatorSet
    }

    private var isRemoveVisible = false


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.layout_button)

        btnAdd.setOnClickListener {
            flipCard()

        }
        btnRemove.setOnClickListener {

        }
    }

    private fun flipCard() {
        if (!isRemoveVisible) {
            mSetTopDown.setTarget(btnAdd)
            mSetBottomUp.setTarget(btnRemove)
            mSetTopDown.start()
            mSetBottomUp.start()
            mSetTopDown.addListener(object : Animator.AnimatorListener {
                override fun onAnimationRepeat(animation: Animator?) {
                }

                override fun onAnimationEnd(animation: Animator?) {
                    btnAdd.visibility = View.INVISIBLE
                }

                override fun onAnimationCancel(animation: Animator?) {
                }

                override fun onAnimationStart(animation: Animator?) {
                }

            })
            isRemoveVisible = true
        }
    }
}

Я что-то упускаю в анимации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...