2016-05-31 77 views
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。謝謝!

+0

究竟是什麼問題? –

+0

@LukeSalamone系統無法正確對齊轉換。正如你在迴歸過渡中看到的那樣,製造廠回退了下來,但是它們向左對齊到原來的位置,而不是平常的平滑過渡。 – Orbit

+0

你有沒有想過使用'overridePendingTransition()'? –

回答

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

注意:您可以自定義佈局和圖像的大小。

+1

我不知道這是如何解決這個問題。你能解釋一下你的解決方案嗎? – Orbit

+0

請先試試這個。 – kapoor

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的其他任何具有正確的過渡效果。我嘗試了上次我做的一個自定義視圖,並在進入轉換時遇到類似的問題,而返回是完美的。

+0

FAB擴展ImageView。無論如何,這似乎並沒有工作,我相當肯定''是必需的。 – Orbit