简单的PopupWindow小例子

来源:互联网 发布:手机淘宝描述在哪 编辑:程序博客网 时间:2024/05/17 07:18

PopupWindow是对话框的一种,比AlertDialog更灵活。

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);    }}


原创粉丝点击