android悬浮窗口的创建
2016-06-07 15:56
387 查看
android悬浮窗口的创建。
整个Android的窗口机制是基于一个叫做 WindowManager,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以前的Activity或者Dialog之类的东东。其实我们的Activity或者Diolog底层的实现也是通过WindowManager,这个 WindowManager是全局的,整个系统就是这个唯一的东东。它是显示View的最底层了。
显示悬浮窗口,就必须需要这个WindowManager。
首先在其他应用之上显示,需要申请权限,在AndroidManifest.xml中申明
然后程序中获得WindowManager对象
接着获取WindowManager.LayoutParams,需要其设置相关的窗口布局参数,设置正确的布局参数,才能正常显示悬浮窗口
主要设置参数有
设置完成布局参数后,就可以按照以上布局将悬浮窗的view加入到界面上显示了
view就是你要显示的悬浮窗界面了
然后是移除悬浮窗,也比较简单
传入你刚才添加的view对象就可以了。
整个Android的窗口机制是基于一个叫做 WindowManager,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以前的Activity或者Dialog之类的东东。其实我们的Activity或者Diolog底层的实现也是通过WindowManager,这个 WindowManager是全局的,整个系统就是这个唯一的东东。它是显示View的最底层了。
显示悬浮窗口,就必须需要这个WindowManager。
首先在其他应用之上显示,需要申请权限,在AndroidManifest.xml中申明
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
然后程序中获得WindowManager对象
WindowManager mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
接着获取WindowManager.LayoutParams,需要其设置相关的窗口布局参数,设置正确的布局参数,才能正常显示悬浮窗口
private WindowManager.LayoutParams wmParams=new WindowManager.LayoutParams();
主要设置参数有
wmParams.type = LayoutParams.TYPE_PHONE; // 设置window type,或者LayoutParams.TYPE_TOAST,都可以显示,(据说Type_Toast有些系统能不用申请权限,未具体测试) wmParams.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明,不设置透明会很丑,除非你需要自定义背景 /* * 下面的flags属性的效果形同“锁定”。 悬浮窗不可触摸,不接受任何事件,同时不影响后面的事件响应,不设置该属性就可以接收触摸响应事件。 */ wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE; wmParams.gravity = Gravity.RIGHT| Gravity. CENTER_VERTICAL; // 调整悬浮窗口至右侧中间 // 以屏幕左上角为原点,设置x、y初始值 wmParams.x = 0; wmParams.y = 0; // 设置悬浮窗口长宽数据,也可以是具体数值,参考xml布局文件中相应属性 wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;; wmParams.height =WindowManager.LayoutParams.WRAP_CONTENT;;
设置完成布局参数后,就可以按照以上布局将悬浮窗的view加入到界面上显示了
mWindowManager.addView(view,wmParams);
view就是你要显示的悬浮窗界面了
然后是移除悬浮窗,也比较简单
mWindowManager.removeView(view);
传入你刚才添加的view对象就可以了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories