私は2つのアクティビティA
とB
にSharedElementを持っています。 Activity A
がActivity B
で始まり、その遷移を待機する場合は、終了するリスナーと再入力の両方が呼び出されます。Window#getSharedElementTransition()を理解する
ここで呼び出すActivity A
のためのコード:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().getSharedElementReenterTransition().addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
Log.i("Log", "A REENTER");
}
...
});
getWindow().getSharedElementExitTransition().addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
Log.i("Log", "A EXIT");
}
...
});
getWindow().getSharedElementEnterTransition().addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
Log.i("TestApp", "A ENTER");
}
...
});
getWindow().getSharedElementReturnTransition().addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
Log.i("TestApp", "A RETURN");
}
...
});
}
public void onClick(View v){
Intent intent = new Intent(this, Act2.class);
Pair<View, String> pair1 = Pair.create(findViewById(R.id.textView), findViewById(R.id.textView).getTransitionName());
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, pair1);
startActivity(intent, options.toBundle());
}
}
私は今(Activity B
を開始する)onClick()
を実行し、その後Activity A
に戻るには、戻るボタンをヒットした場合、次のように、ログは次のようになります。
A REENTER
A EXIT
B ENTER
B RETURN
B ENTER
B RETURN
A REENTER
A EXIT
私はそれがあることを期待する
A EXIT
B ENTER
B RETURN
A REENTER
私のトランジションは、上記のコードだけで構成されています。だから、彼らは長くかかるべきではありません。また、onExitとonReenterの間に別のことをする必要がある場合、それが私を助けますか? [私はより多くの情報を提供するために元の投稿を調整しました。 ] – AljoSt