采用WindowManager添加您自己的自定义视图
在写手机卫士的时候,用户拨打|接听电话须要显示号码归属地,然后出现了一些异常。在此留下记号,希望对麻友们有帮助:
BUG教程

在使用 view = View.inflate(this, R.layout.ui_toast, null);获得View对象后wm.addView出现错误:
10-12 14:29:06.166: E/AndroidRuntime(1268): Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@41087ed8 -- permission denied for this window type
解决的方法:
使用另外的方法获取:
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDesktopLayout = inflater.inflate(R.layout.volume_panel, null);
完整代码:
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDesktopLayout = inflater.inflate(R.layout.volume_panel, null);
// 取得系统窗口
mWindowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
// 窗口的布局样式
mLayoutParams = new WindowManager.LayoutParams();
// 设置窗口显示类型――TYPE_SYSTEM_ALERT(系统提示)
mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
// 设置窗口焦点及触摸:
// FLAG_NOT_FOCUSABLE(不能获得按键输入焦点)
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
// 设置显示的模式
mLayoutParams.format = PixelFormat.RGBA_8888;
// 设置对齐的方法
mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
// 设置窗口宽度和高度
mLayoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
// 设置窗口显示的位置,否则在屏幕中心显示
mLayoutParams.x = 50;
mLayoutParams.y = 50;
mWindowManager.addView(mDesktopLayout, mLayoutParams);
问题总结
这两种方式显示出来的窗体都不会激发当前Activity的onPause()事件。
据说还能够先一个窗体风格的Activity,只是显示时会激发当前窗体的onPause()事件,详细咋样没试过。
推荐风格
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style
name="selectorDialog"
parent="@Android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowIsFloating">true</item><!--是否浮如今activity之上-->
<item name="android:windowIsTranslucent">false</item><!--半透明-->
<item name="android:windowNoTitle">true</item><!--无标题-->
<!--<item name="android:windowBackground">@drawable/selector_dialog_bg</item>背景透明-->
<item name="android:backgroundDimEnabled">false</item><!--模糊-->
<item name="android:backgroundDimAmount">0.6</item>
</style>
</resources>
OK。谢谢关注破晓博客
版权声明:本文博主原创文章,博客,未经同意不得转载。
采用WindowManager添加您自己的自定义视图的更多相关文章
- 使用WindowManager添加您自己的自定义视图
在写手机卫士的时候,用户拨打|接听电话须要显示号码归属地,然后出现了一些异常,在此留下记号.希望对麻友们有帮助: BUG教程 在使用 view = View.inflate(this, R.layou ...
- 自定义视图一:扩展现有的视图,添加新的XML属性
这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承 ...
- Android自定义视图三:给自定义视图添加“流畅”的动画
这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...
- Android自定义视图一:扩展现有的视图,添加新的XML属性
这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...
- 自定义视图引擎,实现MVC主题快速切换
一个网站的主题包括布局,色调,内容展示等,每种主题在某些方面应该或多或少不一样的,否则就不能称之为不同的主题了.每一个网站至少都有一个主题,我这里称之为默认主题,也就是我们平常开发设计网站时的一个固定 ...
- BrnShop开源网上商城第五讲:自定义视图引擎
今天这篇博文主要讲解自定义视图引擎,大家都知道在asp.net mvc框架中默认自带一个Razor视图引擎,除此之外我们也可以自定义自己的视图引擎,只需要实现IViewEngine接口,接口定义如下: ...
- 使用自定义视图的AlertDialog
使用自定义视图的AlertDialog主要分为以下几个步骤: 1)利用XML文件构建自己的的视图 2)将视图添加到AlertDialog中 * 在进行第二步之前,有时需要对对话框窗口进行额外的设置 下 ...
- 创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图
创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图 创建CRUD动作方法及视图 参照VS自带的基架(Scaffold)系统-MVC Controller with view ...
- (翻译)为你的MVC应用程序创建自定义视图引擎
Creating your own MVC View Engine For MVC Application 原文链接:http://www.codeproject.com/Articles/29429 ...
随机推荐
- xpages的comboBox能够手动输入
在xpages使用的comboBox默认仅仅能选择.不能手动输入,怎么才干手动输入呢?经过查找资料和測试,最终能够了,请大家能够试试 假设试不行,能够再下载demo http://download.c ...
- HDU5015 233 Matrix(矩阵高速幂)
HDU5015 233 Matrix(矩阵高速幂) 题目链接 题目大意: 给出n∗m矩阵,给出第一行a01, a02, a03 ...a0m (各自是233, 2333, 23333...), 再给定 ...
- ID设计
ID设计 在分布式系统中,经常需要使用全局唯一ID查找对应的数据.产生这种ID需要保证系统全局唯一,而且要高性能以及占用相对较少的空间. 全局唯一ID在数据库中一般会被设成主键,这样为了保证数据插入时 ...
- selenium 远程调用浏览器
共分三步: 1.selenium官网下载selenium-server-standalone.jar的最新版本号 2.启动selenium-server::::: java -jar "se ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...
- hdu2242(树形dp+tarjan+缩点)
hdu2242 http://acm.hdu.edu.cn/showproblem.php?pid=2242 给定n,m表示n个点,m条边 每个点有个权值 问我们删除两某条边(割边)后将图分为两个部分 ...
- Oracle SQL Lesson (6) - 使用Join进行联合查询
使用连接SQL 1999SELECT table1.column, table2.columnFROM table1[NATURAL JOIN table2] |[JOIN table2 USING ...
- iOS设备定位
一.iOS谈到定位 1.SignInSignOutViewController.h @interface SignInSignOutViewController : UIViewController& ...
- 简单ESB的服务架构
简单ESB的服务架构 这几个月一直在修改架构,所以迟迟没有更新博客. 新的架构是一个基于简单esb的服务架构,主要构成是esb服务注册,wcf服务,MVC项目构成. 首先,我门来看一看解决方案, 1. ...
- TotoiseSVN基本用法
TotoiseSVN的基本用法 TotoiseSVN的基本用法 一.签入源码到SVNserver 假如我们使用Visual Studio在目录StartKit中创建了一个项目.我们要把这个项目的源码签 ...