android 多activity 弹框 置顶展示
时间: 2023-10-20 20:05:30 浏览: 41
要在 Android 中的多个 Activity 中弹出对话框并将其置于顶部,可以使用以下步骤:
1. 创建一个单独的类来管理对话框的显示和隐藏。
2. 在该类中,创建一个无界面的 Activity 作为对话框容器,并将其属性设置为对话框样式。
3. 在 Activity 中,使用 WindowManager 将该对话框容器添加到 WindowManager 中。
4. 在需要显示对话框的 Activity 中,调用对话框管理器类的方法来显示对话框。
以下是一个示例代码:
1. 创建一个名为 DialogManager 的单例类:
```
public class DialogManager {
private static DialogManager instance;
private Dialog dialog;
private WindowManager windowManager;
private WindowManager.LayoutParams layoutParams;
private DialogManager() {
// 初始化对话框容器
Context context = MyApplication.getInstance();
View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_layout, null);
dialog = new Dialog(context, R.style.DialogStyle);
dialog.setContentView(dialogView);
// 初始化 WindowManager 和 LayoutParams
windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
layoutParams = new WindowManager.LayoutParams();
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
layoutParams.format = PixelFormat.TRANSPARENT;
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.gravity = Gravity.CENTER;
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
}
public static DialogManager getInstance() {
if (instance == null) {
instance = new DialogManager();
}
return instance;
}
public void showDialog() {
if (!dialog.isShowing()) {
windowManager.addView(dialog.getWindow().getDecorView(), layoutParams);
}
}
public void hideDialog() {
if (dialog.isShowing()) {
windowManager.removeView(dialog.getWindow().getDecorView());
}
}
}
```
2. 创建一个名为 DialogStyle 的样式:
```
<style name="DialogStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@style/DialogAnimation</item>
</style>
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
```
3. 在需要显示对话框的 Activity 中,调用对话框管理器类的 showDialog() 方法来显示对话框:
```
DialogManager.getInstance().showDialog();
```
4. 在 Activity 销毁时,调用对话框管理器类的 hideDialog() 方法来隐藏对话框:
```
@Override
protected void onDestroy() {
super.onDestroy();
DialogManager.getInstance().hideDialog();
}
```
请注意,此方法将对话框添加到 WindowManager 中,因此必须在 Activity 销毁时将其从 WindowManager 中删除,以避免内存泄漏。