共享元素转换与浮动操作按钮试探器

问题描述:

我有一个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。谢谢!

+0

究竟是什么问题? –

+0

@LukeSalamone系统无法正确对齐转换。正如你在回归过渡中看到的那样,制造厂回退了下来,但是它们向左对齐到原来的位置,而不是平常的平滑过渡。 – Orbit

+0

你有没有想过使用'overridePendingTransition()'? –

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

<?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> 

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

+1

我不知道这是如何解决这个问题。你能解释一下你的解决方案吗? – Orbit

+0

请先试试这个。 – kapoor

尽量保持窗口和片段退出/进入过渡如下所述:

<?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。无论如何,这似乎并没有工作,我相当肯定''是必需的。 – Orbit