Androidグローバルダイアログボックス(特定のactivityに依存しない)
1660 ワード
最初の方法はシステムを利用してdialogをポップアップしますが、様子は少し醜いです.
2つ目の方法はWindowManagerを取得し、直接viewを追加することです
本質的にこの2つの原理は同じです.
[java] view plain copy
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
注意:alterはAlertDialogタイプのオブジェクトです
そしてAndroidManifestでxmlに権限を追加するには、次の手順に従います.
[java] view plain copy
"android.permission.SYSTEM_ALERT_WINDOW">
以上の方法は、私たちがポップアップするこのプロンプトボックスがシステムのプロンプトボックス、すなわちグローバルな性質のプロンプトボックスであることを宣言するので、携帯電話が起動状態にある限り、現在どのようなインタフェースの下にあるかにかかわらず、alterを呼び出すだけです.ショー()、弾けます
プロンプトボックスが表示されます.
2つ目の方法はWindowManagerを取得し、直接viewを追加することです
本質的にこの2つの原理は同じです.
[java] view plain copy
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
注意:alterはAlertDialogタイプのオブジェクトです
そしてAndroidManifestでxmlに権限を追加するには、次の手順に従います.
[java] view plain copy
"android.permission.SYSTEM_ALERT_WINDOW">
以上の方法は、私たちがポップアップするこのプロンプトボックスがシステムのプロンプトボックス、すなわちグローバルな性質のプロンプトボックスであることを宣言するので、携帯電話が起動状態にある限り、現在どのようなインタフェースの下にあるかにかかわらず、alterを呼び出すだけです.ショー()、弾けます
プロンプトボックスが表示されます.
final WindowManager wm = (WindowManager) context.getSystemService("window");
WindowManager.LayoutParams para = new WindowManager.LayoutParams();
para.height = -1;
para.width = -1;
para.format = 1;
para.flags = LayoutParams.FLAG_FULLSCREEN | LayoutParams.FLAG_LAYOUT_IN_SCREEN;
para.type = LayoutParams.TYPE_SYSTEM_ALERT;
final View mView = LayoutInflater.from(context).inflate(
R.layout.xxxxxxxxxx, null);
wm.addView(mView, para);
mView.findViewById(R.id.button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
wm.removeView(mView);
}
});