2017-01-10 3 views
1

Я создал activity (деятельность нет. 1) с 2 Views, один button и один textView эти две точки зрения shared на другой activity (деятельность нет. 2)Android startActivity с анимацией

Я использую следующий код начать с activity1 к activity2 с общими элементами:

Pair textView = new Pair<>(view1, ViewCompat.getTransitionName(view1)); 
Pair button = new Pair<>(view2, ViewCompat.getTransitionName(view2)); 

ActivityOptionsCompat transitionActivityOptions = 
     ActivityOptionsCompat.makeSceneTransitionAnimation(
       Activity1.this, textView, button); 

Intent intent = new Intent(Activity1.this, Activity2.class); 
ActivityCompat.startActivity(Activity1.this, intent, transitionActivityOptions.toBundle()); 

Когда я нажимаю backbutton в views анимированы обратно Activity1 .The анимация остановка от работы после того, как я Override заднего бутон с помощью следующего кода:

@Override 
public void onBackPressed(){ 
    Intent intent = new Intent(Detailed.this, Main.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    intent.putExtra("morph", morphButton.getMorph()); 
    startActivity(intent); 

    finish(); 
} 

startActivity метод отмена анимации.

Я пытаюсь достичь этого, потому что я хочу перейти к Activity1 некоторым переменным. Есть ли способ сохранить анимацию с помощью метода startActivity?

+0

вы можете использовать ' setCustomAnimations (R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit); метод согласно вашим потребностям после startActivity для оживления активности –

ответ

2

Это потому, что вы начинаете новую деятельность в своем onBackPressed, а не просто вызываете finish();. Вместо этого вы можете использовать startActivityResult и установить результат в Activity1.
В вашем Activity1 используйте это:

ActivityCompat.startActivityForResult(Activity1.this, intent, yourReqCode, yourRetransitionActivityOptions.toBundle()); 

Затем в onBackPressed установить результат:

@Override 
public void onBackPressed(){ 
    Intent intent = new Intent(); 
     intent.putExtra("morph", morphButton.getMorph()); 
     setResult(RESULT_OK, intent); 
     finish(); 
} 

Затем рыбу результаты в onActivityResult из Activity1:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) { 
      case yourReqCode: 
       if (resultCode == RESULT_OK) { 
        // fetch the result from data here 
       } 
       break; 
     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
+0

Я решил проблему :) Спасибо за руководство! –

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