Android ConstraintLayout высота анимации частиц - PullRequest
0 голосов
/ 16 мая 2018

У меня большая проблема, я пытаюсь поместить анимацию частиц в фоновом режиме Я использую библиотеку: https://github.com/plattysoft/Leonids

Анимация Конфеттиса отлично отображается на моем экране, но на переднем плане, и я хотел, чтобы она была на заднем плане позади моего ImageView!

Я попытался установить высоту моего ImageView, но анимация осталась на переднем плане

У меня есть файл SplashScreen.xml с ограниченным доступом:

<android.support.constraint.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:id="@+id/bg_splash"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_splashscreen">


<ImageView
    android:id="@+id/logo_text"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="36dp"
    android:layout_marginStart="37dp"
    android:layout_marginTop="8dp"
    android:src="@drawable/logo"
    android:elevation="4dp"
    app:layout_constraintBottom_toTopOf="@+id/guideline2"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintHorizontal_weight="0.1"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/guideline"
    app:layout_constraintVertical_weight="0.1"
    tools:ignore="ContentDescription" />

<android.support.constraint.Guideline
    android:id="@+id/guideline"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.26371" />

<android.support.constraint.Guideline
    android:id="@+id/guideline2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.42074" />
</android.support.constraint.ConstraintLayout>

А моя анимация конфетти в основном вызывается в моем методе onCreate моей деятельности SplashScreen. Вот метод, вызванный в моей активности Splashscreen:

fun particleConfettiAnimation(fromActivity: Activity?) {

        if (fromActivity == null){ return }

        ParticleSystem(fromActivity, 80, R.drawable.confetti, 10000)
            .setSpeedModuleAndAngleRange(0f, 0.3f, 0, 0)
            .setRotationSpeed(144f)
            .setAcceleration(0.00035f, 100)
            .emit(100, -100, 5)
     }

РЕДАКТИРОВАТЬ: Я думаю, что я понял, что иерархия в ConstraintLayout: то, что создается в последний раз на переднем плане по сравнению с другими элементами, созданными ранее, так что это может объяснить, почему анимация на переднем плане по сравнению с моим ImageView

Но как я могу это исправить? Надеюсь, это будет достаточно ясно, спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

Я нашел решение!

Вы должны добавить другие параметры к вызову ParticleSystem, например:

ParticleSystem(fromActivity, 80, R.drawable.confetti, 10000, R.id.YOURID)
        .setSpeedModuleAndAngleRange(0f, 0.3f, 0, 0)
        .setRotationSpeed(144f)
        .setAcceleration(0.00035f, 100)
        .emit(100, -100, 5)

, а затем добавить в начало вашего ConstraintsLayout в вашем XML-файле:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/YOURID">
</FrameLayout>

Вот и все!

...