2016-03-21 11 views
3

で作業していないが、アイテムをクリックしたときに、波及効果は、共有の可視波及効果は、私は共有要素遷移を持つ共有要素推移とRecyclerView

スタート活動になることはありません私は、このログメッセージ

D/OpenGLRenderer: endAllStagingAnimators on 0x95e86600 (RippleDrawable) with handle 0xaa6c2760 

私が削除した場合に気づい

Intent intent = IntentUtils.createDetailsIntent(InspectionListFragment.this.getContext(), record); 
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), 
        view, getString(R.string.transition_element)).toBundle(); 
getActivity().startActivity(intent, options); 

要素推移トランジション、リップルは機能します(そして、私はこのメッセージを見ません)。

遅延活動は、私が活動を開始するpostDelayedとハンドラを使用する場合はハンドラ

の使用を開始し、その結果を混合しました。私は、リップルを見ますが、移行はように滑らかではありません。

同じ項目のレイアウトと makeSceneTransitionAnimationListViewを使用すると、正常に動作することをListViewの

使用注

handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Intent intent = IntentUtils.createDetailsIntent(InspectionListFragment.this.getContext(), record); 
      Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), 
        view, getString(R.string.transition_element)).toBundle(); 
      getActivity().startActivity(intent, options); 
     } 
    }, 200); 

。残念ながら、これは適切ではありません。

項目のレイアウト

<LinearLayout 
    android:background="?android:attr/selectableItemBackground" 
    android:clickable="true" 
    android:focusable="true" 
+0

全く同じ問題がある – jiawen

+0

私はより良い解決策を見いだせませんでした。なぜ私はListViewとRecyclerViewの間に違いがあるのか​​理解することに興味があります。 – sidecarcat

答えて

0

私は共有要素としてカード内ImageViewを持っていたとき、私は同じ問題に遭遇しました。代わりにCardViewを共有要素の遷移(と波及効果)のソースビューとして使用して解決できました。

<android.support.v7.widget.CardView 
    android:id="@+id/itemCard" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="8dp" 
    app:cardCornerRadius="@dimen/card_corner_radius" 
    app:cardElevation="@dimen/card_elevation" 
    android:layout_gravity="center" 
    android:clickable="true" 
    android:onClick="@{onItemClick}" 
    android:foreground="?android:attr/selectableItemBackground" 
    > 

私はデータバインディングを使用していますが、共有要素の変更は、基本的にちょうど別のソースビューを選択した。この前

// before: 
//onItemClickListener.onItemClick(view, getAdapterPosition(), getItemId(), Pair.create((View)b.itemImage, "activity_image")); 

// after: 
onItemClickListener.onItemClick(view, getAdapterPosition(), getItemId(), Pair.create((View)b.itemCard, "activity_image")); 

を、私も短い遅延でpostDelayedを使用してみましたが、私そのアプローチが私の好みのためにナビゲーションにあまりにも多くの遅延を加えたことがわかりました。

関連する問題