android自定义popupWindow

来源:互联网 发布:java做自动化测试 编辑:程序博客网 时间:2024/06/06 15:41
public class SharePopupHelper implements PopupWindow.OnDismissListener {    private Context context;    private Activity act;//控制 popupWindow弹出时的 透明度    private PopupWindow popupWindow;    public SharePopupHelper(Context context, Activity act) {        this.context = context;        this.act = act;        init();    }    private void init() {        View v = View.inflate(context, R.layout.view_sharepopup, null);        popupWindow = new PopupWindow(v, LinearLayout.LayoutParams.MATCH_PARENT,                LinearLayout.LayoutParams.WRAP_CONTENT);        //或者 popupWindow = new PopupWindow(context);            popupWindow.setContentView(v);        //如果不设置BackgroundDrawable, 则点击返回键PopupWindow不会消失,        // 点击PopupWindow 外的屏幕,PopupWindow依然不会消失        popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));        //设置是否允许在外点击使其消失        popupWindow.setOutsideTouchable(true);        popupWindow.setAnimationStyle(R.style.sharepopup);        popupWindow.setOnDismissListener(this);    }    public void show(View view) {        /*指定 popupWindow有 2中方法*/        //在view 下方 有偏移        //popupWindow.showAsDropDown(view, 1, 2);        //viewParent 中 的指定位置        int[] location = new int[2];        view.getLocationOnScreen(location);        popupWindow.showAtLocation(view, Gravity.BOTTOM,                location[0], location[1] - popupWindow.getHeight());        popupWindow.update();        //        WindowManager.LayoutParams lp = act.getWindow().getAttributes();        lp.alpha = 0.5f;        act.getWindow().setAttributes(lp);    }    public void dismiss() {        if (popupWindow.isShowing()) {            popupWindow.dismiss();        }    }    @Override    public void onDismiss() {        //        WindowManager.LayoutParams lp = act.getWindow().getAttributes();        lp.alpha = 1f;        act.getWindow().setAttributes(lp);    }}
  • showAsDropDown(View anchor, int xoff, int yoff) 以anchor的左下角为参照点,定义偏移
  • showAsDropDown(android.view.View) 以anchor的左下角为参照点,不偏移
        showAtLocation(View parent, int gravity, int x, int y) 以parent为主容器,gravity为对齐参照点,定义偏移
0 0
原创粉丝点击