MyDialog
package com.suhang.testdemo;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.WindowManager;
public class MyDialog extends Dialog {
private final Context context;
public MyDialog(Context context) {
super(context);
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.volume);
getWindow().setWindowAnimations(R.style.DialogBottom);
getWindow().setDimAmount(0f);
setSystemDialog();
}
private void setSystemDialog() {
getWindow().setType(1999);
WindowManager.LayoutParams lp = getWindow().getAttributes();
getWindow().setGravity(Gravity.CENTER | Gravity.BOTTOM);
lp.width = 300;
lp.height = 100;
lp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
lp.y = 47;
// lp.alpha = 1.0F;
getWindow().setAttributes(lp);
setCancelable(false);
setCanceledOnTouchOutside(false);
}
@Override
public void show() {
super.show();
new Handler().postDelayed(() -> dismiss(), 3 * 1000);
}
}
style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DialogBottom">
<item name="android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="android:windowExitAnimation">@anim/dialog_exit</item>
</style>
<style name="LoadingDialogStyle" parent="Theme.AppCompat.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
dialog_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:toYDelta="50%p"
android:duration="200"
/>
</set>
dialog_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="50%p"
android:duration="200"
/>
</set>