私はShared Element Transitions
アクティビティ間。移行は正常に機能していますが、共有要素の移行がいつ終了するかを知りたいので、他のものを表示できます。
移行先のアクティビティでonSharedElementEnd
でSharedElementCallback
を使用しようとしましたが、移行が開始される前に呼び出されます。
私が聞くことができる別のコールバックはありますか?
onMapSharedElements
内の共有要素ビューにアニメーションリスナーをバインドしようとしましたか? ViewCompat.animate(view)
は、新規またはキャッシュされたViewPropertyAnimator(Compat)
を提供し、アニメーションリスナーのバインドは簡単です。しかし、私はそれを試していません。
setEnterSharedElementCallback(new SharedElementCallback() {
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
super.onMapSharedElements(names, sharedElements);
View keySharedElementView = sharedElements.get("keySharedElement");
if(keySharedElementView != null){
ViewCompat.animate(keySharedElementView).setListener(new ViewPropertyAnimatorListenerAdapter(){
@Override
public void onAnimationEnd(View view) {
super.onAnimationEnd(view);
}
});
}
}
});
Transition.Listener
を共有要素の遷移に追加するのはどうですか?
Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
sharedElementEnterTransition.addListener(new TransitionListenerAdapter() {
@Override
public void onTransitionEnd(Android.support.transition.Transition transition) {
super.onTransitionEnd(transition);
}
});
アクティビティでonEnterAnimationComplete()
コールバックを試してください。
これはまさにあなたが探しているものだと思います。
@Override
public void onEnterAnimationComplete() {
super.onEnterAnimationComplete();
//your code
}
これが私が断片的に行うことです:
Transition sharedElementEnterTransition = getActivity().getWindow().getSharedElementEnterTransition();
sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
}
@Override
public void onTransitionEnd(Transition transition) {
}
@Override
public void onTransitionCancel(Transition transition) {
}
@Override
public void onTransitionPause(Transition transition) {
}
@Override
public void onTransitionResume(Transition transition) {
}
});
BではなくフラグメントAにTransitionListenerを追加してみてください。そして、Android.support.transition.Transition
フラグメントA
val anim = DetailsTransition()
anim.addListener(object : Android.support.transition.Transition.TransitionListener
{
override fun onTransitionEnd(transition: Android.support.transition.Transition) {
}
override fun onTransitionResume(transition: Android.support.transition.Transition) {
}
override fun onTransitionPause(transition: Android.support.transition.Transition) {
}
override fun onTransitionCancel(transition: Android.support.transition.Transition) {
}
override fun onTransitionStart(transition: Android.support.transition.Transition) {
}
})