Размещение конфетти так, чтобы оно падало сверху, а не только сверху слева - PullRequest
1 голос
/ 27 мая 2020

Недавно я наткнулся на эту библиотеку.

https://github.com/DanielMartinus/Konfetti

Я попытался реализовать это в своем приложении. Прочитал документацию и попробовал реализовать. Ниже мой код:

JAVA ФАЙЛ:

final KonfettiView konfettiView = findViewById(R.id.viewConfetti);
konfettiView.build()
                .addColors(Color.YELLOW, Color.GREEN, Color.MAGENTA)
                .setDirection(0.0, 359.0)
                .setSpeed(1f, 5f)
                .setFadeOutEnabled(true)
                .setTimeToLive(2000L)
                .addShapes(Shape.Square.INSTANCE, Shape.Circle.INSTANCE)
                .addSizes(new Size(12, 5))
                .setPosition(-50f, konfettiView.getWidth() + 50f, -50f, -50f)
                .streamFor(300, 1500L);

Ниже мой файл макета:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:background="@drawable/folk"
    tools:context=".TrueActivity">

<nl.dionsegijn.konfetti.KonfettiView
        android:id="@+id/viewConfetti"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <TextView
        android:id="@+id/CongoText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/congratulations"
        android:visibility="invisible"
        android:textSize="35dp"
        android:textColor= "#FFF"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        />
</RelativeLayout>

У меня все работает нормально. Но конфетти выбрасывается только из верхнего левого угла. Я попытался изменить размер объекта KonfettiView на другие размеры (т.е. попытаться изменить X-axis); но безрезультатно. Я даже прочитал ниже ответ о переполнении стека.

{ ссылка }

Но, похоже, это не помогает. Могу ли я как-нибудь вытолкнуть его полностью сверху, как показано в основной библиотеке readme file вместо только верхнего левого угла.

Спасибо.

1 Ответ

0 голосов
/ 27 мая 2020

Вы можете использовать DisplayMetrics константу класса widthPixels вместо konfettiView.getWidth() для достижения ваших результатов.

Кстати о двоих; ваш konfettiView.getWidth() использует ширину Konfetti, тогда как DisplayMetrics.widthPixels использует ширину устройства. Информация о ширине пикселей.

Попробуйте ввести код ниже:

DisplayMetrics display = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(display);
final KonfettiView konfettiView = findViewById(R.id.viewConfetti);
konfettiView.build()
                .addColors(Color.YELLOW, Color.GREEN, Color.MAGENTA)
                .setDirection(0.0, 359.0)
                .setSpeed(1f, 5f)
                .setFadeOutEnabled(true)
                .setTimeToLive(2000L)
                .addShapes(Shape.Square.INSTANCE, Shape.Circle.INSTANCE)
                .addSizes(new Size(12, 5))
                .setPosition(-50f, display.widthPixels + 50f, -50f, -50f)
                .streamFor(300, 1500L);

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