Я работаю над приложением, которое в настоящее время использует переход контента на ImageView
от одного фрагмента к другому при той же активности. Он работает нормально, однако я понял, что мой фрагмент назначения должен иметь свою собственную деятельность.Shared Element Переход от фрагмента к фрагменту на новую активность
Так скажем, у меня есть Activity A, который содержит фрагмент И я активность B, который содержит фрагментировать 2. Мне нужно выполнить переход общего элемента из Фрагмент 1 в Фрагмент 2.
Вот что я сделал до сих пор: В методе обратного вызова из фрагмента 1 в действие A Я передаю выбранный объект, а также изображение, с которого я хочу перейти.
активность
@Override
public void OnPhotographSelected(Photograph selectedPhoto,ImageView image) {
Intent i= new Intent(this, PhotoDetailActivity.class);
i.putExtra("photo_OBJ", selectedPhoto);
i.putExtra("transitionName", image.getTransitionName());
startActivity(i, ActivityOptions.makeSceneTransitionAnimation(this, image, "mainPhoto").toBundle());
}
активность Б
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_detail);
Photograph photoObj=new Photograph();
Bundle b = getIntent().getExtras();
String transitionName="";
if(b!=null)
{
photoObj=(Photograph)b.getSerializable("photo_OBJ");
transitionName=b.getString("transitionName");
}
PhotoDetailFragment pdf = PhotoDetailFragment.newInstance(photoObj);
pdf.setSharedElementReturnTransition(TransitionInflater.from(this).inflateTransition(R.transition.change_image_transform));
pdf.setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.change_image_transform));
pdf.setImageTransitionId(transitionName);
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.photo_detail_content, pdf);
trans.commit();
}
Фрагмент 2
mainImg.setTransitionName(mImageTransitionID);
активность Тема
<item name="android:windowActivityTransitions">true</item>
Я не вижу перехода контента во время выполнения. Как я упоминал ранее, этот переход правильно работал от фрагмента к фрагменту в рамках одной и той же активности. Также стоит отметить, что фрагмент 1 является gridview, поэтому я должен сам поддерживать имена transitionNames, поэтому они уникальны, поэтому вы видите вызовы setTransitionName во время выполнения.
Любая идея, почему я не вижу перехода?
Мое понимание фрагментов является то, что они допускают различные дисплеи в пределах одной и той же деятельности. Можете ли вы делать переходы между фрагментами, если они не в той же деятельности? –