笔记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                   电话服务

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



0 0