Window
能看见的都是都是view,和view关联的就是window(包括activity,dialog,toast等等都是window)。Window 表示一个抽象的窗口概念, Window实际是看不见的。window包括应用window,子window,系统window三种。
windowmanager
windowmanager就是用来管理window的,对window的一切操作都是由windowmanager完成的。Windowmanager继承自Viewmanager,Viewmanager中定义了三个方法:
addView(View var1, LayoutParams var2)、
updateViewLayout(View var1, LayoutParams var2)、
removeView(View var1)。
这三个方法就是就是window提供的主要功能,给window添加view、更新view、删除view。
另外,windowmanager还有一个内部类LayoutParams,通过该类可以设置大小、位置、类型、标记等参数。
使用
在窗体中可以通过getWindow获取到window窗口。
Window window = alertdialog.getWindow();
//设置自定义的view
window.setContentView(R.layout.doctortimedialog);
window.setGravity(Gravity.CENTER);
window.setBackgroundDrawableResource(R.color.transparent);
通过windowmanager添加
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams wmp= new WindowManager.LayoutParams();
wmp.type = WindowManager.LayoutParams.TYPE_TOAST;
wmp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
wmp.format = PixelFormat.RGBA_8888;
wmp.gravity = Gravity.CENTER;
wmp.width = WindowManager.LayoutParams.WRAP_CONTENT;
wmp.height = WindowManager.LayoutParams.WRAP_CONTENT;
manager.addView(view,mLayout);