1
PopupWindow window = new PopupWindow(activity);//的到对象
2
window.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.configlistviewbg));//设置背景
//设置PopupWindow显示和隐藏时的动画
window.setAnimationStyle(R.style.AnimationFade);
View view=LayoutInflater.from(activity).inflate(joker.housemananger.activity.R.layout.addhouseactivity_popuwindow, null,true);//将popu的布局文件实例出
long wid=activity.getWindowManager().getDefaultDisplay().getWidth(); //的到屏幕的宽
long hd=activity.getWindowManager().getDefaultDisplay().getHeight();//得到屏幕的高
View call=view.findViewById(R.id.addhouse_popuwindow_bt_callphone);//以下设置 布局文件上控件的监听器,因为这个类就继承了OnclickListener接口就直接this了
call.setOnClickListener(this);
View mess=view.findViewById(R.id.addhouse_popuwindow_bt_message);
mess.setOnClickListener(this);
View cancel=view.findViewById(R.id.addhouse_popuwindow_bt_cancel);
cancel.setOnClickListener(this);
window.setWidth(Integer.parseInt(wid+""));//设置popupWindow高度
window.setHeight(Integer.parseInt(hd/2+"")-100);//设置高度
window.setContentView(view);//设置popupwindows的内容 样子
//设置PopupWindow外部区域是否可触摸
window.setOutsideTouchable(false);
window.setFocusable(true); //设置 popupwindows获得焦点,以此来响应 返回键
3
windows.showAsDropDown(View) //显示windows,从上面向下显示
windows.showAsDropDown(View,0,0) //同第一个,加上两个偏移量,横纵轴的偏移
windows.showAtLocation(view, Gravity.BOTTOM, 0, 0); //设置popupwindow出现的位置,参1 设置出现在哪个view内,参2出现的位置,冲对面展开,参3参4 横纵轴的偏移
4
popupwindow.dismiss(); //关闭popupwindows
5 popupwindow的动画style的item的syle的值
<item name="android:windowEnterAnimation">@anim/anim_down_in</item>
<item name="android:windowExitAnimation">@anim/anim_down_out</item>
来源:oschina
链接:https://my.oschina.net/u/723981/blog/292019