PopupWindow的代码实现,以及和AlertDialog的区别

PopupWindow和AlertDialog本质区别为:AlertDialog是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;而PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行。这两种区别的表现是:AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,证明程序不仅响应AlertDialog的操作,还响应其他操作,其他程序没有被阻塞,这说明了AlertDialog是非阻塞式对话框;PopupWindow弹出时,背景没有什么变化,但是当我们点击背景的时候,程序没有响应,只允许我们操作PopupWindow,其他操作被阻塞。

以下是PopupWindow

public class MainActivity extends ActionBarActivity {

private RadioGroup rg;

private Button btn;

private Button btn_cancle;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn = (Button) findViewById(R.id.btn);

final TextView tv_show=(TextView) findViewById(R.id.tv_show);

//按钮点击事件

btn.setOnClickListener(new OnClickListener() {

private PopupWindow pw;

@Override

public void onClick(View arg0) {

View contentView=View.inflate(MainActivity.this, R.layout.popu_layout, null);

rg = (RadioGroup) contentView.findViewById(R.id.rg);

btn_cancle = (Button) contentView.findViewById(R.id.btn_cancel);

//实例化PopupWindow

pw = new PopupWindow(contentView, 200, 200, true);

//设置PopupWindow的位置

pw.showAtLocation(btn, Gravity.CENTER, 0, 0);

//设置RadioGroup的选择事件

rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup arg0, int arg1) {

RadioButton  rb_item=(RadioButton) rg.findViewById(arg0.getCheckedRadioButtonId());

tv_show.setText(rb_item.getText().toString());

}

});

//取消按钮事件

btn_cancle.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

//关闭PopupWindow窗口

pw.dismiss();

}

});

}

});

}

时间: 2024-10-05 15:49:58

PopupWindow的代码实现,以及和AlertDialog的区别的相关文章

常用代码块模板,get,load区别,session.get(,)参数解释,session方法总结

设置模板代码步骤:window->java->Templates->new模板代码Session session = HibernateUtils.openSession(); try { HibernateUtils.startTransaction(); /** * 具体的业务代码 */ HibernateUtils.commitTransaction(); } catch (Exception e) { HibernateUtils.rollBackTransaction(); t

Android 自定义Popupwindow 注意事项,手机和平板的区别

首先自定义ppw是要继承Popupwindow 的 而要成功的显示出自定义的ppw就必须实现下面的三句代码 // 必要的三要素下面,不然popWind显示不出来 this.setContentView(mView); this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT); this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT); //上面的代码是必须设置的,不然ppw显示不出来. this.setFo

PopupWindwo和AlertDialog的区别

AlertDialog 是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情:而PopupWindow是阻塞式对话框:PopupWindow弹出时, 程序会等 待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法的后,PopupWindow退出,程序才会向下执行. 这两种区 别的表现是:AlertDialog弹出时,背景是黑色的,但是当我们点击背景,AlertDialog会消失,证明程序不仅响应AlertDialog 的操作, 还响应其他操作,其他程序

C++ | 调试 ·?从汇编代码看i++和++i的区别

以int类型为例 C++编译器为++i生成的代码是 013E1375 mov eax,dword ptr [i] 013E1378 add eax,1 013E137B mov dword ptr [i],eax 很简单,基本不用分析 第一行是把i的值放到eax中,然后调用add对eax进行+1,最后将eax再放到i中 再看看i++ 0119137E mov eax,dword ptr [i] 01191381 add eax,1 01191384 mov dword ptr [i],eax 结

构造代码块和构造函数有什么区别

构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块.只要对象一建立.就会调用这个代码块. 构造函数:是给与之对应的对象进行初始化.它具有针对性.

java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。

1.局部代码块: 格式:在方法中{局部代码块执行语句} 局部代码块,又叫普通代码块.它是作用在方法中的代码块. 作用:是控制变量的生命周期. 在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间.因此就有了局部代码块. 2.构造代码块: 格式:在类中{构造代码块执行语句} 作用:就是给所有对象进行初始化. 注意几点: 1)每次创建对象他都会执行. 2)构造代码快是优于构造函数执行. 3)构造代码块与构造函数的区别是:构造代码块是给所

js代码放在head和body的区别(QRCode生成)

1.在head中时,所代表的functions只加载而不执行,执行是在某一事件触发后才开始. 2.在body中时,直接加载并执行 典型的区别: 如果有不在函数中的执行语句,比如变量初始化,如果在head中就不会执行. 举个栗子: 这段代码会生成一个二维码,二维码的跳转地址为text中超链接 a.js放在body中,可生成二维码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &

Android新手入门2016(13)--阻塞对话框PopupWindow

上两章都说了非阻塞的对话框,今天说一下阻塞的对话框--PopupWindow 那么什么是阻塞什么是非阻塞呢?PopupWindow和AlertDialog有什么不同呢? 先说AlertDialog,弹出来之后,背面会变灰,并没有阻塞后台的进程,如果没特殊控制,点击后面灰暗处,弹框会消失掉的. 至于PopupWindow,则是弹出来,后面没有任何变化,并且阻塞该应用的进程,如果一直没退出,应用汇一直等待,点击后面也是没有反应的. 不知道为什么现在上传不了图,就不上传了,其实跟AlertDialog

PopUpWindow使用详解(一)——基本使用

前言:不要嫌前进的慢,只要一直在前进就好. 有同学讲到想要知道PopUpWindow的知识,这里就给大家讲一讲PopUpWindow的基本用法和原理吧.这段时间博客可能会更新比较慢,因为你懂的 !!-_- ,往左看公告,嘿嘿. 先看一下我们要做的效果: 这个效果很容易理解:当点击btn时,在底部弹出PopupWindow,然后点击各个item弹出对应toast. 一.概述 1.PopupWindow与AlertDialog的区别 最关键的区别是AlertDialog不能指定显示位置,只能默认显示