网站建设读后感为什么网页不能打开建设银行网站
一:背景
WMS作为窗口管理服务,管理着系统中的所有窗口,窗口的种类有很多:Activity、Dialog、Toast、PopupWindow、StatusBar、NavigationBar、System Alart Window等,那么如此多且繁杂的窗口,是否有比较细致的分类呢?答案是肯定的:有。系统把这些窗口分为了三类:应用窗口、子窗口和系统窗口,下面来看下这三类窗口。
二:窗口类型的定义
窗口类型都是定义在WindowManager的静态内部类LayoutParams中。
2.1 应用窗口
Activity就是典型的应用窗口,应用窗口的定义范围为1-99
public interface WindowManager extends ViewManager {public static class LayoutParams extends ViewGroup.LayoutParams implements Parcelable {...//应用窗口起始值public static final int FIRST_APPLICATION_WINDOW = 1;//应用窗口的基础值public static final int TYPE_BASE_APPLICATION = 1;//普通应用窗口public static final int TYPE_APPLICATION = 2;//应用启动窗口,系统在应用启动前显示的窗口,即StartingWindowpublic static final int TYPE_APPLICATION_STARTING = 3;public static final int TYPE_DRAWN_APPLICATION = 4;//应用窗口最大值public static final int LAST_APPLICATION_WINDOW = 99;...}
}
2.2 子窗口
PopupWindow就是典型的子窗口,子窗口不能单独存在,必须依附于其他窗口(非子窗口),子窗口的定义范围为1000-1999
public interface WindowManager extends ViewManager {public static class LayoutParams extends ViewGroup.LayoutParams implements Parcelable {...//子窗口起始值public static final int FIRST_SUB_WINDOW = 1000;public static final int TYPE_APPLICATION_PANEL = FIRST_SUB_WINDOW;public static final int TYPE_APPLICATION_MEDIA = FIRST_SUB_WINDOW + 1;public static final int TYPE_APPLICATION_SUB_PANEL = FIRST_SUB_WINDOW + 2;public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW + 3;public static final int TYPE_APPLICATION_MEDIA_OVERLAY = FIRST_SUB_WINDOW + 4;public static final int TYPE_APPLICATION_ABOVE_SUB_PANEL = FIRST_SUB_WINDOW + 5;//子窗口最大值public static final int LAST_SUB_WINDOW = 1999;...}
}
2.3 系统窗口
StatusBar就是典型的系统窗口,系统窗口的定义范围为2000-2999
public interface WindowManager extends ViewManager {public static class LayoutParams extends ViewGroup.LayoutParams implements Parcelable {...//系统窗口起始值public static final int FIRST_SYSTEM_WINDOW = 2000;//StatusBarpublic static final int TYPE_STATUS_BAR = FIRST_SYSTEM_WINDOW;//SearchBarpublic static final int TYPE_SEARCH_BAR = FIRST_SYSTEM_WINDOW+1;//通话窗口public static final int TYPE_PHONE = FIRST_SYSTEM_WINDOW+2;//系统警告窗口public static final int TYPE_SYSTEM_ALERT = FIRST_SYSTEM_WINDOW+3;//锁屏public static final int TYPE_KEYGUARD = FIRST_SYSTEM_WINDOW+4;//Toastpublic static final int TYPE_TOAST = FIRST_SYSTEM_WINDOW+5;...public static final int TYPE_STATUS_BAR_ADDITIONAL = FIRST_SYSTEM_WINDOW + 41;//系统窗口最大值public static final int LAST_SYSTEM_WINDOW = 2999;...}
}
三:小结
3.1 窗口类型的定义除了区分不同种类窗口外,还有什么用?
窗口类型(即Type)的值和窗口显示息息相关。SurfaceFlinger显示时,会先对所有窗口进行排序,不同的窗口是以平行于手机屏幕的方式叠加显示的,优先级越高的窗口就离手机屏幕越远(非物理上的远近,只是借用这个概念),Type就影响了窗口的优先级,一般情况下Type越小,窗口的优先级越低,就会被更多的窗口覆盖。
