Анимация вращения для фонового градиента вида - PullRequest
0 голосов
/ 26 мая 2019

Я хочу добавить анимацию в мое приложение, где я хочу, чтобы фоновый градиент моего экрана вращался.Я пробовал несколько вещей, таких как ValueAnimator, PropertyAnimator и т. Д., Но я столкнулся с проблемой.

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

Каков наилучший способ получить такой эффект?

Вот что у меня есть

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val view: ConstraintLayout = findViewById(R.id.animation_view)
        startAnimation(view)
    }

    private fun startAnimation(view: View) {
        view.startAnimation(
            AnimationUtils.loadAnimation(
                this, R.anim.rotation_clockwise
            )
        )
    }
}

ресурс анимации xml

<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:interpolator="@android:anim/linear_interpolator"
    android:duration="1200"/>

файл макета

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

<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/animation_view"
        android:background="@drawable/drawable_purple_gradient">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

1 Ответ

0 голосов
/ 26 мая 2019

Анимируете ли вы корневое представление activity или fragment?Если да, это имеет смысл.Весь экран будет повернут.

Если вы хотите анимировать фон вида, вы должны добавить новый вид, который содержит только фон, а затем повернуть его.

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

  <View
    android:id="@+id/animation_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/drawable_purple_gradient"/>

  <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      app:layout_constraintTop_toTopOf="parent"/>

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