次のように機能する2つのアクティビティ間で共有要素の遷移があります。
Intent someintent = new Intent(this, someclass.class);
if (Build.VERSION.SDK_INT >= 21) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this
, new Pair<>(viewClicked.findViewById(R.id.someimage), "someimage")
, new Pair<>(viewClicked.findViewById(R.id.someicon), "someicon")
);
startActivity(someintent, options.toBundle());
}
else {
startActivity(someintent);
}
これは問題なく機能しますが、移行は非常に遅いです。画像が最初にクリックされたとき、遷移が行われる前に1、2秒停止しているように見えます。これは、ロードされているアクティビティの「重み」が原因ですか、それとも遅延を構成できますか?
enterTransition
とreturntransition
の期間を変更してみましたか。
private Transition enterTransition() {
ChangeBounds bounds = new ChangeBounds();
bounds.setDuration(2000);
return bounds;
}
private Transition returnTransition() {
ChangeBounds bounds = new ChangeBounds();
bounds.setInterpolator(new DecelerateInterpolator());
bounds.setDuration(2000);
return bounds;
}
そしてonCreate
:
getWindow().setSharedElementEnterTransition(enterTransition());
getWindow().setSharedElementReturnTransition(returnTransition());
すでにトランジションをスタイルに設定している人を助けるかもしれない別の方法:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().getSharedElementEnterTransition().setDuration(2000);
getWindow().getSharedElementReturnTransition().setDuration(2000)
.setInterpolator(new DecelerateInterpolator());
}