android中POP窗口中的UI Activity

时间:2014-05-31 06:15:51

标签: android android-layout android-activity android-alertdialog android-popupwindow

我想将弹出窗口用于我的UI活动。 实际上,我的主活动页面中有一个按钮,单击该按钮应该像对话窗口一样打开。

在那个对话窗口中,我想在其中有两个其他按钮,点击后应该为每次点击传递一些值**(没有窗口消失)**并且如果在规定时间内没有点击(时间 - 它应该消失并返回主要活动。

我可以使用" Intent"但我希望在超时后使用这个自动消失的对话窗口来实现它。我怎样才能做到这一点。? 请帮我解决这个问题。

提前致谢,

1 个答案:

答案 0 :(得分:0)

首先为Handler声明一个全局变量,以便从Thread更新UI控件,如下所示 -

Handler mHandler = new Handler();

现在创建一个Thread并使用while循环来定期使用线程的sleep方法执行任务。 假设您显示/打开menu_bt的位置有popup window视图对象,而使用thread在定义时间内没有点击时自动关闭popup window,即10秒

此处mpopupPopupWindow的对象。

超时后使用以下代码消失对话窗口(我用了10秒钟)。

希望它会对你有所帮助。

menu_bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {

                View popUpView = getLayoutInflater().inflate(
                        R.layout.menu_popup, null); // inflating popup layout
                mpopup = new PopupWindow(popUpView, 400,
                        LayoutParams.WRAP_CONTENT, true); // Creation of popup
                mpopup.setAnimationStyle(android.R.style.Animation_Dialog);
                mpopup.showAsDropDown(menu_bt, 50, -10);
                Button btnOk = (Button) popUpView.findViewById(R.id.home);

                btnOk.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mpopup.dismiss(); // dismissing the popup with button click
                    }
                });
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        while (true) {
                            try {
                                Thread.sleep(10000);
                                mHandler.post(new Runnable() {

                                    @Override
                                    public void run() {
                                        // TODO Auto-generated method stub
                                        // automatic dismissing the popup after 10 seconds
                                        mpopup.dismiss();
                                    }
                                });
                            } catch (Exception e) {
                                // TODO: handle exception
                            }
                        }
                    }
                }).start();
            }
        });