PopupWindow的使用总结

XSize的主页

本文要讲述的知识点:

  • android 中PopupWindow的使用

基本使用

    // 用于PopupWindow的View
    View contentView=LayoutInflater.from(context).inflate(layoutRes, null, false);
    // 创建PopupWindow对象,其中:
    // 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,
    // 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点
    PopupWindow window=new PopupWindow(contentView, 100, 100, true);
    // 设置PopupWindow的背景
    window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    // 设置PopupWindow是否能响应外部点击事件
    window.setOutsideTouchable(true);
    // 设置PopupWindow是否能响应点击事件
    window.setTouchable(true);
    // 显示PopupWindow,其中:
    // 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
    window.showAsDropDown(anchor, xoff, yoff);
    // 或者也可以调用此方法显示PopupWindow,其中:
    // 第一个参数是PopupWindow的父View,第二个参数是PopupWindow相对父View的位置,
    // 第三和第四个参数分别是PopupWindow相对父View的x、y偏移
    // window.showAtLocation(parent, gravity, x, y);

这段代码是从Android PopupWindow使用方法小结文章中拷贝过来的,其实我就是懒的去写。正好看见这篇文章写的还是不错的就拷贝过来了!

这里和大家分享一个我遇到的问题:
1.设置尺寸的时候我使用的是ViewGroup.LayoutParams.WRAP_CONTENT,但是展示出来的布局过大的问题,一般这个问题应该是你在布局中使用了match_parent造成的,

常见的一些修改:

1.设置popupWindow显示的背景问题(背景设置成半透明):

我在网上找了一种最简单的方法,但是基本上能满足上述要求(就是设置Activirty的透明度)

步骤1:当popupWindow调用show方法后,设置activity的alpha值

        //显示背景
        WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();
        lp.alpha = 0.8f;
        getActivity().getWindow().setAttributes(lp);

步骤2:监听popupWindow的setOnDismissListener(关闭的监听,这里主要是为了设置相应的Activyt的alpha值)

        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
            //在dismiss中恢复透明度
            public void onDismiss() {
                WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();
                lp.alpha = 1f;
                getActivity().getWindow().setAttributes(lp);
            }
        });

以上两个步骤就可以实现popupWindow背景的半透明效果(这里的透明度可以自己进行相应的设置)。

2.设置popupWindow的动画效果

说明一下popupWindow只有设置animationStyle的方法,没有设置相应一个动画的方法,所以这里为了实现效果是要写一个相应的AnimationStyle的

步骤1:编辑动画的一些内容


 
 

   
   





    
    



    

步骤2:添加相应的style

        //设置动画
        mPopupWindow.setAnimationStyle(R.style.take_photo_anim);

注意这个应该设置在相应的show方法之前!!!切记。。。

你可能感兴趣的:(PopupWindow的使用总结)