私は共有要素を使用してフラグメント間の遷移が必要なプロジェクトに取り組んでいます。ほぼすべてを試しましたが、トランジション効果は効きません。Android:共有要素のフラグメント化の変更
私はTimelineActivityというアクティビティを持っています。私は、2つのフラグメント、TimelineActivityに動的に追加されたListFragment、およびDetailFragmentを持っています。
ListFragment内のListView内のアイテムをクリックするたびに、そのフラグメントはDetailFragmentに置き換えられます。
<LinearLayout
android:id="@+id/transition"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF"
android:orientation="vertical"
android:padding="10dp"
android:transitionName="selectClientTransition">
</LinearLayout>
と私fragment_detail.xmlに、私は次のようしている:私が持っているリストビューのレイアウトである私のlistview_row.xmlで
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
DetailFragment fragment = DetailFragment.newInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
fragment.setSharedElementEnterTransition(new ChangeBounds().setDuration(2000));
fragment.setEnterTransition(new ChangeBounds().setDuration(2000));
setExitTransition(new ChangeBounds().setDuration(2000));
fragment.setSharedElementReturnTransition(new ChangeBounds().setDuration(2000));
}
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
fragment.setAllowEnterTransitionOverlap(true);
fragment.setAllowReturnTransitionOverlap(true);
ft.replace(R.id.timeline_container, fragment);
ft.addSharedElement(view.findViewById(R.id.transition), "selectClientTransition");
ft.addToBackStack(null);
// Start the animated transition.
ft.commit();
}
<LinearLayout
android:id="@+id/transition"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF"
android:orientation="vertical"
android:padding="10dp"
android:transitionName="selectClientTransition"
android:weightSum="12">
</LinearLayout>
私はこれを追加しました私のAppThemeに
<item name="android:windowContentTransitions">true</item>
破棄されたフラグメントは置き換えられますが、正常に機能していますが、変更の影響はありません。私は本当にここにこだわって何でも歓迎します。事前に
おかげで