Android仿IOS彈出框

現在設計的標準都是按照ios的標準來設計(至少我們公司是這樣做的),這對於我們安卓開發人員也是相當的頭疼,因爲這就需要我們自定義View。今天給大家帶來的是仿ios的彈出框。下面開始上代碼分析:
public AlertDialog(Context context) {
        this.context = context;
        /** 獲取WindowManager對象 管理打開的窗口程序*/
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        /**獲取默認的顯示對象*/
        display = windowManager.getDefaultDisplay();
    } 
public AlertDialog builder() {
        // 獲取Dialog佈局
        View view = LayoutInflater.from(context).inflate(
                R.layout.view_alertdialog, null);

        // 獲取自定義Dialog佈局中的控件
        lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);
        txt_title = (TextView) view.findViewById(R.id.txt_title);
        txt_title.setVisibility(View.GONE);
        txt_msg = (TextView) view.findViewById(R.id.txt_msg);
        txt_msg.setVisibility(View.GONE);
        btn_neg = (Button) view.findViewById(R.id.btn_neg);
        btn_neg.setVisibility(View.GONE);
        btn_pos = (Button) view.findViewById(R.id.btn_pos);
        btn_pos.setVisibility(View.GONE);
        img_line = (ImageView) view.findViewById(R.id.img_line);
        img_line.setVisibility(View.GONE);
        //修改:增加編輯框
        edt_msg = (EditText) view.findViewById(R.id.edt_msg);
        edt_msg.setVisibility(View.GONE);

        // 定義Dialog佈局和參數
        dialog = new Dialog(context, R.style.AlertDialogStyle);
        dialog.setContentView(view);

        // 調整dialog背景大小
        lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display.getWidth() * 0.85),
                LayoutParams.WRAP_CONTENT));

        return this;
    }
    /**
     * 設置AlertDialog的標題
     */
    public AlertDialog setTitle(String title) {
        showTitle = true;
        if ("".equals(title)) {
            txt_title.setText("標題");
        } else {
            txt_title.setText(title);
        }
        return this;
    }
    /**
     * 修改:增加編輯框
     */
    public AlertDialog setEditText(String hint) {

        showEditText = true;
        if ("".equals(hint)) {
            edt_msg.setHint("編輯");
        } else {
            edt_msg.setHint(hint);
            edt_msg.setInputType(InputType.TYPE_CLASS_NUMBER);
        }
        return this;
    }

然後講下他的用法,其實和系統自帶的彈框用法差不多:

private void showPreDialog() {
        final AlertDialog dialog = new AlertDialog(getActivity());
        dialog.builder()
                .setTitle("")
                .setMsg("")
                .setEditText("")
                .setNegativeButton("取消", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.diss();
                    }
                })
                .setShowPositiveButton("確定", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.diss();
                        startActivity(new Intent(getActivity(), ChangePasswordActivity.class));
                    }
                })
                .setCancelable(false).show();
    }

需要源碼的留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章