2017-08-11 1 views
0

アクティビティとしてカスタムアラートダイアログが表示され、ビューが表示されて終了したときに最初のものが表示されても表示されますが、2番目のものは機能しません。誰かが助けることができるなら、私は事前にあなたに感謝する方法出口(外クリック)するときアニメーションスライドアニメーションカスタムアラートアクティビティ

public class CustomAlertActivity extends Activity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     getWindow().setBackgroundDrawable(new ColorDrawable(Color.argb(200, 255, 0, 0))); 

     ... 

     overridePendingTransition(R.anim.slide_out_down, R.anim.slide_in_out_up); 
    } 

} 

slide_out_down.xml

<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" > 
    <translate 
     android:fromYDelta="-100%p" 
     android:toYDelta="0" 
     android:duration="1000" />" 
    /> 
</set> 

slide_in_out_up.xml

<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" > 
    <translate 
     android:fromYDelta="0" 
     android:toYDelta="-100%p" 
     android:duration="1000" />" 
    /> 
</set> 

のmanifest.xml

<activity android:name=".CustomAlertActivity" 
      android:theme="@android:style/Theme.Dialog"/> 

Custom alert activity

私もMainActivity.class

public void onClick(View view) { 
       Intent intent = new Intent(MainActivity.this, CustomAlertActivity.class); 
       ActivityOptions options = 
         ActivityOptions.makeCustomAnimation(MainActivity.this, R.anim.slide_out_down, R.anim.slide_in_out_up); 
       startActivity(intent, options.toBundle()); 
} 

ソリューションでこれを試してみてください。

public class CustomAlertActivity extends Activity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     getWindow().setBackgroundDrawable(new ColorDrawable(Color.argb(200, 255, 0, 0))); 

      ... 

     getWindow().getAttributes().windowAnimations = R.style.CustomDialog; 
    } 

    @Override 
    public void finish() { 
     super.finish(); 
     overridePendingTransition(R.anim.slide_out_down, R.anim.slide_in_out_up); 
    } 

} 

スタイル.xmlの

<style name="CustomDialog" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowEnterAnimation">@anim/slide_out_down</item> 
     <item name="android:windowExitAnimation">@anim/slide_in_up</item> 
    </style> 

答えて

0

あなたがあなたの活動の仕上げをオーバーライドして、同じメソッドを呼び出す必要があります:それは動作しますが、私が呼ぶ

@Override 
public void finish() { 
    super.finish(); 
    overridePendingTransition(R.anim.slide_out_down, R.anim.slide_in_out_up); 
} 
+0

ありがとうございます、今はフラッシュなしで動作します。 –

+0

喜んで私は助けた。他の人がこれを簡単に見つけることができるように答えを受け入れてください! –

0

は、このようなのstyles.xmlに新しいスタイルを追加します。

<style name="DialogTheme"> 
    <item name="android:windowEnterAnimation">@anim/slide_out_down</item> 
    <item name="android:windowExitAnimation">@anim/slide_in_out_up</item> 
</style> 

をこのようクリックで次にコールアニメーション:

int style = R.style.DialogTheme 
dialog.getWindow().getAttributes().windowAnimations = style; 

希望を感じてくださいされていない場合、それは動作しますのでお気軽にお問い合わせください。

+0

を "は、GetWindow()のgetAttributes()windowAnimations =スタイル。" のonCreate内の私のCustomDialogActivity.classで( (Bundle)メソッド)、私は2番目のアニメーションの前に小さなフラッシュを持っていない理由はありません –

+0

アニメーションファイルでそれらを修正するだけです。 –