android指定位置的dialog彈出顯示

void showDemo(View view, String text){
commomDialog.setListener(new CommomDialog.OnCloseListener() {
            @Override
            public void onClick(Dialog dialog, boolean confirm) {
                dialog.dismiss();
            }
        });
        commomDialog.setContent(text);
        commomDialog.setTitle("提示信息");
        commomDialog.getWindow();
        commomDialog.setCanceledOnTouchOutside(false);
        //獲取當前Activity所在的窗體
        Window window = commomDialog.getWindow();
        WindowManager.LayoutParams wlp = window.getAttributes();
        //獲取通知欄高度  重要的在這,獲取到通知欄高度
        int notificationBar  = Resources.getSystem().getDimensionPixelSize(Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android"));
       //獲取控件 textview 的絕對座標,( y 軸座標是控件上部到屏幕最頂部(不包括控件本身))
        //location [0] 爲x絕對座標;location [1] 爲y絕對座標
        int[] location = new  int[2] ;
        //獲取在當前窗體內的絕對座標
        view.getLocationInWindow(location);
        //獲取在整個屏幕內的絕對座標
        view.getLocationOnScreen(location);
        //對 dialog 設置 x 軸座標
        wlp.x= (int) (location[0]-(view.getWidth()/1.5));
        //對dialog設置y軸座標
        wlp.y = location [1] + view.getHeight() - notificationBar;
        wlp.gravity = Gravity.TOP;
        wlp.width = 400;
        wlp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        window.setAttributes(wlp);
        commomDialog.show();
}

彈出框創建我就不貼了,該方法傳入要顯示的UI控件,比如LinearLayout.就會顯示在該控件下面。

new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if(commomDialog!=null&&commomDialog.isShowing()){
                            commomDialog.dismiss();

                        }
                    }
                }, 1000*60);

上面代碼是定時器代碼,指定dialog一分鐘後消失。

發佈了22 篇原創文章 · 獲贊 5 · 訪問量 6187
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章