最新项目中不仅用到了WindowManager来在机顶盒全屏直播状态下按“菜单”键动态添加一个View,该View包含一个ListView用来显示节目列表;同时也用到了PopupWindow实现了下面的一个t9输入法的页面:
点击1到9的某个按钮时候:
具体实现方法就不赘述了,就是PopupWindow的简单应用。本篇博客就是简单的说明的是PopupWindow的实现原理。 PopupWindow不是一个Window,只是一个普通的java类(它的直接父类是Object),在分析之前先说一个既定事实:PopupWindow是通过WindowManager对象来添加和删除View的。
/**
*该方法主要作用就是初始化mContentView
*和WindowManager
*/
public void setContentView(View contentView) {
if (isShowing()) {
return;
}
//初始化PopupWindow的mContentView
mContentView = contentView;
//获取contentView所属的context,并赋值给PopupWindow的mContext变量
if (mContext == null && mContentView != null) {
mContext = mC