·获取WindowManager方法有两种:
1. 在Activity里getWindowManager();
2. 在Activity里getSystemService(Contex.WINDOW_SERVICE);
Android应用程序是一个Activity组成的,一个Activity的显示由一个或多个View组成。一般显示界面一般是使用Activity、Dialog、Toast。
Android的窗口机制是基于WindowManager,它是一个接口,这个接口可以添加View到屏幕,也可以从屏幕删除VIew。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以前的Activity或者Dialog。其实Activity或者Diolog底层的实现也是通过WindowManager,这个 WindowManager是全局的,单例。
以下是抄的一两个用法:
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);//添加VIew到屏幕显示
//改变Dialog背景透明度
Dialog dg = new Dialog(this);
Window window = dg.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 0.5f;
window.setAttributes(lp);
//lp.alpha = 0.5f 透明度设置 其值要合理 自己反复测试
//为什么要这个技巧 因为很多人说:弹出Dialog会导致背景变暗 有Animation发生 导致性能变慢 可以用这个改变之 而且可以借助这个 使得全透明 //不挡住Dialog后面内容的显示
//获取屏幕宽和高
width = activity.getWindowManager().getDefaultDisplay().getWidth();
height = activity.getWindowManager().getDefaultDisplay().getHeight();
Windowmanager implements ViewManager
共有三个内部类,两个方法:
借助WindowManager和它的内部类WindowManager.Layoutparams可以实现很多效果,如像一些安全卫士小图标那样浮在程序上。【http://gundumw100.iteye.com/blog/899977】【 http://tech.ddvip.com/2013-09/1379852696203072.html】
关于Display类:public final class Display extends Object
太懒不想翻译,大意是提供尺寸(size)和密度(density)等信息。显示区域包含两种描述:第一种是小于真实屏幕显示区域(即不包含status bar之类的),另一种是包含所有的。
相关的两个类一是Point:public class Point extends object implements Parelable。就两个属性x和y。有反转和偏移等方法。另一个类是DisplayMetrics:public class extend Object。A structure describing general information about a display, such as its size, density, and font scaling.获取方法是:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
这个类方法没什么,但属性很有用。用于获取密度,像素,dpi等信息。