表示/非表示を使用して、画面の一部を占めるフラグメントを表示します。何らかの理由で、フラグメントが表示されているときにはslide_in_left
のアニメーションが再生されますが、フラグメントが隠されているときにアニメーションが存在しない場合、フラグメントは消えます。私はslide_in_left
アニメーションをexit
とenter
の両方に使用しようとしましたが、これは役に立ちませんでした。サポートパッケージにコードをトレースすると、アニメーションが作成され、それを表示するコードが実行されます。これは、問題はそのmy_fragment
事実とは何かを持っている可能性があります :ここslide_out_left
アニメーション終了アニメーションが機能しません。 FragmentTransactionカスタムアニメーションが非表示のために機能しない
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-50%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
を編集するためのXMLがあります念の
FragmentManager fm = _activity.getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.my_fragment);
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left);
if (fragment.isHidden()) {
ft.show(fragment);
fragment.setUserVisibleHint(true);
} else {
ft.hide(fragment);
}
ft.commit();
(私は.hide
コールをトレースし) Webビューを共有する別のフラグメントと画面幅を共有します。 my_fragmentのために.showが実行されると、それは可視になり、水平線形レイアウト内のスペースを共有します(2つのフラグメントのそれぞれがどれくらいの画面幅を占めるかは、weightパラメータによって決まります)。
今のところ、2番目のフラグメントを最初のフラグメントの上に表示することでこの問題を回避しました(最初のものをパリティに覆う)。このようなレイアウトのシナリオでは、アニメーションは正常に動作します。 –