通用的PopupWindow

创建通用的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);

}

}

你可能感兴趣的:(通用的PopupWindow)