我是靠谱客的博主 炙热纸飞机,最近开发中收集的这篇文章主要介绍Selector选择器的使用+各种样式的对话框,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一. Selector选择器

通过selector选择器,我们可以更快捷的实现底部导航!

效果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们如何创建选择器?

  1. 创建字体颜色改变选择器
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#1D92EE"></item>
    <item android:state_checked="false" android:color="#A2A2A2"></item>
</selector>
  1. 创建图片改变选择器
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_checked="true" android:drawable="@drawable/chat1"></item>
   <item android:state_checked="false" android:drawable="@drawable/chat2"></item>
</selector>
  1. 创建两个图标直接调用系统提供的,步骤如下:
    1.drawable右键滑到new点击Image Assert
    在这里插入图片描述
  2. 弹出窗体按照图进行一下操作:
    在这里插入图片描述
  • 在布局文件中直接使用,将要添加的图片和文字都更换为选择器即可,代码如下:
<RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        android:id="@+id/di">
        <!--  三个按钮  -->
        <RadioButton
            android:checked="true"
            android:id="@+id/rb1"
            android:button="@null"
            android:drawableTop="@drawable/selector_pic"
            android:textAlignment="center"
            android:textColor="@drawable/selector_txt"
            android:text="消息"
            android:textSize="20sp"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <RadioButton
            android:id="@+id/rb2"
            android:button="@null"
            android:drawableTop="@drawable/selector_pic"
            android:textAlignment="center"
            android:textColor="@drawable/selector_txt"
            android:text="联系人"
            android:textSize="20sp"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <RadioButton
            android:id="@+id/rb3"
            android:button="@null"
            android:drawableTop="@drawable/selector_pic"
            android:textAlignment="center"
            android:textColor="@drawable/selector_txt"
            android:text="动态"
            android:textSize="20sp"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </RadioGroup>

这样我们就完成了上面的效果图

二. Dialog对话框

对话框类型实现类特殊方法
普通AlertDialog.Builder
单选AlertDialog.BuildersetSingleChoiceItems()
多选AlertDialog.BuildersetMultiChoiceItems()
日期DatePickerDialogDatePickerDialog(context,DatePickerDialog.OnDateSetListener,year,month,day);
时间TimePickerDialogTimePickerDialog(context, TimePickerDialog.OnTimeSetListener,时,分,是否24进制);
水平ProgressDialogsetMultiChoiceItems()
  • 1.普通对话框 效果+代码
    在这里插入图片描述
button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              1.构建者
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
//              2.设置属性
                builder.setIcon(R.drawable.ic_launcher_background);//设置图标
                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();
                    }
                });
//              3. 使用建造者创建对话框
                AlertDialog d = builder.create();
//              4. 显示
                d.show();
            }
        });
  • 2.单选对话框 效果+代码
    在这里插入图片描述
button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              设置单选列表内容
                final String[] itmes = {"足球","篮球","羽毛球"};

//              1.构建者
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
//              2.设置属性
                builder.setIcon(R.drawable.ic_launcher_background);
                builder.setTitle("你的运动爱好是");
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
                    }
                });

//              设置单选列表
                builder.setSingleChoiceItems(itmes, 1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你喜爱的运动是"+itmes[which], Toast.LENGTH_SHORT).show();
                    }
                });
//              3. 使用建造者创建对话框                
                AlertDialog d = builder.create();
//              4. 显示
                d.show();
            }
        });
  • 3.多选对话框 效果+代码
    在这里插入图片描述
button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              设置多选列表内容
                final String[] itmes = {"足球","篮球","羽毛球"};
//              设置是否选中
                final boolean[] flags = {true,false,false};

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.drawable.ic_launcher_background);
                builder.setTitle("你的运动爱好是");
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了取消", Toast.LENGTH_SHORT).show();
                    }
                });

//              设置多选列表
                builder.setMultiChoiceItems(itmes, flags, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        flags[which] = isChecked;
                    }
                });
                AlertDialog d = builder.create();
                d.show();
            }
        });
  • 4.自定义对话框 (视为重点) 效果+代码*
    在这里插入图片描述
button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.drawable.ic_launcher_background);
                builder.setTitle("= =");

//              获取View
                View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.layout, null);
                Button close = view.findViewById(R.id.close);
                close.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        b.dismiss();
                    }
                });
//              设置自定义的View
                builder.setView(view);

                b = builder.create();
                b.show();
            }
        });

View视图是自定义的布局 代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <ImageView
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:src="@mipmap/tu"
        android:id="@+id/tu"/>
    <Button
        android:layout_marginTop="20dp"
        android:layout_marginRight="30dp"
        android:layout_marginLeft="30dp"
        android:layout_below="@id/tu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="关闭对话框"
        android:id="@+id/close"/>
</RelativeLayout>

水平进度条和圆形进度条主要的区别:
setProgressStyle方法的ProgressDialog.STYLE_HORIZONTAL可以设置成水平进度条
setProgressStyle方法的ProgressDialog.STYLE_SPINNER可以设置成圆形进度条

  • 5.水平进度条对话框 效果+代码
    在这里插入图片描述
button5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              实例化进度条对话框对象
                final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
//              设置属性
                dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平加载
                dialog.setMax(100);
                dialog.setMessage("正在下载");
                dialog.show();

//              模拟定时器
                final Timer timer = new Timer();
                timer.schedule(new TimerTask() {
                    int progress = 0;
                    @Override
                    public void run() {
                        if (progress == 100) {
                            dialog.dismiss();//消失
                            timer.cancel();
                        }
                        dialog.setProgress(progress = progress + 20);
                    }
                },0,1000);//0秒后执行,每隔1000毫秒执行一次
            }
        });
  • 6.圆形进度条对话框 效果+代码
    在这里插入图片描述
button6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              实例化进度条对话框对象
                final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
//              设置属性
                dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置转圈圈加载
                dialog.setMax(100);
                dialog.setMessage("正在下载");
                dialog.show();

//              模拟定时器
                final Timer timer = new Timer();
                timer.schedule(new TimerTask() {
                    int progress = 0;
                    @Override
                    public void run() {
                        if (progress == 100) {
                            dialog.dismiss();//消失
                            timer.cancel();
                        }
                        dialog.setProgress(progress = progress + 20);
                    }
                },0,1000);//0秒后执行,每隔1000毫秒执行一次
            }
        });
  • 7.日期选择对话框 效果+代码
    在这里插入图片描述
button7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              实例化日历类对象
                Calendar calendar = Calendar.getInstance();
                new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        Toast.makeText(MainActivity.this, year+"-"+(month+1)+"-"+dayOfMonth, Toast.LENGTH_SHORT).show();
                    }
                },calendar.get(calendar.YEAR),calendar.get(calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
            }
        });
  • 8.时间选择对话框 效果+代码
    在这里插入图片描述
button8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              实例化日历类对象
                Calendar calendar = Calendar.getInstance();
                new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

                    }
                },calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),true).show();
            }
        });

以上就是我对对话框以及选择器自己掌握的所有知识和内容

第一次做博客感觉很有成就感,我会把我的博客越写越好!!

最后

以上就是炙热纸飞机为你收集整理的Selector选择器的使用+各种样式的对话框的全部内容,希望文章能够帮你解决Selector选择器的使用+各种样式的对话框所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部