Я подозреваю, что это происходит из-за того, что имя перехода не установлено, но я не могу определить, является ли это причиной, или есть другая причина, или что я делаю неправильно, или что отсутствует, вот мой код:
при щелчке элемента в окне повторного просмотра: я не установил имя перехода в представлении привязки, если я это делаю, также не работает
holder.iv.setTransitionName(MainActivity.position + "ZoomImage");
MainActivity.position = position;
ImagePagerFragment productDetailFragment = new ImagePagerFragment();
productDetailFragment.setEnterTransition(R.transition.image_shared_element_transition);
productDetailFragment.postponeEnterTransition();
getActive.getSupportFragmentManager()
.beginTransaction()
.setReorderingAllowed(true)
.addSharedElement(holder.iv, holder.iv.getTransitionName())
.replace(R.id.fragment, productDetailFragment)
.addToBackStack(null)
.commit();
в ImagePagerFragment:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
prepareSharedElementTransition();
postponeEnterTransition();
}
prepareSharedElementTransition ();:
Transition transition =
TransitionInflater.from(getContext())
.inflateTransition(R.transition.image_shared_element_transition);
setSharedElementEnterTransition(transition);
setEnterTransition(transition);
setEnterSharedElementCallback(
new SharedElementCallback() {
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
Fragment currentFragment = (Fragment) viewPager.getAdapter()
.instantiateItem(viewPager, viewPager.getCurrentItem());
View view = currentFragment.getView();
if (view == null) {
return;
}
sharedElements.put(names.get(0), view.findViewById(R.id.image1));
}
});
Адаптер на ViewPager просто возвращает фрагмент ImageFragment в ImageFragment при обратном вызове Picasso Success:
ivZoom.setTransitionName(MainActivity.position + "ZoomImage");
getParentFragment().startPostponedEnterTransition();
для выхода из ImageFragment У меня есть кнопка при нажатии кнопки:
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
getParentFragment().getFragmentManager().popBackStack();
ivZoom.getTransitionName();
}
}, 500);
}
});
и при выходе переход не работает
onBind адаптера просмотра повторного просмотра:
Picasso.with(context)
.load(imageArrayList.get(position).getUrl())
// .networkPolicy (NetworkPolicy.OFFLINE)
.placeholder(R.drawable.loading_tall)
.fit().centerCrop()
.into(holder.iv, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// holder.iv.setTransitionName(MainActivity.position + "ZoomImage");
}
}
@Override
public void onError() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// holder.iv.setTransitionName(MainActivity.position + "ZoomImage");
}
}
});