我有一个充满物品的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项目到详细活动的过渡工作正常。但是当我单击后退按钮时,转换不会返回到单击的项目。事实上,不止一个项目是动画的。我也以我的风格启用了共享元素转换
打电话给mAdapter.setHasStableIds(true);
解决了这个问题