美文网首页安卓学习笔记
Android开发-AlertDialog,Progress,P

Android开发-AlertDialog,Progress,P

作者: 星星星宇 | 来源:发表于2020-11-02 14:49 被阅读0次

    AlertDialog

    • 默认样式
    • 单选样式
    • 多选样式
    • 自定义样式

    效果图

    AlertDialog效果图
    class OnClick implements View.OnClickListener {
            @Override
            public void onClick(View v) {
    
                switch (v.getId()) {
                    case R.id.btn_dialog1:
                        AlertDialog.Builder builder = new AlertDialog.Builder(DialogActivity.this);
                        builder.setTitle("请回答").setMessage("你觉得课程如何")
                                .setIcon(R.drawable.user)
                                .setPositiveButton("棒", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtil.showShort(DialogActivity.this, "很诚实");
                            }
                        }).setNeutralButton("还行", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtil.showShort(DialogActivity.this, "再瞅瞅");
                            }
                        }).setNegativeButton("不好", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtil.showShort(DialogActivity.this, "睁眼说瞎话");
                            }
                        }).show();
                        break;
                    case R.id.btn_dialog2:
    
                        final String[] array = new String[]{"男", "女"};
                        AlertDialog.Builder builder1 = new AlertDialog.Builder(DialogActivity.this);
                        builder1.setTitle("选择性别").setItems(array, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtil.showLong(DialogActivity.this, array[which]);
                            }
                        }).show();
    
                        break;
                    case R.id.btn_dialog3:
    
                        final String[] array3 = new String[]{"男", "女"};
                        AlertDialog.Builder builder3 = new AlertDialog.Builder(DialogActivity.this);
                        builder3.setTitle("选择性别").setSingleChoiceItems(array3, 0, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtil.showLong(DialogActivity.this, array3[which]);
                                dialog.dismiss();
                            }
                        }).setCancelable(false).show();
                        break;
                    case R.id.btn_dialog4:
    
                        final String[] array4 = new String[]{"唱歌", "跳舞", "写代码"};
                        boolean[] isSelected = new boolean[]{false, false, false};
                        AlertDialog.Builder builder4 = new AlertDialog.Builder(DialogActivity.this);
                        builder4.setTitle("选择兴趣").setMultiChoiceItems(array4, isSelected, new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                ToastUtil.showLong(DialogActivity.this, array4[which] + ":" + isChecked);
                            }
                        }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            }
                        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            }
                        }).show();
                        break;
                    case R.id.btn_dialog5:
    
                        AlertDialog.Builder builder5 = new AlertDialog.Builder(DialogActivity.this);
                        View view = LayoutInflater.from(DialogActivity.this).inflate(R.layout.layout_dialog, null);
                        EditText etUserName = view.findViewById(R.id.et_username);
                        EditText etPassWord = view.findViewById(R.id.et_password);
                        Button button = view.findViewById(R.id.et_login);
                        button.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
    
                            }
                        });
                        builder5.setTitle("请先登录").setView(view).show();
                        break;
                }
            }
        }
    

    自定义样式layout

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <EditText
            android:id="@+id/et_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="username"
            android:maxLines="1"/>
    
        <EditText
            android:id="@+id/et_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="password"
            android:inputType="textPassword"
            android:maxLines="1"/>
    
        <Button
            android:id="@+id/et_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="login"
            android:textAllCaps="false"
            android:layout_marginTop="10dp"/>
    
    </LinearLayout>
    

    Progress

    Progress效果图

    代码
    activity_progress.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ProgressActivity"
        android:orientation="vertical"
        android:gravity="center_horizontal">
    
    
        <ProgressBar
            android:id="@+id/pb1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
        <ProgressBar
            android:id="@+id/pb2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@android:style/Widget.ProgressBar"/>
    
        <ProgressBar
            android:id="@+id/pb3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@android:style/Widget.ProgressBar.Horizontal"
            android:progress="40"
            android:max="200"
            android:secondaryProgress="80"
            />
    
        <ProgressBar
            android:id="@+id/pb4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@android:style/Widget.Material.ProgressBar.Horizontal"
            android:progress="40"
            android:max="200"
            android:secondaryProgress="80"
            />
    
        <Button
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="点击"/>
    
    
        <ProgressBar
            android:id="@+id/pb5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/MyProgressBar"
            android:layout_marginTop="10dp"
            />
        <!--        android:indeterminateDrawable="@drawable/bg_progress"-->
    
        <Button
            android:id="@+id/btn_progress_dialog1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:layout_marginTop="10dp"
            android:text="ProgressDialog1"/>
    
        <Button
            android:id="@+id/btn_progress_dialog2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:layout_marginTop="10dp"
            android:text="ProgressDialog2"/>
    </LinearLayout>
    

    ProgressActivity

    public class ProgressActivity extends AppCompatActivity {
    
        private ProgressBar mPb3;
        private Button pbBtn, mBtnProgressDialog1, mBtnProgressDialog2;
    
        @SuppressLint("WrongViewCast")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_progress);
            mPb3 = findViewById(R.id.pb3);
            mPb3.setProgress(90);
    
            mBtnProgressDialog1 = findViewById(R.id.btn_progress_dialog1);
            mBtnProgressDialog2 = findViewById(R.id.btn_progress_dialog2);
    
            pbBtn = findViewById(R.id.btn);
            pbBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    handler.sendEmptyMessage(0);
                }
            });
            mBtnProgressDialog1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ProgressDialog progressDialog = new ProgressDialog(ProgressActivity.this);
                    progressDialog.setTitle("提示");
                    progressDialog.setMessage("正在加载");
                    progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                        @Override
                        public void onCancel(DialogInterface dialog) {
                            ToastUtil.showLong(ProgressActivity.this, "cancel");
                        }
                    });
                    progressDialog.setCancelable(false);
                    progressDialog.show();
                }
            });
    
            mBtnProgressDialog2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ProgressDialog progressDialog = new ProgressDialog(ProgressActivity.this);
                    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    progressDialog.setTitle("提示");
                    progressDialog.setMessage("正在下载...");
                    progressDialog.setButton(BUTTON_POSITIVE, "棒", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
                        }
                    });
                    progressDialog.show();
                }
            });
        }
    
        @SuppressLint("HandlerLeak")
        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (mPb3.getProgress() < 200) {
                    handler.postDelayed(runnable, 500);
                }else  {
                    ToastUtil.showShort(ProgressActivity.this, "加载完成");
                }
            }
        };
    
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                mPb3.setProgress(mPb3.getProgress() + 5);
                handler.sendEmptyMessage(0);
            }
        };
    }
    

    自定义Dialog

    自定义Dialog

    layout_custom_dialog.xml

    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:background="@drawable/bg_custom_dialog"
        >
    
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textColor="@color/colorBlack"
            android:text="提示"
            android:textStyle="bold"
            android:layout_marginTop="20dp"
            />
    
        <TextView
            android:id="@+id/tv_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textColor="@color/colorBlack"
            android:text="删除?"
            android:layout_marginTop="20dp"
            android:layout_marginBottom="20dp"
            />
    
        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="@color/colorGray"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/tv_cancel"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="20sp"
                android:text="取消"
                android:textColor="#11c2ee"
                android:gravity="center"
                />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="match_parent"
                android:background="@color/colorGray"/>
    
            <TextView
                android:id="@+id/tv_confirm"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="20sp"
                android:text="确定"
                android:textColor="#000"
                android:gravity="center"
                />
    
        </LinearLayout>
    
    </LinearLayout>
    

    CustomDialogActivity

    public class CustomDialogActivity extends AppCompatActivity {
    
        private Button mBtnDialog;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_custom_dialog);
            mBtnDialog = findViewById(R.id.btn_custom_dialog);
            mBtnDialog.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    CustomDialog customDialog = new CustomDialog(CustomDialogActivity.this, R.style.CustomDialog);
                    customDialog.setTitle("提示").setMessage("确认删除此项?").setCancel("取消",new CustomDialog.IOnCancelListener() {
                        @Override
                        public void onCancel(CustomDialog dialog) {
    
                        }
                    }).setConfirm("确定1",new CustomDialog.IOnConfirmListener() {
                        @Override
                        public void onConfirm(CustomDialog dialog) {
    
                        }
                    }).show();
                }
            });
        }
    }
    

    activity_dialog_activity.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".CustomDialogActivity">
    
        <Button
            android:id="@+id/btn_custom_dialog"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="自定义dialog"
            android:textAllCaps="false"
            />
    
    </LinearLayout>
    

    CustomDialog Style

    
        <style name="CustomDialog"
            parent="@android:style/Theme.Dialog">
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:windowBackground">@color/colorAccent</item>
        </style>
    

    相关文章

      网友评论

        本文标题:Android开发-AlertDialog,Progress,P

        本文链接:https://www.haomeiwen.com/subject/ngcdvktx.html