android system alter window实现系统提示框

原创 2016年08月30日 09:11:34

android 实现系统提示框

实际工作中,特别是定制设备和系统,经常会需要弹出些系统级别的提示框,如程序的后台升级下载,完成进度等等,在不影响其他程序的正常使用的同时进行有效的提示,提示级别为系统级别,也就是无论你退不退出程序都会在屏幕最外层界面显示提示框。

因此提示框的显示和逻辑最好写在service里面,使用system alter window需要添加权限:

<!--系统对话框权限-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

添加提示框:

windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

mView = LayoutInflater.from(context).inflate(R.layout.window_manager_popwin, null);
titleView = (TextView)mView.findViewById(R.id.title);
progressView = (TextView)mView.findViewById(R.id.progress);

params = new WindowManager.LayoutParams();

// 类型
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;

// WindowManager.LayoutParams.TYPE_SYSTEM_ALERT

// 设置flag

int flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// 如果设置了WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,弹出的View收不到Back键的事件
params.flags = flags;
// 不设置这个弹出框的透明遮罩显示为黑色
params.format = PixelFormat.TRANSLUCENT;
// FLAG_NOT_TOUCH_MODAL不阻塞事件传递到后面的窗口
// 设置 FLAG_NOT_FOCUSABLE 悬浮窗口较小时,后面的应用图标由不可长按变为可长按
// 不设置这个flag的话,home页的划屏会有问题

params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;

/*params.width = mView.getWidth();
params.height = mView.getHeight();*/

params.gravity = Gravity.BOTTOM|Gravity.RIGHT;
params.x = 20;  //相当于margin设置
params.y = 20;
windowManager.addView(mView, params);

取消提示框只需:

if(mView!=null){
    windowManager.removeView(mView);
}

实际运行效果如下:



android 系统提示对话框(AlertDialog)的使用

在按键单击事件中添加创建对话框并设置相关属性。        dialogButton=(Button)findViewById(R.id.bt_hello); dialog...

Android弹出对话框--Alertdialog(系统自带的)

一. 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到...

Receiver里面启动dialog引发的一系列错误解决(SYSTEM_ALERT_WINDOW)

首先,在receiver中show出dialog的做法: @Override public void onReceive(final Context context, Intent intent) ...

Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限

方案一、 1、在开发中有时会用到全局弹出对话框但必须在manifest中申请权限:2、创建Dialog AlertDialog.Builder builder=new AlertDia...

Android 在Service中弹出窗口及SYSTEM_ALERT_WINDOW权限解决方法

方案一、 1、在开发中有时会用到全局弹出对话框但必须在manifest中申请权限:带来的问题: 1. 用户在安装应用时会询问用户是否授权问题 2. 同时在小米手机上默认是禁止系统弹出框的,应用中的...

android 6.0之后 android.permission.SYSTEM_ALERT_WINDOW使用方法变动

在android6.0之前想要用service弹出对话框还蛮简单的,这是之前的方法但是改版之后因为安全的问题, android 系统觉得开发者要放这种功能需要使用者”认真”的同意,于是以后要使用弹出...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

私有构造函数 私有析构函数

很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将 其放入private区段中...
  • zhubo22
  • zhubo22
  • 2012年10月07日 16:51
  • 614

android开发之自定义dialog及dialog替换activity好处

根据我的项目经验,主要讲解两个方面知识点。 1)自定义全屏Dialog。 2)使用全屏Dialog替代Activity的好处。 一、如何自定义全屏Dialog 自定义Dialog是非常有必要的,如...

pb 调用WINDOW系统自带气泡提示框

  • 2011年09月13日 10:43
  • 16KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android system alter window实现系统提示框
举报原因:
原因补充:

(最多只允许输入30个字)