共享元素转换与浮动操作按钮试探器
问题描述:
我有一个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。谢谢!
答
步骤:您需要自定义您的详细布局,然后完美地过渡动画。像
<?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>
注意:您可以自定义布局和图像的大小。
答
尽量保持窗口和片段退出/进入过渡如下所述:
<?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的其他任何具有正确的过渡效果。我尝试了上次我做的一个自定义视图,并在进入转换时遇到类似的问题,而返回是完美的。
+0
FAB扩展ImageView。无论如何,这似乎并没有工作,我相当肯定'
究竟是什么问题? –
@LukeSalamone系统无法正确对齐转换。正如你在回归过渡中看到的那样,制造厂回退了下来,但是它们向左对齐到原来的位置,而不是平常的平滑过渡。 – Orbit
你有没有想过使用'overridePendingTransition()'? –