[Android] カスタムダイアログボックスをアニメートする


Answers

私は、ChrisJDコードを使ってDialogboxのFade InとFade Outアニメーションを作成しました。

  1. res / style.xmlの内部

    <style name="AppTheme" parent="android:Theme.Light" />
    <style name="PauseDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item>
    </style>
    
    <style name="PauseDialogAnimation">
        <item name="android:windowEnterAnimation">@anim/fadein</item>
        <item name="android:windowExitAnimation">@anim/fadeout</item>
    </style>
    

  2. inside anim / fadein.xml

    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
    
  3. inside anim / fadeut.xml

    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/anticipate_interpolator"
        android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
    
  4. 主な活動

    Dialog imageDiaglog= new Dialog(MainActivity.this,R.style.PauseDialog);
    
Question

あたかもテキストビューからスライドしているかのようにカスタムダイアログを表示しようとしています。 これは可能ですか? 私はダイアログクラスにアニメーションを適用することはできません。 私はコンストラクタでこの行を試しましたが、効果はありません:

this.getWindow()。setWindowAnimations(R.anim.paranimation);

私はアニメーションが正しいかどうかもわかりませんが、それが何をしているのかを見たらそれを調整することができます。 私は完全性のために以下にリストアップします。 私は実際のアニメーションのヘルプを探しているわけではなく、ダイアログへのアプリケーションだけを探しています。

paranimation.xml:

<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-200%"
    android:toXDelta="0%"
    android:fromYDelta="200%"
    android:toYDelta="0%"
    android:duration="3000"
    android:zAdjustment="top">
</translate>



私は同じ問題を抱えていますが、最後に私は問題を次の方法で解決します

((ViewGroup)dialog.getWindow().getDecorView())
.getChildAt(0).startAnimation(AnimationUtils.loadAnimation(
context,android.R.anim.slide_in_left));



Links