1
在我的應用程序我有一個RecyclerView看起來像這樣: screenshotRecyclerView共享元素的過渡 - 返回到不同位置
每一項代表一個消息;未讀消息總是出現在列表的頂部。如果你點擊任何項目,整個片段將被替換爲相應的DetailsFragment。我已經設置了一個從列表項背景到細節片段背景的共享元素轉換,以實現「擴展」效果。當選定的信息已經被閱讀時,它可以很好地工作;但是,如果您打開未讀郵件,則會將其標記爲已讀,從而更改列表中的位置。如果您嘗試使用RecyclerView返回片段,則不會播放共享元素轉換:細節片段隨着默認轉換(淡入淡出)而消失。 我搜索了文檔,但共享元素轉換沒有很好地記錄。有誰知道這個問題的任何解決方案或解決方法?
編輯:我成立了過渡的RecyclerView的的onClick如下:
@Override
public void onItemClick(View view, int position) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MessageDetailsFragment fragment = MessageDetailsFragment.newInstance(message);
RelativeLayout background = (RelativeLayout) view.findViewById(R.id.three_line_list_item_background);
TransitionInflater transitionInflater = TransitionInflater.from(getContext());
Transition t = new Fade();
Transition details_enter = transitionInflater.inflateTransition(R.transition.details_enter);
Transition details_exit = transitionInflater.inflateTransition(R.transition.details_exit);
fragment.setSharedElementEnterTransition(details_enter);
fragment.setSharedElementReturnTransition(details_exit);
setSharedElementEnterTransition(details_enter);
setSharedElementReturnTransition(details_exit);
fragment.setExitTransition(t);
fragment.setEnterTransition(t);
fragment.setReturnTransition(t);
fragment.setReenterTransition(t);
setEnterTransition(t);
setExitTransition(t);
setReturnTransition(t);
setReenterTransition(t);
fragmentTransaction.addSharedElement(background, background.getTransitionName());
fragmentTransaction.addToBackStack(null).commit();
fragmentTransaction.replace(((ViewGroup) getView().getParent()).getId(), fragment);
}
過渡名稱(唯一消息ID組成)在RecyclerView適配器的onBindViewHolder()和DetailFragment的onCreateView()
編程設置
但代碼在哪裏呢? – AlphaQ