您的位置:首页 > 移动开发 > Android开发

Android学习中关于WindowManager的讲解(转载)

2010-04-21 16:14 543 查看
我们

Android
平台是一个又一个的

Activity
组成的,每一个

Activity
有一个或者多个

View
构成。所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个

Activity
,然后所有的操作在

Activity
里面实现,或者是一个

Dialog
或者

Toast
。这种方式固然简单,但是在有些情况下,我们要求的只是简单的显示,用

Activity
显然是多余,这个时候,我们如何处理呢?

原来,整个

Android
的窗口机制是基于一个叫做

WindowManager

,这个接口可以添加

view
到屏幕,也可以从屏幕删除

view
。它面向的对象一端是屏幕,另一端就是

View
,直接忽略我们以前的

Activity
或者

Dialog
之类的东东。其实我们的

Activity
或者

Diolog
底层的实现也是通过

WindowManager
,这个

WindowManager
是全局的,整个系统就是这个唯一的东东。它是显示

View
的最底层了。

写一个简单的代码:

WindowManager mWm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);

Button view = new Button(this);

view.setText("window manager test!");

WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();

mWm.addView(view, mParams);

一般在刚开始开发

android

时,会犯一个错误,即在

View

的构造函数中获取

getWidth()


getHeight()
,当一个

view

对象创建时,

android

并不知道其大小,所以

getWidth()


getHeight()
返回的结果是

0
,真正大小是在计算布局时才会计算,所以会发现一个有趣的事,即在

onDraw( )
却能取得长宽的原因。

width = activity.getWindowManager().getDefaultDisplay().getWidth();
height = activity.getWindowManager().getDefaultDisplay().getHeight();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: