笔记62--WindowManager
来源:互联网 发布:天猫双十一直播数据 编辑:程序博客网 时间:2024/06/05 18:49
参考:http://blog.csdn.net/chenyafei617/article/details/6577940
一、是什么
WindowManager是Android中的一个重要的服务。WindowManager Service是全局唯一的。
二、原理
它将用户的操作,翻译为指令,发送给呈现在界面上的各个Window。Activity会将顶级的控件注册到Window Manager中,当用户触摸屏幕或键盘时,Window Manager就会通知到,而当控件有一些请求产生,也会经由ViewParent送回到Window Manager中,从而完成整个通信流程。
整个Android的窗口机制是基于一个叫做WindowManager,这个接口可添加view到屏幕(WindowManager.addView()),也可从屏幕删除view(WindowManager.removeView())。它面向的对象一端是屏幕,另一端是view。通过WindowManager.addView()方法创建的view,会根据WindowManager.LayoutParams的属性不同,产生不同的效果。比如创建系统级窗口,实现悬浮窗口效果。WindowManager用到的方法基本就三个:addView()、removeView()、updateLayout()。而WindowManager.LayoutParams的属性就多了,具体参考API或者开头贴的链接。
三、怎么用
举例说下,创建一个Button,然后通过WindowManager的实例对象的addView()添加这个Button并设置对应的LayoutParams参数。
Button bb=new Button(getApplicationContext()); WindowManager wmManager=(WindowManager) getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams(); /** *以下都是WindowManager.LayoutParams的相关属性具体用途请参考SDK文档 */ wmParams.type=2002; //这里是关键,你也可以试试2003 wmParams.format=1; /** *这里的flags也很关键代码实际是wmParams.flags |= FLAG_NOT_FOCUSABLE;40的由来是wmParams的默认属性(32)+ FLAG_NOT_FOCUSABLE(8) */ wmParams.flags=40; wmParams.width=40; wmParams.height=40; wmManager.addView(bb, wmParams); //创建View
四、WindowManager的一些接口
1)abstract Display getDefaultDisplay(); //获取默认显示的Display对象
五、Android系统服务
getSystemService(String name):根据name值来取得对应的object,然后转换成相应的服务对象。以下介绍系统对应的服务:
===============================================================
name 返回的对象 说明
WINDOW_SERVICE WindowManager 管理打开的窗口程序
LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view
ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
POWER_SERVICE PowerManger 电源的服务
ALARM_SERVICE AlarmManager 闹钟的服务
NOTIFICATION_SERVICE NotificationManager 状态栏的服务
KEYGUARD_SERVICE KeyguardManager 键盘锁的服务
LOCATION_SERVICE LocationManager 位置的服务,如GPS
SEARCH_SERVICE SearchManager 搜索的服务
VIBRATOR_SERVICE Vibrator 手机震动的服务
CONNECTIVITY_SERVICE Connectivity 网络连接的服务
WIFI_SERVICE WifiManager Wi-Fi服务
TELEPHONY_SERVICE TeleponyManager 电话服务
==================================================================================
- 笔记62--WindowManager
- WindowManager.LayoutParams学习笔记
- 系列笔记2.2、WindowManager
- Android中WindowManager学习笔记
- WindowManager的简单使用笔记
- 笔记89--WindowManager详解一
- 笔记90--WindowManager.LayoutParams2.1
- WindowManager
- windowManager
- WindowManager
- WindowManager
- WindowManager
- WindowManager
- WindowManager
- WindowManager
- WindowManager
- windowManager
- WindowManager
- POJ1088
- java不求有功,但求无过—异常处理
- Qt实现窗口拖动
- JAVA中管道通讯(线程间通讯)例子
- rtp h264注意点(FU-A分包方式说明)
- 笔记62--WindowManager
- UVA10047
- 分解质因数
- 高斯公式
- spfa算法详解
- 不可不知的DIP、IoC、DI以及IoC容器
- 构造函数和析构函数为何没有返回值
- DataGridView 合并单元格
- 简单工厂模式与工厂方法模式