Я использовал this руководство, чтобы сделать простой RecyclerView (во фрагменте) для Activity Shared Element Transition с несколькими элементами, и все это работало отлично, я пытаюсь вернуться , Хотя я передаю ViewHolder, как показано ниже, иногда анимация возврата заканчивается на другом элементе RecyclerView, который действительно плох.Возврат к действию с правильным переходом или без перехода общего элемента
public void onPetClicked(PetRecyclerViewAdapter.PetViewHolder holder, int position) {
Intent newPostIntent = new Intent(getActivity(), PostDetailsActivity.class);
newPostIntent.putExtra("TYPE", mPostType);
newPostIntent.putExtra("POSTED_PET", mPetList.get(position));
Pair<View, String> area = Pair.create(holder.itemView.findViewById(R.id.removable), "content_area");
Pair<View, String> p1 = Pair.create(holder.itemView.findViewById(R.id.ivPetImage), "petImage");
Pair<View, String> p2 = Pair.create(holder.itemView.findViewById(R.id.tvTitle), "postTitle");
Pair<View, String> p3 = Pair.create(holder.itemView.findViewById(R.id.tvInfo), "postDescription");
Pair<View, String> p4 = Pair.create(holder.itemView.findViewById(R.id.rlDate), "postDate");
Pair<View, String> p5 = Pair.create(holder.itemView.findViewById(R.id.rlLocation), "postLocation");
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(getActivity(), area, p1, p2, p3, p4,p5);
getActivity().startActivity(newPostIntent, options.toBundle());
Не будучи в состоянии исправить это я решил на самом деле не использовать возвратную анимацию так в моей второй деятельности я заменил
@Override
public void onBackPressed(){
super.onBackPressed();
supportFinishAfterTransition();
}
с
@Override
public void onBackPressed(){
super.onBackPressed();
finish();
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
}
, но теперь, когда я иду назад все общие элементы пустые!
Итак, я пытаюсь понять способ, чтобы сделать переход возврата правильным, что означает, что эффекты «затухания» исчезнут на правильном элементе, или чтобы удалить переход возврата вместе.
Редактирование: По направлению фактического его создания я попытался получить и использовать View, который был нажат вместо ViewHolder, но опять же, я получил те же результаты. Как только я прокрутил просмотр ресайклера и открыл элемент, взгляды оживились бы до строки, отличной от той, которую они начали.
public void onPetClicked(View view, PetRecyclerViewAdapter.PetViewHolder holder, int position) {
mPetList.get(position);
Intent newPostIntent = new Intent(getActivity(), PostDetailsActivity.class);
newPostIntent.putExtra("TYPE", mPostType);
newPostIntent.putExtra("POSTED_PET", mPetList.get(position));
Pair<View, String> area = Pair.create(view.findViewById(R.id.removable), "content_area");
Pair<View, String> p1 = Pair.create(view.findViewById(R.id.ivPetImage), "petImage");
Pair<View, String> p2 = Pair.create(view.findViewById(R.id.tvTitle), "postTitle");
Pair<View, String> p3 = Pair.create(view.findViewById(R.id.tvInfo), "postDescription");
Pair<View, String> p4 = Pair.create(view.findViewById(R.id.rlDate), "postDate");
Pair<View, String> p5 = Pair.create(view.findViewById(R.id.rlLocation), "postLocation");
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(getActivity(), area, p1, p2, p3, p4,p5);
getActivity().startActivity(newPostIntent, options.toBundle());
}
});
хорошо catch !! благодаря – eiran