简单的PopupWindow小例子
2013-05-31 20:04
218 查看
PopupWindow是对话框的一种,比AlertDialog更灵活。
AlertDialog是非阻塞的。
PopupWindow是阻塞的。
AlertDialog是非阻塞的。
PopupWindow是阻塞的。
/** * */ package cn.popup; import android.app.Activity; import android.app.AlertDialog; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.TextView; public class TestAct extends Activity { private static final String TAG = TestAct.class.getName(); private int seconds = 0; TextView parentMessage = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); ViewGroup.LayoutParams ww = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); parentMessage = new TextView(this); parentMessage.setLayoutParams(ww); parentMessage.setText("简单的PopupWindow"); layout.addView(parentMessage); AlertDialog dialog = new AlertDialog.Builder(this).create(); dialog.setMessage("AlertDialog非阻塞的对话框"); dialog.show(); //todo: 直接调用PopupWindow对话框,死机,说明PopupWindow阻塞UI线程 和AlertDialog不同 // new Handler().post(new Runnable() { // @Override // public void run() { // //To change body of implemented methods use File | Settings | File Templates. // showPopupWindow(TestAct.this); // } // }); //todo:延后100毫秒,正常跳出PopupWindow对话框 new Handler().postDelayed(new Runnable() { @Override public void run() { //To change body of implemented methods use File | Settings | File Templates. showPopupWindow(TestAct.this); } }, 100); } private void showPopupWindow(Activity act) { ViewGroup.LayoutParams ww = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); LinearLayout layout = new LinearLayout(act); layout.setBackgroundColor(Color.BLUE); EditText input = new EditText(act); input.setLayoutParams(ww); input.setText("跳出PopupWindow,我创建的时候会阻塞UI线程"); layout.addView(input); final PopupWindow pw = new PopupWindow(layout, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); pw.setOutsideTouchable(false); pw.update(); View v = act.getWindow().getDecorView();//decorView是window中的最顶层view pw.showAtLocation(v, Gravity.CENTER, 0, 0); } }
相关文章推荐
- PopupWindow简单实用小例子之弹出内容显示框(一)
- Android自定义PopupWindow简单小例子
- 一个Ftp上传下载的简单例子
- 【Java】Java日志框架Logback的简单例子
- 简单的MapReduce例子,从一批数据中获取每年的最高温度
- 一个简单的例子:javascript实现日期的比较(3)
- flex 简单例子(含实例效果图 源码)
- ExecutorService与Executors例子的简单剖析
- Robot Framework与Web界面自动化测试学习笔记:简单例子
- Android调用天气预报的WebService简单例子
- 【Android学习日记】(八) Service的简单使用例子
- 有趣的多线程编程(1)——一个简单的例子
- fragment简单例子
- Gtalk PHP API 简单例子(基于XMPP)
- 【Android学习日记】(十一) 文件存取简单例子
- 简单的动态连接库,例子
- 一个简单例子说明为什么C语言在2013年仍很重要
- blockchain 区块链200行代码:在JavaScript实现的一个简单的例子
- MVC模式-简单的java小例子
- zookeeper javaapi简单小例子