1、代码
public class TopNotifyDialog extends Dialog {
private Context context;
public TopNotifyDialog(@NonNull Context context) {
this(context, R.style.top_notify_dialog_style);
}
public TopNotifyDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.top_notify_dialog_layout);
setDialogTheme();
}
//dialog属性设置
private void setDialogTheme() {
//设置布局顶部显示
getWindow().setGravity(Gravity.TOP);
//设置背景透明后设置该属性,可去除dialog边框
getWindow().setBackgroundDrawable(new ColorDrawable());
//设置横向铺满全屏
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
//设置dialog沉浸式效果
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
}
2、样式
<style name="top_notify_dialog_style" parent="Theme.AppCompat.Dialog">
<item name="android:windowIsTranslucent">true</item>
<!--设置背景透明-->
<item name="android:colorBackground">@android:color/transparent</item>
<!--设置dialog浮与activity上面-->
<item name="android:windowIsFloating">true</item>
<!--去掉背景模糊效果-->
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowNoTitle">true</item>
<!--去掉边框-->
<item name="android:windowFrame">@null</item>
<item name="android:windowEnterAnimation">@anim/slide_down_from_top</item>
<item name="android:windowExitAnimation">@anim/slide_up_to_top</item>
</style>
3、效果

本文介绍了一种在Android应用中创建顶部显示的通知对话框的方法,包括自定义对话框类、设置对话框主题以及实现对话框的沉浸式效果。通过代码和样式配置,实现了对话框在屏幕顶部显示、背景透明及边框去除等功能。
1159

被折叠的 条评论
为什么被折叠?



