您的位置:首页 > 移动开发 > Android开发

Android的悬浮窗式对话框

2017-02-14 14:56 176 查看
Android中的悬浮式对话框调出后,无论是物理返回键,Home键还是锁屏键,都无法取消掉。锁定手机的不二之选!!

来看代码实现:

1、悬浮窗权限申请!悬浮窗权限申请!!悬浮窗权限申请!!! 重要的事说三遍。特别是Android6.0以后的手机,特别要注意!但是这个权限动态申请与一般的动态权限申请方式有点区别。至于怎么申请,可点击 Android 6.0悬浮窗权限申请

2、在Activity中调用,这里是通过按钮触发。也可以写在服务中!!

private void showDialog() {
View view = View.inflate(getApplicationContext(), R.layout.dialong_layout, null);
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
Button btn_ok = (Button) view.findViewById(R.id.btn_ok);
Button btn_no = (Button) view.findViewById(R.id.btn_no);

btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击了OK", Toast.LENGTH_SHORT).show();
//取消对话框
alertDialog.dismiss();
}
});
btn_no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击了NO", Toast.LENGTH_SHORT).show();
}
});

builder.setView(view);
builder.setTitle("我是悬浮窗");
builder.setIcon(R.mipmap.ic_launcher);
alertDialog = builder.create();
Window window = alertDialog.getWindow();
window.setWindowAnimations(R.style.WindowDialog);
window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
alertDialog.onWindowAttributesChanged(layoutParams);
//设置弹出框失去焦点是否隐藏,即点击屏蔽其它地方是否隐藏
alertDialog.setCanceledOnTouchOutside(true);
//设置按钮是否可以按返回键取消,false则不可以取消
alertDialog.setCancelable(false);

alertDialog.show();
}


View的布局文件就是一个简单的线性布局 dialong_layout.xml的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_no"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_margin="10dp"
android:text = "取消"
android:layout_height="wrap_content"/>

<Button
android:id="@+id/btn_ok"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_margin="10dp"
android:text = "确定"
android:layout_height="wrap_content"/>

</LinearLayout>


3、效果图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对话框 android