windowmanager,View.inflate()学习笔记

整 个Android的窗口机制是基于一个叫做 WindowManager,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以 前的Activity或者Dialog之类的东东。其实我们的Activity或者Diolog底层的实现也是通过WindowManager,这个 WindowManager是全局的,整个系统就是这个唯一的东东。它是显示View的最底层了

 

API里关于windowmanager的描述

The interface that apps use to talk to the window manager.

 

程序们(-_-;)用来和window manager对话的接口。它继承了 ViewManager接口(有意思,实现了另一个接口的接口)

所以自然也就集成了ViewManager的三个方法

 

abstract void     addView(View view, ViewGroup.LayoutParams params)  //添加视图

abstract void     removeView(View view)    //移除视图
abstract void     updateViewLayout(View view, ViewGroup.LayoutParams params)  //升级Viewlayout?

 

 

windowmanager有2个静态嵌套类

 

WindowManager.BadTokenException

Exception that is thrown when trying to add view whose WindowManager.LayoutParams token is invalid.

 

当视图添加一个标志已无效的View时,将会抛出这样一个异常。

(我一开始的时候没有在manifest里添加权限时,也曾经抛出过这个异常)

 

WindowManager.LayoutParams

 

重头戏来了,使用windowmanager比较简单,就三个方法,add,move,update

但是在WindowManager.LayoutParams里可以设置View的XML属性,除了基本的width ,height外还有很多,能够进行各种组合配置,完成各种效果

呵呵,详细的可能要慢慢研究了,现在先记个大概的概念框架

 

如果要用windowmanager来实现一个简单的悬浮窗操作,在获得了windowmanager和windowmanager.LayoutParams之后

接着就要定义一个View对象,并对这个对象进行填充

于是就要用到View.inflate()方法了.


public static View inflate (Context context, int resource, ViewGroup root)

Inflate a view from an XML resource. This convenience method wraps the LayoutInflater class, which provides a full range of options for view inflation.

 

用一个XML源填充view.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值