2

Я работаю над приложением, которое в настоящее время использует переход контента на 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 во время выполнения.

Любая идея, почему я не вижу перехода?

+0

Мое понимание фрагментов является то, что они допускают различные дисплеи в пределах одной и той же деятельности. Можете ли вы делать переходы между фрагментами, если они не в той же деятельности? –

ответ

1

Попробуйте использовать postponeEnterTransition() в вашей второй активности внутри onCreate() и yourActivity.startPostponedEnterTransition() в вашем фрагменте после вы создали свой вид в onViewCreated().

Если вы используете AppCompat попробовать supportPostponeEnterTransition() и supportStartPostponedEnterTransition() или ActivityCompat.postponeEnterTransition(yourActivity) и ActivityCompat.startPostponedEnterTransition(yourActivity).

Кредиты: http://www.androiddesignpatterns.com/2015/03/activity-postponed-shared-element-transitions-part3b.html

 Смежные вопросы

  • Нет связанных вопросов^_^