問題タブ [sharedelementcallback]
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.
android - ViewPager フラグメント – 共有要素遷移
私が開発しているアプリは、画像のグリッドを表示します。画像をタップすると、詳細ビューに移動します。詳細ビューには、グリッド内のすべての画像間をスワイプできる ViewPager が含まれています。これは、パスのリスト (グリッド内のすべての画像を含む) と、タップされた画像のオフセットを渡すことによって行われるため、ViewPager はそのページを最初に表示するように設定できます。
ViewPager の現在のオフセット ページの Fragment 内で共有要素遷移を行う最良の方法は何ですか? グリッド (RecyclerView) 画像は、現在のページの全画面画像に展開されます。アクティビティの遷移を延期および再開する機能を確認したので、アプリは、画像がディスクから読み込まれるまで、共有要素の遷移の表示を待機します。しかし、ビューページャーで正しいページにアニメーション化し、ユーザーが戻ったときに現在のページに戻ることができるようにしたいと考えています (ページ間をスワイプできるため)。ここで別のページにスワイプすると、最初のページがアニメーションでグリッドに戻ります。
現在、ビューページャーのフラグメント内のすべての画像に、「image_[index]」形式の transitionName を割り当てています。詳細アクティビティを開始するときは、インデックスをオフセットとして同じ transitionName を使用します。
これに関連して、長押しで波紋を機能させる方法も考えていました。ビューのアクティブ化状態を変更すると、リップルがキャンセルされるようです。波紋が再び始まり、長押しが完了してアクティブ化状態をトリガーした後、すぐに終了する、Gmail に似た効果が必要です。
android - Viewpager を使用して Fragments 間で SharedElement Transition を実行する方法
SharedElement Transitions について多くのことを調査しましたが、onclick イベントの Transitions しか見つかりませんでした。
アニメーションの速度がユーザーのスクロール速度によって制御されるフラグメント間のアニメーションが必要です。ユーザーがスクロール中に途中で停止した場合、オブジェクトは静止している必要があります。例 : この画像では、viewpager は screen1 と screen2 の中間にあり、アニメーション オブジェクトは停止状態にあります。
これらのオブジェクトは、ある画面から別の画面に移動し、位置も変更します。
私が理解した翻訳アニメーションの部分ですが、フラグメント間のビューページャーを使用してこの共有要素の遷移を実現する方法。さらに、指のスワイプの速度でスクロール/アニメーション化する必要があります。
MainActivity.java
FirstFragment.java- このフラグメントには、ユーザーがビューページをスワイプしているときに 2 番目のフラグメントと共有する必要があるイメージビューがあります。
MyFragmentPagerAdapter.java
second_fragment.xml
first_fragment.xml
Edit1-この質問は私の質問のサブ部分であるため、コメントに記載されているリンクの複製ではありません。違いは、その質問のアニメーションが静的な速度でクリックすると発生することです。ただし、私の質問では、アニメーションの速度は ViewPager のスワイプ速度と同じでなければなりません。
android - 共有要素遷移後のアクティビティ入力遷移コーディネーターでのメモリ リーク
EnterTransitionCoordinator
共有要素遷移の使用中にメモリ リークの問題が発生しました。以下に、アプリの構造を示します。
2 つの画面があり、最初はActivity
withDrawerLayout
といくつかFragment
の s です。それらの 1 つは写真のリストで構成され、特定の写真をクリックすると、別のFragment
からへの共有要素遷移がトリガーされます。これら 2 つの s を終了して再入力するときにカスタムを使用して、共有要素の遷移を正しくマッピングしています。この素晴らしいブログ投稿に基づいてコードを作成しました: https://android.jlelse.eu/dynamic-shared-element-transition-23428f62a2afViewPager
Activity
SharedElementCallback
Activity
View
ViewPager
問題は、のアイテム間をスワイプした後Fragment
、 が破棄されているのに、View
共有要素の遷移に使用されている がActivity
のActivityTransitionState
、特に に保持されていることEnterTransitionCoordinator
です。Activity
withに再入力してからDrawerLayout
別の を開く場合も同様Fragment
です。View
共有要素の遷移に使用されるへの参照は、 が破棄されActivity
ても int のままFragment
であり、メモリ リークが発生します。
私の質問: このメモリ リークを回避する良い方法はありますか?