1:点击需要弹框按钮传控件id(popwindow显示在哪个view下方就传哪个id)
case R.id.edit_dz:
showPopupWindow(editDz);
break;
2:显示弹框
private void showPopupWindow(Activity activity, ImageView v) {
View view = LayoutInflater.from(activity).inflate(R.layout.circle_popwindow, null);
final PopupWindow popupWindow = new PopupWindow(view, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int popupWidth = view.getMeasuredWidth();
int popupHeight = view.getMeasuredHeight();
int[] location = new int[2];
// 允许点击外部消失
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
// 获得位置
v.getLocationOnScreen(location);
//上
popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, (location[0] + v.getWidth() / 2) - popupWidth / 2, location[1] - popupHeight);
//下
//popupWindow.showAsDropDown(v);
//左
// popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]-popupWindow.getWidth(), location[1]);
//右
// popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0]+v.getWidth(), location[1]);
//背景颜色1f是白色
setBackgroundAlpha(activity, 0.7f);
//内容显示操作
view.findViewById(R.id.txt_article).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupWindow.dismiss();
setBackgroundAlpha(activity, 1f);
}
});
view.findViewById(R.id.txt_video).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupWindow.dismiss();
setBackgroundAlpha(activity, 1f);
}
});
//点击外部消失
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
popupWindow.dismiss();
setBackgroundAlpha(activity, 1f);
}
});
//设置屏幕背景透明效果
public static void setBackgroundAlpha(Activity activity, float alpha) {
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.alpha = alpha;
activity.getWindow().setAttributes(lp);
}