私はアクティビティ間でShared Element Transitions
を使っています。移行は正常に動作していますが、共有要素の移行がいつ終了して他のものを表示できるかを知りたいと思います。共有要素の移行がいつ終了するかを知る方法
onSharedElementEnd
をSharedElementCallback
で使用しようとしましたが、私は移行中ですが、移行が開始される前に呼び出されます。
私は聞くことができる別のコールバックはありますか?
私はアクティビティ間で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
}
見た目はいいですが、フラグメントトランジションでどのように使用するかについての提案はありますか? –
どのように使用しますか?私は – kemdo
は、私がフラグメントに何をすべきかです:
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) {
}
});
あなたがこれが間違っていることに応じて知っていません。 SharedElementTransitionでフラグメントトランザクションを開始する場合は、断片化したgetActivity()。getWindow()を使用せずに直接getSharedElementEnterTransition()を呼び出す必要があります。onAttach() –
こんにちは。このフラグメントは、トランザクションの開始ではなく、終了です。これは結末のための良い練習ですか?ありがとう、 –
はい、私はこれを私の断片で好きです。 fragmentAがFragmentBを呼び出すと、これはfragmentBになります。 –
のみ第2の解決策は、私のために働きました。 –
不思議なことに、 'TransitionListenerAdapter'は' Transition.TransitionListener'インターフェースの空の実装に過ぎません。それは@ alex-lockwoodの公開プロジェクトから取られる可能性が高い:https://github.com/alexjlockwood/activity-transitions/blob/master/app/src/main/java/com/alexjlockwood/activity/transitions/TransitionListenerAdapter。 java – gnuf
@gnufインターフェイスのアダプタは、必要なメソッドだけを実装できるようにするためのものです。これはandroid sdkとjavaのすべてのリスナーアダプタで一般的です。これはあなたのコードをきれいに整えます。 –