ホーム画面のViewPager内のフラグメント(RecyclerView付き)からフルスクリーンギャラリービューに展開されたイメージでトランジションが開始される、自分のアプリケーション用の共有要素トランジションを実装しましたViewPagerのフラグメント内に存在します。これは、イメージが完全に表示されていない場合は、フルスクリーンに展開する前にTabBarの上に表示されます。ここでは何が起こっているのです:Android共有要素の移行ツールバーのオーバーラップ
<?xml version="1.0" encoding="utf-8"?>
<fade xmlns:android="http://schemas.android.com/apk/res/android">
<targets>
<target android:excludeId="@android:id/statusBarBackground"/>
<target android:excludeId="@android:id/navigationBarBackground"/>
</targets>
</fade>
して終了:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:transitionOrdering="together"
android:duration="500">
<fade>
<targets>
<target android:excludeId="@android:id/statusBarBackground" />
<target android:excludeId="@android:id/navigationBarBackground" />
</targets>
</fade>
</transitionSet>
そして、私はしまし呼び出しアクティビティの共有要素のコールバックで
は、遷移がこのようになります入力してくださいマイ得られた:
View navigationBar = activity.findViewById(android.R.id.navigationBarBackground);
View statusBar = activity.findViewById(android.R.id.statusBarBackground);
if (navigationBar != null) {
names.add(navigationBar.getTransitionName());
sharedElements.put(navigationBar.getTransitionName(), navigationBar);
}
if (statusBar != null) {
names.add(statusBar.getTransitionName());
sharedElements.put(statusBar.getTransitionName(), statusBar);
}
最後に、活動テーマについてのstyles.xmlで
:
<item name="android:windowContentTransitions">true</item>
<item name="android:windowEnterTransition">@transition/details_window_enter_transition</item>
<item name="android:windowReturnTransition">@transition/details_window_return_transition</item>
は、私は本当に理解していないか、ツールバー(またはアクションバー)このオーバーラップを得ることなく移行で除外することができます。ツールバーの下にあるときに完全に表示されず、表示されている矩形からのみ展開されるように、イメージを上部にクリップするようにする方法があります。
アニメーションのターゲットに<target android:excludeId="@id/action_bar_container"/>
を追加しようとしましたが、同じことが起こります。
ご提案は大歓迎です。
これは共有要素ビューのアルファ値を減らしますが、それは意味がありますが私の場合は良く見えません。しかし、それは正しい解決策ですので、私は正しいとマークします。 – Georgi