2017-03-13 7 views
0

フェードアウトアニメーションを使用してフラグメントを終了していますが、うまくいきます。私が今したいのは、AlertDialogのアニメーションのように、既存のフラグメントの背景色を灰色にすることです。シェードでアニメーションをフェードアウトする

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

    <scale 
     android:duration="300" 
     android:fromXScale="1.0" 
     android:fromYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toXScale="0.0" 
     android:toYScale="0.0" /> 

    <alpha 
     android:duration="300" 
     android:fromAlpha="1.0" 
     android:interpolator="@android:anim/decelerate_interpolator" 
     android:toAlpha="0.0" /> 

</set> 

それは、このファイルに背景色を変更することは可能ですか私はどこかにそれを実行する必要があります。これは私のアニメーションファイルのですか?

このファイルはcenter_pop_up_exitと呼ばれ、ユーザーはリスナーがあるボタンをクリックしたときに、私はそれを使用しています:

View.OnClickListener noAccountHandler = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     SignUpFragment signUpFragment = new SignUpFragment(); 
     FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.setCustomAnimations(R.anim.slide_left_enter, R.anim.center_pop_up_exit, 0, R.anim.center_pop_up_exit); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.replace(R.id.log_in_fragment_container, signUpFragment, "SignUpFragment"); 
     fragmentTransaction.commit(); 
    } 
}; 
+0

この 'xml'ファイルはどのようにしてどこに適用しますか? – azizbekian

+0

私は質問を編集しました。 – Rob

答えて

0

私はアニメーションのXMLでそれを行うための方法を発見していません。しかし、私はTransitionDrawableを使って欲しかった効果を得ることができました。

:私は(私の場合には、これは私のフラグメントのコンテナである)に日陰をしたいビューの背景として、このファイルを設定する必要があります。その後

<?xml version="1.0" encoding="utf-8"?> 
<transition xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- The drawables used here can be solid colors, gradients, shapes, images, etc. --> 
    <item android:drawable="@color/transparent" /> 
    <item android:drawable="@color/transp_black" /> 
</transition> 

:すべてのだから、最初、私は、xmlファイルを作成しました私は私のフラグメントトランザクションを作ることができるの移行をトリガした後、最後に

shadeLayout = postMeasurementsFragment.getView().findViewById(R.id.shade); 
TransitionDrawable transitionDrawable = (TransitionDrawable)shadeLayout.getBackground(); 
transitionDrawable.startTransition(200); 

:次に

<FrameLayout 
    android:id="@+id/shade" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/transition_drawable"/> 

私はビューを取得し、ビューの背景を取得し、移行を行う

Fragment fragment = new PostMeasurementFragment(); 
FragmentTransaction fragmentTransaction = ((PostActivity)context).getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.setCustomAnimations(R.anim.slide_up_enter,0,0,R.anim.slide_down_exit); 
    fragmentTransaction.add(R.id.modal_measurement_container, fragment, "PostMeasurementFragment"); 
    fragmentTransaction.commit(); 

プラス:あなたがその移行を元に戻す必要がある場合、あなたは再びビューとビューの背景を取得し、他の遷移します:

TransitionDrawable transitionDrawable = (TransitionDrawable)shadeLayout.getBackground(); 
transitionDrawable.reverseTransition(200); 

私の場合は私がpopBackStackの前にいることを使用します。それでおしまい!

関連する問題