Android之窗口浅析

时间:2022-07-25 17:01:26

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);