0

私は私の質問を最善の方法で説明しようとします。

ContentObserver を登録/登録解除する場所を検索すると、onResume / onPause または onStart / onStop にあるはずで、onCreate / onDestroy にあるべきではないという複数の回答が表示されます。onStart / onStop で登録 / 登録解除を行ったとします。ビューが最新のデータで更新されていることを確認するには、データを取得してから onStart メソッドでビューを更新してから、ContentObserver を登録します。

すべて問題なく、マテリアル デザインの移行を伴う SharedElement まで正常に動作します。

Imagine Activity A が Data-A に登録され、onStart でデータが更新されるため、ビューが更新されます。ユーザーがアイテムに触れると、SharedElement アニメーションがこのアイテムの詳細に実行されます: Activity B with Data-A[n]

問題は、アクティビティ B からアクティビティ A に戻ったときに、データが更新されたためにリストの元のアイテムが存在しなくなり、アニメーションが望ましい動作をしていないことです。

これについて何か考えはありますか?

4

1 に答える 1

0

元のデータが置き換えられた場合は、共有要素遷移自体を使用しないでください。代わりに、スナップショットを作成し、宛先アクティビティのオーバーレイにアタッチして、目的のアニメーションを実現できます。

Shared 要素の callbacksを見てください。

基本的に、共有要素の開始時にスナップショットを取得し、それをウィンドウ オーバーレイに追加し、アニメーション化し、必要に応じて非表示にします。したがって、データがない場合は、スナップショットを使用してそのようなことをシミュレートするか、アニメーションを完全にスキップするだけです。

次のリンクを見てください。同じことを示しています。

于 2015-12-03T04:52:54.333 に答える