2016-05-05 4 views
1

を延期しましたAに戻ってActivity Bから行くときSharedElementTransitionは、それが終了したら、私は、それが終了したら、Activity Aに戻りSharedElementTransitionを開始ContentTransitionActivityのBを開始したいContentTransitionActivityのB.SharedElementTransitionとContentTransitionは、両方が出て遊ぶ私は、次の遷移を持っていると思い、<code>ImageView</code>を共有しているタイミング

を開始します

Transitionsの遅延時間をどのように設定しますか? 私はコールバックリスナーのようなものが必要だと思っていますが、どちらを使うべきかはわかりません。

答えて

2

この特定の状況では、ニーズに応じて2つのコンポーネントを活用できます。

まず、あなたが共有要素のコールバックを使用してSharedElementCallback

を活用する必要があります、あなたは共有要素の遷移が(とりわけ)完了時に決定することができるでしょう。これは「コンテンツ遷移」と呼ばれるように、別の遷移を実行するのに最適な場所です。したがって、アクティビティBの共有要素の遷移が終了として検出された後、コンテンツ遷移を実行します。

逆に、共有要素の移行が開始される前に移行を実行するのは少し面倒です。このためには、共有要素の遷移に開始遅延を追加する必要があります。これを達成する1つの方法は、次のようなものになります。

getWindow().getSharedElementReenterTransition().setDuration(500); 

遷移をXMLで定義することもできます。

第二に、あなたはAppCompatActivityの一部である

onEnterAnimationComplete()

上に読んでください。アクティビティAでこの関数をオーバーライドすることができます。このコールバックは、アクティビティの遷移を入力すると呼び出されます。これは、共有要素の遷移と同じではありません。これは、デフォルトでは、共有要素の遷移に関連するビューを除いて、アクティビティに起こるフェードアウト/フェードインです。

ので、理論的には、あなたが可能性:

  1. を再入力共有要素遷移
  2. に開始遅延を設定して活動Aさんは、移行が完了して入力して、カスタムのコンテンツ転移」
を実行したときに検出

タイミング(開始遅延とアニメーションの継続時間)が正しい場合は、これが機能します。

共有要素トランジションは、いくつかの多くの可動部分があるため、最初は非常に急峻な学習曲線が付いています。私はthis readを出発点としてお勧めします。

また、彼らはかなり気の利いたものを作成するために、共有要素の移行と並行して「コンテンツトランジション」として活用することができるようにExplode()Slide()、およびFade()

としての活動に建てられた遷移上に読んでください。

0

これに対するコールバックはありません。そしてそれを行うための直接的な方法はありません。 申し訳ありません。

+1

あなたはそれが簡単ではない理由を説明していますか?また、これを取り除くためにアプリケーション開発者は何をしています。彼らは何かをしているに違いない。 – toobsco42

+0

あなたはアプリをオフにしていますか? – roiberg

+0

私は何が間違っているかを考え出しました。私はstartDelayとdurationを、すべてのタイミングを捨てていたトランジションのいくつかに加えました。これら2つの属性を適切に使用すると、必要なタイミングが設定されます。また、私は物事をスローしたwindowReturnTransitionの代わりにwindowExitTransitionを使用していました。 – toobsco42

関連する問題