笔记62--WindowManager

参考: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                   电话服务

==================================================================================



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值