创建通用的PopupWindow,以避免多次代码的书写。
/**
* Describe:通用的PopWindow
* Created by 76598 on 2017/9/18 12:13.
*/
public class CommonPopWindow extends PopupWindow {
private final Context context;
privatePopupWindow popupWindow;
private final Viewview;
public CommonPopWindow(Context context, int layout_res_id, int width, int height,PopClickListener popClickListener) {
super(context);
this.context= context;
view= LayoutInflater.from(context).inflate(layout_res_id, null);
initPopWindodw(context,view,width,height);
if(popClickListener !=null) {
popClickListener.getChildView(view);
}
}
/**
* 初始化PopWindow
*
*@paramcontext
*@paramview
*/
private void initPopWindodw(Context context,View view, int width, int height) {
popupWindow=newPopupWindow(view,width,height);
popupWindow.setBackgroundDrawable(newBitmapDrawable());
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.setAnimationStyle(R.style.Pop_anim);
popupWindow.setOnDismissListener(newOnDismissListener() {
@Override
public void onDismiss() {
//pop消失时将半透明背景隐藏
setPopBack(1.0f);
}
});
}
/**
* 设置弹框时窗体的透明度
* 0.0 ~ 1.0 之间,0.0完全透明,1.0安全不透明
*/
private void setPopBack(floatf) {
WindowManager.LayoutParams params = ((Activity)context).getWindow().getAttributes();
params.alpha= f;
((Activity)context).getWindow().setAttributes(params);
}
public void dismiss() {
if(popupWindow.isShowing()) {
popupWindow.dismiss();
}
}
public void showAtLocation(intgravity, intx, inty) {
if(!popupWindow.isShowing()) {
setPopBack(0.5f);
popupWindow.showAtLocation(view,gravity,x,y);
}
}
public void showAsDropDown(View view) {
if(!popupWindow.isShowing()) {
setPopBack(0.5f);
popupWindow.showAsDropDown(view);
}
}
public interfacePopClickListener {
voidgetChildView(View view);
}
}