Android仿IOS弹出框

来源:互联网 发布:心理健康测试软件 编辑:程序博客网 时间:2024/05/16 18:35
现在设计的标准都是按照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();    }

需要源码的留言。

0 0