3

我有RecyclerView一些卡片,每张卡片都包含一个迷你浮动操作按钮。单击卡片时,卡片上的图像和晶圆厂将用于共享元素转换。

在进行返回过渡时,浮动动作按钮会“捕捉”回其原始位置,而不是像预期的那样很好地设置动画。

这是一个显示问题的 gif:https ://gfycat.com/SnappySeparateDeer

我的代码开始活动和过渡:

Intent intent = new Intent(mContext, PlayActivity.class);

                Pair<View, String> p1 = Pair.create((View)holder.coverArt, "coverArt");
                Pair<View, String> p2 = Pair.create((View) holder.fab, "fab");
                ActivityOptionsCompat options = ActivityOptionsCompat.
                        makeSceneTransitionAnimation(mActivity, p1, p2);

                mContext.startActivity(intent, options.toBundle());

卡片上的迷你工厂:

<android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            app:fabSize="mini"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            app:layout_anchor="@id/coverArt"
            app:layout_anchorGravity="bottom|right|end"
            android:src="@drawable/ic_favorite"
            android:layout_margin="16dp"
            android:clickable="true"
            android:transitionName="fab"/>

和活动中的一个:

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        app:layout_anchor="@id/coverArt"
        app:layout_anchorGravity="bottom|right|end"
        android:src="@drawable/ic_favorite"
        android:layout_margin="16dp"
        android:clickable="true"
        android:transitionName="fab"/>

编辑:我想增加赏金,但似乎由于某种原因该功能没有在 SO 中实现。我很确定我可以为正确答案添加额外的赏金点,所以会再添加一个 +50。谢谢!

4

2 回答 2

0

尝试保持窗口和片段退出/进入转换,如下所述:

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

并且共享元素转换为:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
           android:duration="500"
           android:interpolator="@android:interpolator/decelerate_cubic">
    <changeBounds>
    <arcMotion
        android:maximumAngle="90"
        android:minimumHorizontalAngle="90"
        android:minimumVerticalAngle="0" />

    </changeBounds>
</transitionSet>

我不确定除了 ImageView 是否有正确的过渡效果。我尝试了我上次制作的自定义视图,并且在进入转换时遇到了类似的问题,而返回是完美的。

于 2016-06-10T18:57:25.283 回答
-2

步骤:您需要自定义您的详细布局,然后过渡动画完美地工作。喜欢

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="275dp">

        <ImageView
            android:id="@+id/picture"
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:fitsSystemWindows="true"
            android:scaleType="centerCrop"
            android:transitionName="picture"
            app:layout_collapseMode="parallax" />

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fabButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="5dp"
            android:layout_marginRight="16dp"
            android:src="@mipmap/like"
            android:transitionName="fabButton"
            app:fabSize="normal" />

    </RelativeLayout>

</FrameLayout>

注意:您自定义布局和图像的大小。

于 2016-06-10T07:21:16.523 回答