問題タブ [fragment-transitions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
929 参照

android - フラグメントの ReenterTransition が機能していません。さまざまな Fragment トランジションを明確にするための支援が必要

RecyclerView 内のアイテム間の Fragment トランジション アニメーションと、クリックされたアイテムの詳細を示す Fragment を実装しています。つまり、比較的一般的な...

「リスト内のカードをクリックすると、詳細ビ​​ューに展開され、残りのリストは非表示になります」

...ものの種類。

RecyclerView アイテムから詳細ビューへの遷移は正常に機能しています。残りの RecyclerView アイテムがフェードアウトする間、アイテムの共有要素は新しい状態に移行しています。

ただし、BackStack がポップされると、共有要素は元の状態に戻りますが、他の RecyclerView アイテムはフェードインしません。代わりに、このスクリーン ビデオでわかるように、アニメーションの開始時に即座に表示されます。

アクティビティはかなりの数のフラグメントを処理するため、次の一般化された方法でトランザクションを実行します。

  • Enter/Return でトランジションのオーバーラップを許可/禁止して遊んでみました。
  • フラグメントのさまざまなトランジション設定方法で遊んでみました。
  • このトピックに関する多くのブログと SO の質問を読みました。

このトピックに関するhttp://www.androiddesignpatterns.com/2014/12/activity-fragment-transitions-in-android-lollipop-part1.htmlブログを見つけました。ブロッコリーのサンプル コードは非常に役に立ちましたが、問題を解決できませんでした。問題。


おそらく、各トランジションの目的を理解するのに問題があるのでしょうか?
これが私がそれを理解する方法です。

私のmCurrentFragmentと には、newFragmentそれぞれ 5 つの異なるトランジション セッターがあります。

  1. setSharedElementEnterTransitionコンテンツ Scene に転送される共有要素に使用される Transition を設定します。
  2. setSharedElementReturnTransitionバック スタックの pop中に転送される共有要素に使用される Transition を設定します。
  3. setEnterTransitionビューを最初のシーンに移動するために使用されるトランジションを設定します。
  4. setExitTransitionバック スタックをポップしないときに、フラグメントが削除、非表示、またはデタッチされたときに、シーンからビューを移動するために使用される遷移を設定します。
  5. setReenterTransitionバック スタックのポップにより戻るときにビューをシーンに移動するために使用されるトランジションを設定します。

私のメソッドが呼び出されると、次のプロパティを使用して からにsetFragment遷移するアニメーションが再生されます。mCurrentFragmentnewFragment

  • SharedElementEnterTransitionは、共有要素newFragmentが にどのように遷移するかを定義します。 (私の場合、クリックされた項目の CardView が展開され、それに含まれる TextView の 1 つが移動されます)newFragment
  • newFragmentEnterTransition は、共有要素ではない残りの子ビューが画面に遷移する方法を定義newFragmentます。 (私の場合、ツールバーは画面の下部にフェードインします。実際には、ツールバーは既存の RecyclerView の後ろにフェードインしています。前にあるように交換する方法はありますか?)
  • mCurrentFragmentExitTransition は、共有要素ではない子mCurrentFragmentビューが画面から遷移する方法を定義します。 (私の場合、RecyclerView のみが含まれているため、残りの RecyclerView 要素がバックグラウンドでフェードアウトするという効果があります)
    mCurrentFragment

BackStack がポップされると、次のことが起こると予想されます。

  • の SharedElementReturnTransitionは、共有要素が に戻るmCurrentFragment方法を定義します。 (私の場合、CardView は RecyclerView アイテムのサイズに縮小され、それに含まれる TextView は元に戻されます)。mCurrentFragment
  • の ExitTransition は、共有要素ではない子ビューが画面から遷移newFragmentする方法を定義します。 (私の場合、一番下のツールバーがフェードアウトします)newFragment
  • の ReenterTransition は、共有要素ではないmCurrentFragment残りのmCurrentFragment子ビューが画面に戻る方法を定義します。 (私の場合、他の RecyclerView アイテムはフェードインするはずですが、これは起こっていません。移行中の共有要素の背後に即座に表示されます)。

私は何か誤解しましたか?

0 投票する
1 に答える
1030 参照

android - マスター/詳細ペイン レイアウトで共有要素 ImageView を ListView フラグメントから詳細ビュー フラグメントにアニメーション化する方法

私のアプリケーション タブレット レイアウトには、画像のグリッドを含むグリッド ビュー (RecyclerView) が左側にあり、詳細ビューが右側にあり、現在選択されているグリッド ビュー画像の縮小版とその画像を説明する追加のテキスト ビューが表示されます。クリックした画像ビュー (左側のグリッド ビュー フラグメント) を詳細ビュー フラグメントの一致する位置にスライドおよびスケーリングする共有要素アニメーション トランジションを提供する方法を見つけようとしています。各画像の選択をバックスタックに記録したくないため、私のアプリケーションは「入力」トランジションのみを必要とします。

OnItemClick(View view)次のように、ハンドラーで標準の共有要素サポート呼び出しを使用してみました。

"view" 変数は、ユーザーがグリッド ビューでクリックした ImageView です。私の詳細フラグメントのonCreate()メソッドにもエントリが含まれています

次の change_image_transform.xml トランジション セットも使用しています。

一緒に

これらの設定はすべて、シングル ペイン モードで適切に機能します。ユーザーがグリッド ビュー アクティビティ内の画像をクリックすると、(新しいアクティビティ内の) 詳細フラグメントがグリッド ビューを置き換え、アニメーションは入口と出口の両方のシナリオで完全に機能します。

ただし、2 ペイン モードでは、画像はグリッド ビューのソースから新しく作成された詳細フラグメントの宛先にスライドおよびスケーリングされません。私が抱えている問題は、ソース ImageView が永続的に表示されるグリッド ビュー フラグメントに存在するため、アニメーション フレームワークのトランジション処理に含まれないことが原因であると考えています。

私の検索では、単純なカスタム アニメーションを使用するという漠然とした推奨事項以外に、この問題に対する明確な答えは見つかりませんでした。テストとして単純な TranslateAnimation (スケーリングなし) を試しましたが、これには 2 つの問題がありました: 画像がグリッド ビュー フラグメントの境界を越えることができず、実際に画像を「移動」するという望ましくない副作用がありました (アニメーションが実行されている間、グリッド ビューに一時的に空のスポットが表示されます)。最終的に、目的の効果は、元の画像が消去されることなく、ソースから宛先への画像のスライドとスケーリングを確認することです。

提案やアドバイスをいただければ幸いです。

0 投票する
0 に答える
458 参照

android - Fragment Transition - RecyclerView が関連する要素をレイアウトするまで延期

RecyclerViewsフラグメントを作成し、非表示にし、準備ができたときにのみ表示するというトリックを含む2つのフラグメント間の遷移を延期していRecyclerViewます...

ここで非常によく説明されているように: https://halfthought.wordpress.com/2015/06/04/postponing-fragment-transitions/

私の問題は、recyclerviewのビューRecyclerViewが事前に描画されているときに正しくレイアウトされていないように見えるため、これが機能しないことです。乗り継ぎ開始前)。関連するすべてのビューがバインドされたときにアダプターが報告するようにアダプターを調整して、移行を続行できるようにしましたが、子ビューのレイアウトが開始されないため、これは機能しません。まだ見える…RecyclerViewonCreateViewHolderRecyclerViewRecyclerView

非表示になっているにもかかわらず、どうにかしRecyclerViewて子供を強制的にレイアウトすることはできますか? 他の提案はありますか?

0 投票する
2 に答える
97 参照

android - フラグメント遷移

3 つのフラグメントがあるアプリケーションでナビゲーション フローを作成しています。これが完全なシナリオです。

  • フラグメント A (OTP を取得)
  • フラグメント B (OTP を確認)
  • フラグメント C (パスワードの変更)

ユーザー ナビゲーションはフラグメント A から開始します。ユーザーはユーザー名と OTP を取得するための要件を入力します。XML レイアウトにフラグメント A を追加しました。

フラグメント B が動的に追加され、addToBackStack("fragmentB") も追加されました。そのため、戻るボタンをクリックすると popupbackstack が正常に動作します。

検証の確認により、ユーザーはフラグメント C (パスワードの変更) 画面に移動します。ユーザーが [戻る] をクリックすると、ユーザーは最初の画面に移動し、フラグメント B をスキップする必要があります。ポップバックしません。

以下は、フラグメント B と C をそれぞれ追加および置換するためのコードです。

編集:

0 投票する
4 に答える
16207 参照

android - FragmentTransaction でフラグメントにデータを送信する

私はこれを呼び出すフラグメントクラスにいます:

そして、現在のフラグメントを選択したフラグメントに置き換えるだけです。

私の質問は、StringFragmentTransaction を使用して、親フラグメントから子フラグメントにデータ (値など) を送信するにはどうすればよいですか?