Android :界面优美的自定义弹出框———ConfirmDialog

    效果图:

    自定义View:

public class ConfirmDialogQuit extends Dialog {
    private Context context;
    private TextView titleTv,contentTv;
    private View okBtn,cancelBtn;
    private OnDialogClickListener dialogClickListener;

    public ConfirmDialogQuit(Context context) {
        super(context);
        this.context = context;
        initalize();
    }

    //初始化View
    private void initalize() {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.confirm_dialog_quit, null);
        setContentView(view);
        initWindow();

        titleTv = (TextView) findViewById(R.id.title_name);
        contentTv = (TextView) findViewById(R.id.text_view);
        okBtn = findViewById(R.id.btn_ok);
        cancelBtn = findViewById(R.id.btn_cancel);
        okBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                dismiss();
                if(dialogClickListener != null){
                    dialogClickListener.onOKClick();
                }
            }
        });
        cancelBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                dismiss();
                if(dialogClickListener != null){
                    dialogClickListener.onCancelClick();
                }
            }
        });
    }

    /**
     *添加黑色半透明背景
     */
    private void initWindow() {
        Window dialogWindow = getWindow();
        dialogWindow.setBackgroundDrawable(new ColorDrawable(0));//设置window背景
        dialogWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//设置输入法显示模式
        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        DisplayMetrics d = context.getResources().getDisplayMetrics();//获取屏幕尺寸
        lp.width = (int) (d.widthPixels * 0.8); //宽度为屏幕80%
        lp.gravity = Gravity.CENTER;  //中央居中
        dialogWindow.setAttributes(lp);
    }

    public void setOnDialogClickListener(OnDialogClickListener clickListener){
        dialogClickListener = clickListener;
    }

    /**
     *添加按钮点击事件
     */
    public interface OnDialogClickListener{
        void onOKClick();
        void onCancelClick();
    }
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:orientation="vertical"
    android:background="@drawable/confirmdialog"

    >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title_name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:paddingBottom="10dp"
            android:paddingTop="15dp"
            android:text="退出操作"
            android:textColor="#0a0909"
            android:textSize="20sp"
            android:visibility="visible" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:color/transparent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/text_view"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="10dp"
            android:textColor="@android:color/black"
            android:text="是否退出当前账号?"
            android:textSize="16dip"/>

        <View
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:layout_marginTop="15dip"
            android:background="#c5c5c5" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="50dip"
            android:background="@android:color/transparent"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <!-- 取消按钮 -->
            <Button

                android:id="@+id/btn_cancel"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="取消"
                android:textStyle="bold"
                android:textColor="#34D0C3"
                android:background="#e7eded"
                android:textSize="15sp" />

            <!-- 确认按钮 -->

            <View
                android:layout_width="1px"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal"
                android:background="#c5c5c5"/>

            <Button
                android:id="@+id/btn_ok"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="确定"
                android:textStyle="bold"
                android:textColor="#34D0C3"
                android:background="#e7eded"
                android:textSize="15sp" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

 布局添加圆角,颜色:

   在drawable中新建:

<?xml version="1.0" encoding="UTF-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!-- 填充的颜色 -->
    <solid android:color="#e7eded" />
    <padding android:left="5dp"
        android:top="5dp"
        android:right="5dp"
        android:bottom="5dp" />
    <corners android:radius="13dp" />

</shape>

实现:

 ConfirmDialogQuit confirmDialog = new ConfirmDialogQuit(getActivity());
                    confirmDialog.setOnDialogClickListener(new ConfirmDialogQuit.OnDialogClickListener() {
                        @Override
                        public void onOKClick() {
                          
                            confirmDialog.dismiss();
                        }

                        @Override
                        public void onCancelClick() {
                            confirmDialog.dismiss();
                        }
                    });
                    confirmDialog.setCancelable(false);//点击空白处不消失
                    confirmDialog.show();


                }

 完成!

猜你喜欢

转载自blog.csdn.net/Liuxb_zao/article/details/81633092