Эффект раскрытия с помощью android.support.design.circularreveal.cardview.CircularRevealCardView

Я хотел создать эффект раскрытия, такой как функция прикрепления WhatsApp. Оглядываясь вокруг, чтобы создать что-то нестандартное, я наткнулся на представление Android android.support.design.circularreveal.cardview.CircularRevealCardView, доступное уже без добавления какой-либо внешней библиотеки.

Я реализовал это представление так: -

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.circularreveal.cardview.CircularRevealCardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ccv_attachment_reveal"
    style="@style/style_mw"
    android:elevation="@dimen/dimen_2dp"
    android:orientation="vertical"
    android:padding="@dimen/dimen_margin_16dp"
    app:cardCornerRadius="@dimen/dimen_8dp"
    >

    <android.support.v7.widget.LinearLayoutCompat
        style="@style/style_mw"
        android:orientation="vertical">

        <RelativeLayout
            android:id="@+id/rl_attachment_first_row"
            style="@style/style_ww"
            android:layout_marginStart="@dimen/dimen_30dp"
            android:layout_marginTop="@dimen/dimen_margin_16dp"
            android:layout_marginEnd="@dimen/dimen_30dp">

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab_add_gallery_image"
                style="@style/style_ww"
                android:layout_alignParentStart="true"
                android:src="@drawable/ic_gallery_image"/>

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab_add_camera_image"
                style="@style/style_ww"
                android:layout_centerHorizontal="true"
                android:src="@drawable/ic_camera"/>

        </RelativeLayout>

        <RelativeLayout
            style="@style/style_ww"
            android:layout_marginStart="@dimen/dimen_30dp"
            android:layout_marginTop="@dimen/dimen_margin_16dp"
            android:layout_marginEnd="@dimen/dimen_30dp"
            android:layout_marginBottom="@dimen/dimen_margin_16dp">

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab_add_gallery_image1"
                style="@style/style_ww"
                android:layout_alignParentStart="true"
                android:src="@drawable/ic_gallery_image"/>

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab_add_camera_image1"
                style="@style/style_ww"
                android:layout_centerHorizontal="true"
                android:src="@drawable/ic_camera"/>
        </RelativeLayout>
    </android.support.v7.widget.LinearLayoutCompat>
</android.support.design.circularreveal.cardview.CircularRevealCardView>

Это отлично отображается в моем приложении, как обычный CardView, и я могу сделать его видимым/невидимым одним нажатием кнопки. Но, тем не менее, я не могу найти в Интернете никаких реализаций, показывающих, как применять анимацию раскрытия, делая это представление видимым. Есть ли встроенная функция для применения анимации или мне нужно создать ее самостоятельно?


comment
Возможный дубликат Circular Reveal Android Compat With Design Library 28   -  person karan    schedule 13.02.2019
comment
developer.android.com/reference/com/google/android/ материал/   -  person Eugen Pechanec    schedule 13.02.2019


Ответы (1)


Пожалуйста, попробуйте это

int x = layoutContent.getRight();
int y = layoutContent.getBottom();

int startRadius = 0;
int endRadius = (int) Math.hypot(layoutMain.getWidth(), layoutMain.getHeight());

Animator anim = ViewAnimationUtils.createCircularReveal(layoutButtons, x, y, startRadius, endRadius);

layoutButtons.setVisibility(View.VISIBLE);
anim.start();
person user_8275    schedule 13.02.2019
comment
ViewAnimationUtils.createCircularReveal есть только в API 21+. См. developer.android.com/reference/com/google/android. /материал/ - person Eugen Pechanec; 13.02.2019
comment
Какой уровень API вы используете? - person user_8275; 13.02.2019
comment
На Lollipop вы получаете круглое вырезание из коробки. Единственная причина возиться с android.support.design.circularreveal виджетами — заставить их работать на Android 4. - person Eugen Pechanec; 13.02.2019
comment
Хорошо, пожалуйста, посмотрите ссылку ниже, надеюсь, это поможет вам stackoverflow.com/a/38394442/4329037 - person user_8275; 13.02.2019
comment
Круговое раскрытие и волновой эффект — две разные вещи. Вопрос о круговом раскрытии. Все, что вам нужно сделать сейчас, чтобы сделать ваш код совместимым с Android 4, это прочитать документацию, ссылку на которую я дал в своем первом комментарии, изменить 1 строку кода и добавить 1 строка кода. Поймите, что вы печатаете, а не просто копируйте и вставляйте код. - person Eugen Pechanec; 13.02.2019