Android PopupWindow使用
1、含义 写的第一篇技术文章还有点小激动,话说popupwindow顾名思义就是类似于对话框样式布局显示,但是却有别于对话框,到底哪里有区别呢,还请客官您细细观看。 2、区别 1、对话框位置相对来说比较固定,而popupwindow位置相对随意一些,可以自由控制。 2、对话框是线程非阻塞的,而popupwindow是线程阻塞的。 3、代码说明 1、 话不多说,规矩我懂,先上图(样式比较丑还请您见谅): 2、先看popupwindow代码,容我细细道来: 1)、首先自定义一个popupwindow public class AddPopuwindow extends PopupWindow { public View mView; public AddPopuwindow(Activity context) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = inflater.inflate(R.layout.popuwindow_dialog, null); int height = context.getWindowManager().getDefaultDisplay().getHeight(); int width = context.getWindowManager().getDefaultDisplay().getWidth(); // 设置选择的popuwndow的View this.setContentView(mView); // 设置弹出的popuwindow的宽 this.setWidth(width / 2 + 50); // 设置弹出的popuwndow的高 this.setHeight(LayoutParams.WRAP_CONTENT); // 设置popuwindow的弹出窗体是否可以点击 this.setFocusable(true); this.setOutsideTouchable(true); // 刷新状态 this.update(); // 实例化一个colorDrawable颜色为半透明 ColorDrawable colorDrawable = new ColorDrawable(0000000000); // 点击返回键和其他地方使其消失,设置了这个才能触发OnDismissListener,设置其他控件变化等操作 this.setBackgroundDrawable(colorDrawable); // 设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.AnimationPreview); // 绑定布局 LinearLayout addTaskLayout = (LinearLayout) mView .findViewById(R.id.add_task_layout); addTaskLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { // 关闭popuwindow AddPopuwindow.this.dismiss(); } }); } //显示popupwindow public void showPopuwindow(View view) { if (!this.isShowing()) { // 以下拉方式显示popuwindow this.showAsDropDown(view, view.getLayoutParams().width / 2, 18); } else { this.dismiss(); } } 2、怎么调用呢?当然是绑定布局然后直接调用了 Button mBtnAdd; mBtnSet.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { AddPopuwindow popuwindow = new AddPopuwindow(MainActivity.this); popuwindow.showPopuwindow(mBtnAdd); } }); 3、布局文件(图片): 布局文件 4、结语 因为小弟第一次写技术类文章,还有排版什么的,不太熟悉,所以请各位看官多多见谅,请各位轻点打脸。