幻灯片动画自定义提醒 activity

Slide animation custom alert activity

我有自定义警报对话框 activity 我想在视图出现和退出时设置动画,第一个有效(出现时)但第二个无效,我不知道退出时如何动画(点击外面)如果有人可以帮助我提前谢谢你

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);
    }

}

styles.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>

在 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;

希望如此,如果不行,请随时询问。

您需要重写 activity 的完成并调用相同的方法:

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