我正在開發一個項目,我需要使用共享元素的碎片之間的轉換。我已經嘗試幾乎所有的東西,但過渡效果不起作用。Android:與碎片共享元素轉換
我有一個名爲TimelineActivity的活動,我有2個片段,一個動態添加到TimelineActivity的ListFragment和一個DetailFragment。
每當我點擊ListFragment中ListView中的一個項目時,碎片就被DetailFragment替換。
@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();
}
在我listview_row.xml這是爲ListView的佈局,我有:
<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我有以下幾點:
<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>
要清楚的是,碎片被替換,這是工作正常,但沒有changebounds的影響。我真的被困在這裏,所以什麼都歡迎。
在此先感謝