我有一个充满物品的recyclerview。我将Firestore用作数据存储区。这是我在适配器的onBindViewHolder期间设置过渡名称的方法。
expressionView.setTransitionName(MainActivity.FIELD_EXPRESSION + snapshot.getId());
definitionView.setTransitionName(MainActivity.FIELD_DEFINITION + snapshot.getId());
buttonsView.setTransitionName("buttons" + snapshot.getId());
这就是我在片段中调用详细信息活动的方式:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(getActivity(),
Pair.create(expressionView, ViewCompat.getTransitionName(expressionView)),
Pair.create(definitionView, ViewCompat.getTransitionName(definitionView)),
Pair.create(buttonsView, ViewCompat.getTransitionName(buttonsView)));
Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(expressionView));
Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(definitionView));
Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(buttonsView));
/*ActivityOptions options = ActivityOptions.makeCustomAnimation(getActivity(), R.anim
.activity_in, R.anim.activity_out);*/
startActivity(intent, options.toBundle());
在详细活动中,我将过渡名称设置如下:
mExpressionView.setTransitionName(MainActivity.FIELD_EXPRESSION + mEntryId);
mDefinitionView.setTransitionName(MainActivity.FIELD_DEFINITION + mEntryId);
mButtonsView.setTransitionName("buttons" + mEntryId);
从recyclerview项目到详细活动的过渡效果很好。但是,当我单击“后退”按钮时,过渡不会返回到所单击的项目。实际上,不止一项是动画。 我还启用了我的样式中的共享元素过渡
答案 0 :(得分:0)
致电mAdapter.setHasStableIds(true);
解决了问题