什么是Dialog
dismissDialog(int id):使标示为id的Dialog在界面当中消。
什么是popupwidow
PopupWindow在android.widget包下,弹出窗口的形式展示。官方文档对该控件的描述是:“一个弹出窗口控件,可以用来显示任意视图(View),而且会浮动在当前 活动(activity)的顶部”。PopupWindow可以让我们实现多种自定义控件,例如:menu、alertdialog等弹窗似的View。
dlg = new AlertDialog.Builder(BabyDatail.this,R.style.dlg( 可选项)).create();
dlg.setView(LayoutInflater.from(this).inflate(
R.layout.jiazaizhong, null)); // 设置view
dlg.show(); //显示出来
final Window window = dlg.getWindow(); // Alertdlg 可以getWindow,说明 它可以是这个窗口的管理者
window.setContentView(R.layout.jiazaizhong);
WindowManager.LayoutParams layparam = window.getAttributes();
layparam.width = getWindowManager().getDefaultDisplay().getWidth(); //设置 window的宽为屏幕宽度
window.setAttributes(layparam);
Button button=(Button) window.findViewById();
button.setOnclickListener(new OnclickListener(){
public void onClick(View v){
}
});
popupWindow的实现
LayoutInflater inflater = (LayoutInflater) context.getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
conentView = inflater.inflate(R.layout.activity_classify, null); //得到view
WindowManager.LayoutParams params= context.getActivity().getWindow().getAttributes();
params.alpha=0.5f;
context.getActivity().getWindow().setAttributes(params); //popupWindow 并不能管理 window 必须通过activity
// 设置SelectPicPopupWindow的View
this.setContentView(conentView);
// 设置SelectPicPopupWindow弹出窗体的宽
this.setWidth(LayoutParams.MATCH_PARENT);
// 设置SelectPicPopupWindow弹出窗体的高
this.setHeight(LayoutParams.WRAP_CONTENT);
// 设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
this.setOutsideTouchable(true);
// 刷新状态
this.update();
// 实例化一个ColorDrawable颜色为半透明
ColorDrawable dw = new ColorDrawable(-00000);
// 点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener ,设置其他控件变化等操作
this.setBackgroundDrawable(dw);
this.showAsDropDown(parent,0, 0); // Pw 的显示 parent 是一个view pw以它为基准 在下方 或者上方。。。显示 0 0 为x y方向 偏移
差别:
AlertDialog 用起来感觉 在 Activity 之上的另一个 窗体, 它可以 在这个窗体上 任意 操作
popwindow 与activity 关系紧密, popwindow 好像一个activity 上的一个插件 ,共同作用一个窗体
popwindow 是new 出来的 ,而 AlertDialog ,是 bulid出来的,popwindow 作为一个类 可以做一些强大的 工作
用处:
如果activity上的元素 需要和 popouwindow 上的元素 共同作用,则使用popouwindow
功能强大的 浮窗 也需要用popwidow