博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用WindowManager添加您自己的自定义视图
阅读量:7048 次
发布时间:2019-06-28

本文共 2229 字,大约阅读时间需要 7 分钟。

在写手机卫士的时候,用户拨打|接听电话须要显示号码归属地,然后出现了一些异常,在此留下记号。希望对麻友们有帮助:

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()事件。详细咋样没试过。

推荐风格

 

>  <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,谢谢关注破晓博客

版权声明:本文博客原创文章。博客,未经同意,不得转载。

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4734812.html,如需转载请自行联系原作者

你可能感兴趣的文章
JS每日一题: 请简述一下vuex实现原理
查看>>
从 TodoList 中学父子组件通信
查看>>
Spring MVC常用客户端参数接收方式
查看>>
原生js实现Ajax,JSONP
查看>>
用koa开发一套内容管理系统(CMS),支持javascript和typescript双语言
查看>>
Promise面试题,控制异步流程
查看>>
css-从笔试题中看知识
查看>>
LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
查看>>
前嗅ForeSpider教程:数据浏览与可视化
查看>>
7个开放式的前端面试题
查看>>
dubbo源码解析(二十三)远程调用——Proxy
查看>>
图片无法加载的情况下的优化
查看>>
数据结构与算法 | Leetcode 141:Linked List Cycle
查看>>
推荐给新手的35个好用的Vue开源库
查看>>
简述原型链是什么,有什么用处?若想访问一个对象的原型,应该使用什么方法?...
查看>>
[LeetCode] 675. Cut Off Trees for Golf Event
查看>>
SQLServer之锁简介
查看>>
从点餐小程序说起,谈谈如何从0到1设计一款toB类产品
查看>>
CSS相对定位和绝对定位
查看>>
PHP 协程:Go + Chan + Defer
查看>>