弹出popwindow 背景变暗

先看下效果图吧

代码如下

package com.example.administrator.popwindowdemo.view;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.PopupWindow;

import com.example.administrator.popwindowdemo.R;

/**
 * Created by Administrator on 2016/4/12.
 */
public class CustomPopwindow extends PopupWindow {
    private View mView;
    public CustomPopwindow(Activity context,View.OnClickListener itemsOnClick){
        super(context);
        initView(context,itemsOnClick);
    }

    private void initView(final Activity context,View.OnClickListener itemsOnClick) {
        // TODO Auto-generated method stub
        LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = mInflater.inflate(R.layout.select_popwindow,null);
        LinearLayout ll_select01 = (LinearLayout) mView.findViewById(R.id.ll_select01);
        LinearLayout ll_select02 = (LinearLayout) mView.findViewById(R.id.ll_select02);
        LinearLayout ll_select03 = (LinearLayout) mView.findViewById(R.id.ll_select03);
        //取消按钮
        ll_select03.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                //销毁弹出框
                dismiss();
                backgroundAlpha(context, 1f);
            }
        });
        //设置按钮监听
        ll_select01.setOnClickListener(itemsOnClick);
        ll_select02.setOnClickListener(itemsOnClick);
        //设置SelectPicPopupWindow的View
        this.setContentView(mView);
        //设置SelectPicPopupWindow弹出窗体的宽
        this.setWidth(LayoutParams.FILL_PARENT);
        //设置SelectPicPopupWindow弹出窗体的高
        this.setHeight(LayoutParams.WRAP_CONTENT);
        //设置SelectPicPopupWindow弹出窗体可点击
        this.setFocusable(true);
        //设置PopupWindow可触摸
        this.setTouchable(true);
        //设置非PopupWindow区域是否可触摸
//        this.setOutsideTouchable(false);
        //设置SelectPicPopupWindow弹出窗体动画效果
        this.setAnimationStyle(R.style.select_anim);
        //实例化一个ColorDrawable颜色为半透明
        ColorDrawable dw = new ColorDrawable(0x00000000);
        //设置SelectPicPopupWindow弹出窗体的背景
        this.setBackgroundDrawable(dw);
        backgroundAlpha(context,0.5f);//0.0-1.0
        this.setOnDismissListener(new OnDismissListener() {

            @Override
            public void onDismiss() {
                // TODO Auto-generated method stub
                backgroundAlpha(context, 1f);
            }
        });
    }
    /**
     * 设置添加屏幕的背景透明度
     * @param bgAlpha
     */
    public void backgroundAlpha(Activity context, float bgAlpha)
    {
        WindowManager.LayoutParams lp = context.getWindow().getAttributes();
        lp.alpha = bgAlpha;
        context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        context.getWindow().setAttributes(lp);
    }

}

在Activity中的代码:

public class MainActivity extends AppCompatActivity {
    private CustomPopwindow customPopwindow;
    private Activity mActivity;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mActivity = this;
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                customPopwindow = new CustomPopwindow(mActivity,itemsOnClick);
                customPopwindow.showAtLocation(view,
                        Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
            }
        });
    }
    //为弹出窗口实现监听类
    private View.OnClickListener itemsOnClick = new View.OnClickListener(){

        public void onClick(View v) {
            customPopwindow.dismiss();
            customPopwindow.backgroundAlpha(mActivity,1f);
            switch (v.getId()) {
                case R.id.ll_select01:
                    //do something
                    break;
                case R.id.ll_select02:
                     //do something

                    break;
                default:
                    break;
            }
        }

    };

}

源码下载:https://git.oschina.net/alicelsj/PopwindowDemo

时间: 2024-10-12 04:21:46

弹出popwindow 背景变暗的相关文章

弹出PopupWindow背景变暗的实现

弹出PopuoWindow后 代码里设置的是PopupWindow默认获取焦点 所以PopupWindow显示的时候其它控件点击是没有反应的 用到的方法是 pwMyPopWindow.setFocusable(true); 代码里还设置了 pwMyPopWindow.setBackgroundDrawable(this.getResources().getDrawable( R.mipmap.ic_launcher));// 设置背景图片,不能在布局中设置,要通过代码来设置pwMyPopWind

Android在初始化时弹出popwindow的方法

http://blog.csdn.net/sxsboat/article/details/7340759 Android中在onCreate()时弹出popwindow,很多人都有过类似的需求吧,但是直接在onCreate()中调用popwindow的showAtLocation()方法是会报异常的,原因是此时activity还没有初始化完毕,网上也有一些解决方法,但一般都是通过延时一小段时间再弹出实现的,代码不够健壮.其实可以通过不断的检测当前activity的状态,一旦初始化完毕立即调用po

设置popWindow背景变暗

1.//popWindow命名为window. //首先给window设置一个背景颜色 ColorDrawable cd = new ColorDrawable(0x000000);  window.setBackgroundDrawable(cd);  // 产生背景变暗效果,设置透明度  WindowManager.LayoutParams lp = getWindow().getAttributes();  lp.alpha = 0.4f; //之前不写这一句也是可以实现的,这次突然没效果

点击Listview弹出PopWindow的用法

先来张截图: 如图点击listview中的Item在item的下方弹出一个框框,这个框框就是用的Popwindow. 用法很简单:首先写一个PopupWindow并自定义它的布局: LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View prView = layoutInflater.inflate(R.layout.popupwind

解决安卓手机上软键盘弹出挤压背景的问题

demo: // 解决本页面软键盘弹窗背景挤压的问题 var clientHeight = document.documentElement.clientHeight || document.body.clientHeight; $(window).on('resize', function () { var nowClientHeight = document.documentElement.clientHeight || document.body.clientHeight; if (cli

swift之弹出一个背景半透明的UIViewController

坑爹的背景半透明,按网上给出oc的方法,动画结束之后,半透明效果消失.通过各种折腾,各种试验,终于搞定了. let viewController=storyboard.instantiateViewControllerWithIdentifier("对应要启动的ViewController名字") as 对应要启动的ViewController名字 viewController.view.backgroundColor = UIColor(red: 0, green: 0, blue:

2016/4/2 json:js和jquery中轻量级数据交换格式 例: 窗口弹出 popwindow

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). JSON 语法是 JavaScript 对象表示语法的子集. 数据在键值对中 数据由逗号分隔

Android:仿QQ 发表说说/上传照片 弹出框

代码很简单,主要就是几个动画而已,图标什么的就随便找了几个,效果图:      动画说明: 1.点击右上角按钮,菜单从顶部下拉弹出,同时背景变暗; 2.再次点击右上角按钮,点击返回键,或者点击空白区域(也就是变暗的部分),菜单向上收回; 3.点击菜单上的按钮响应事件,同时菜单收回(效果同2) 主体代码: public class MainActivity extends Activity { //添加数据按钮 private ImageView addDataIv; //下拉功能菜单 priva

android popwindow仿微信右上角弹出框,dialog底部显示

仿微信右上角弹出框 1.利用popwindow实现 2.popwindow的位置居于右上角 新建,弹出popwindow: /** 弹popwindow **/ <span style="white-space:pre"> </span>tv = (TextView) findViewById(R.id.textView1); <span style="white-space:pre"> </span>view_pop