android之对话框

一.普通对话框 

直接上代码

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化组件
        bu_normal=findViewById(R.id.bu_normal_button);
        //绑定点击事件
        bu_complex=findViewById(R.id.bu_complex_dialog);
        bu_my=findViewById(R.id.bu_my_dialog);
        bu_normal.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder=
                        new AlertDialog.Builder(MainActivity.this);
                //设置标题
                builder.setTitle("标题");
                //设置展示信息
                builder.setMessage("内容信息");
                builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,
                                "确定按钮",Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,
                        "取消按钮",Toast.LENGTH_SHORT).show();
                    }
                });

                //展示提示框
                builder.create().show();
            }
        });

效果如下:

 二、复杂对话框

代码:

bu_complex.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final AlertDialog.Builder builder=
                        new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("复杂对话框");
                builder.setIcon(R.drawable.ic_launcher_background);
                builder.setMessage("你喜欢我们的课程吗?");
                builder.setPositiveButton("喜欢", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which ) {
                        Toast.makeText(MainActivity.this,
                                "那是相当的喜欢",Toast.LENGTH_SHORT).show();

                    }
                });
                builder.setNegativeButton("一般般", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,
                                "还行",Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setNeutralButton("不喜欢", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,
                                "才怪",Toast.LENGTH_SHORT).show();
                    }
                });
                builder.show();


            }
        });

  效果:

 

三.自定义对话框

首先需要在layout中设置好页面布局

<?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="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:background="@drawable/custom_dialog_title"
        android:orientation="horizontal"
        android:gravity="center"
        android:paddingTop="10dp"
        android:paddingBottom="10dp">
        <ImageView
            android:id="@+id/iv_icon"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@drawable/tip"/>

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="标题"
            android:textSize="20sp"
            android:layout_marginLeft="10dp"/>
    </LinearLayout>

    <View
        android:layout_width="300dp"
        android:layout_height="2dp"
        android:background="#9b9b9b"/>
    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:background="@drawable/custom_dialog_content">

        <TextView
            android:id="@+id/tv_content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="内容展示区"
            android:layout_margin="15dp"
            android:gravity="center"/>
    </LinearLayout>
    <View
        android:layout_width="300dp"
        android:layout_height="2dp"
        android:background="#9b9b9b"/>
    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:background="@drawable/custom_dialog_button"
        android:orientation="horizontal">

        <Button
            android:id="@+id/bu_positive"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/custom_dialog_positive"
            android:text="确定"
            android:textSize="20sp"
            android:layout_margin="10dp"
            android:textAllCaps="false"/>

        <Button
            android:id="@+id/bu_negative"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/custom_dialog_negative"
            android:text="取消"
            android:textSize="20sp"
            android:layout_margin="10dp"/>

    </LinearLayout>

</LinearLayout>

 Java代码:

public class DialogUtil  {
    private  static AlertDialog dialog;

    /**
     *
     * @param activity 上下文对象
     * @param icon 标题对象
     * @param title 标题展示内容
     * @param content 主内容区
     * @param positiveText 确定按钮
     * @param negativeText 取消按钮
     * @param clickListener 按钮点击事件处理接口
     */

    public static void showMyAlertDialog(Activity activity,
                                         int icon, String title,
                                         String content, String positiveText,
                                         String negativeText,
                                         final AlertDialogBtnClickListener clickListener){
        //创建自定义页面对象view
        View view= LayoutInflater.from(activity).inflate(
                R.layout.custom_dialog_layout,null);
        //获取自定义页面组件
        ImageView iv_icon = view.findViewById(R.id.iv_icon);
        TextView tv_title= view.findViewById(R.id.tv_title);
        TextView tv_content=view.findViewById(R.id.tv_content);
        Button bu_positive=view.findViewById(R.id.bu_positive);
        Button bu_negative=view.findViewById(R.id.bu_negative);
        //设定组件展示内容,相应事件
        iv_icon.setImageResource(icon);
        tv_title.setText(title);
        tv_content.setText(content);
        bu_positive.setText(positiveText);
        bu_negative.setText(negativeText);

        bu_positive.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickListener.clickPositive();
                dialog.dismiss();
            }
        });
        bu_negative.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickListener.clickNegative();
                dialog.dismiss();

            }
        });

        //实例化dialog
        AlertDialog.Builder builder=new AlertDialog.Builder(activity);
        //设定提示框展示页面
        builder.setView(view);
        //设定不能在外界取消
        builder.setCancelable(false);
        dialog=builder.create();
        //去掉背景多余内容
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        //dialog展示
        dialog.show();


    }
    public  interface AlertDialogBtnClickListener{
        void clickPositive();
        void clickNegative();
    }

    /**
     * 创建自定义提示框
     * @param context 上下文对象
     * @param msg 页面提示信息
     * @return
     */

    public static Dialog createLoadingDialog(Context context,
                                             String msg){
        //获取自定义提示框view对象
        View view=LayoutInflater.from(context)
                .inflate(R.layout.custom_loading_dialog,null);
        ImageView img=view.findViewById(R.id.iv_img);
        TextView tip=view.findViewById(R.id.tv_tip);
        tip.setText(msg);
        //图片加载动画效果
        Animation animation=
                AnimationUtils.loadAnimation(context,R.anim.loading_animation);
        img.startAnimation(animation);
        //创建提示框并设定样式
        Dialog dialog=new Dialog(context,R.style.loading_dialog);
        //绑定自定义页面
        dialog.setContentView(view);
        return dialog;
    }


}

 MainActivity.java 

bu_my.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogUtil.showMyAlertDialog(MainActivity.this,
                        R.drawable.tip, "my title",
                        "确定退出吗?",
                        "sure",
                        "cancel", new DialogUtil.AlertDialogBtnClickListener() {
                            @Override
                            public void clickPositive() {
                                finish();
                            }

                            @Override
                            public void clickNegative() {
                                Toast.makeText(MainActivity.this,
                                        "误操作",Toast.LENGTH_SHORT).show();

                            }
                        }
                );

  

 效果:

猜你喜欢

转载自www.cnblogs.com/cxy171/p/12634671.html