Android 之 Dialog 使用最全面 |
您所在的位置:网站首页 › 安卓toast弹窗的用法 › Android 之 Dialog 使用最全面 |
Android 之 Dialog
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
一、简介
对话框的功能主要就是提示一些信息给用户,让用户可进行下一步操作,或者提示用户该操作不可逆等等。 然而对话框本身的时候不复杂,复杂在于和其他控件结合起来使用。 下面介绍会介绍几种常用的对话框。 二、属性和方法Android系统提供的对话框父类为Dialog, 里面并没有实现对话框的具体类型,比如单选、多选、列表等对话框,仅提供一个框架和规范。系统为开发者提供了一个 多功能的对话框类AlertDialog, 封装了各种对话框的样式,我们只需要完成要显示的内容和监听。 大部分对话框就是使用系统封装好的对话框AlertDialog的实例对象。AlertDialog并不提供对外的构造方法,即不能直接通过AlertDialog的构造函数来生产一个AlertDialog。因为AlertDialog所有的构造方法都是protected的。所以为了获取AlertDialog对象,系统提供了一个静态内部类Builder让我们使用,通过Builder可以创建AlertDialog对象。 Builder对象设置对话框的属性 .setTitle() //设置标题 .setIcon ()//设置图标 .setMessage ()//设置要显示的内容 .setItems//设置在对话框中显示的项目列表 .setView//设置自定义的对话框样式 .setPositiveButton ()//设置确定按钮 .setNegativeButton ()//设置取消按钮 .setNeutralButton ()//设置中立按钮 .setSingleChoiceItems//单选框 .setMultiChoiceItems//复选框 复制代码 三、各种Dialog的使用对话框的在安卓中的使用可谓无处不在,使用非常的广泛,一个好的对话框能提高用户的使用感。这在安卓开发中是非常重要的。 本章节会介绍以下这些常见的对话框的使用。 使用步骤: 创建AlertDialog.Builder实例对象。 通过Builder对象设置对话框的属性。 调用Builder对象的create()方法创建AlertDialog对话框 调用AlertDialog的show()方法来显示对话框 调用AlertDialog的dimiss()方法销毁对话框。 1、普通的对话框当我们要提示用户一些信息,以及让用户做一些判断的选项时候,就可以时候简单的对话框即可。 如图效果: java核心代码: AlertDialog dialog=new AlertDialog.Builder(this) .setIcon(R.drawable.hmbb)//设置图标 .setTitle("我是普通的对话框")//设置标题 .setMessage("我是内容")//设置要显示的内容 .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this, "点击了取消按钮", Toast.LENGTH_SHORT).show(); dialogInterface.dismiss();//销毁对话框 } }) .setNeutralButton("第三方按钮", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this, "我是第三个按钮", Toast.LENGTH_SHORT).show(); } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了确定的按钮", Toast.LENGTH_SHORT).show(); dialog.dismiss();//销毁对话框 } }).create();//create()方法创建对话框 dialog.show();//显示对话框 复制代码 2、列表对话框如图效果: java核心代码: final String hobby[] = {"吃饭", "睡觉", "敲代码", "看电视","打游戏"}; AlertDialog dialog1=new AlertDialog.Builder(this) .setIcon(R.drawable.hmbb) .setTitle("请选出你最喜欢的爱好") .setItems(hobby, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(MainActivity.this, hobby[i], Toast.LENGTH_SHORT).show(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); dialog1.show(); 复制代码 3、单选对话框效果如图: 核心java代码: final String[] gaame = new String[]{"王者荣耀", "LOL", "QQ飞车", "地下城","阴阳师"}; AlertDialog dialog2=new AlertDialog.Builder(this) .setIcon(R.drawable.game) .setTitle("请选择你最喜欢的游戏") //第一个参数:设置单选的资源;第二个参数:设置默认选中哪几项 .setSingleChoiceItems(gaame, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int i) { Toast.makeText(MainActivity.this, gaame[i], Toast.LENGTH_SHORT).show(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); dialog2.show(); 复制代码 4、多选对话框效果如图: 核心java代码: final String items[] = {"篮球", "足球", "排球", "乒乓球","羽毛球","跑步"}; final boolean checkedItems[] = {true, false, false, false,true,true}; AlertDialog dialog3 = new AlertDialog.Builder(this) .setIcon(R.drawable.hmbb)//设置标题的图片 .setTitle("选择你喜欢的运动")//设置对话框的标题 //第一个参数:设置单选的资源;第二个参数:设置默认选中哪几项 .setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int i, boolean isChecked) { checkedItems[i] = isChecked; } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { for (int i = 0; i < checkedItems.length; i++) { if (checkedItems[i]) { Toast.makeText(MainActivity.this, "选中了" + i, Toast.LENGTH_SHORT).show(); } } dialog.dismiss(); } }).create(); dialog3.show(); 复制代码 5、进度条对话框ProgressDialog 也是继承于Dialog,但其扩展了缓冲加载提示的功能。 效果如图: java核心代码: //实例化一个ProgressDialog进度条对话框对象 final ProgressDialog progressDialog=new ProgressDialog(this); //设置进度条为水平样式 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage("加载中"); progressDialog.setMax(100); final Timer timer=new Timer(); timer.schedule(new TimerTask() { int startprogress=0; @Override public void run() { startprogress+=new Random().nextInt(10); progressDialog.setProgress(startprogress); if (startprogress>100) timer.cancel(); } },0,1000); progressDialog.show(); break; 复制代码如果要是实现旋转的进度条的话 java核心代码: ProgressDialog progressDialog1 = new ProgressDialog(this); progressDialog1.setMessage("正在加载中"); progressDialog1.show(); 复制代码 6、日期选择对话框效果如图: java核心代码: Calendar data=Calendar.getInstance(); DatePickerDialog dpd=new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int day) { String str; str = String.valueOf(year) + "-" + String.valueOf(month) + "-" + String.valueOf(day); Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show(); } },data.get(Calendar.YEAR),data.get(Calendar.MONTH),data.get(Calendar.DAY_OF_MONTH)); dpd.show(); 复制代码 7、时间选择对话框效果如图: java核心代码: Calendar calendar=Calendar.getInstance(); new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { } }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true ).show(); 复制代码 8、自定义对话框自定义对话框主要是使用这个.setView(view)方法,加载一个我们自定义的布局。 效果如下: 首先我们需要将系统Dialog默认的样式去掉,避免影响我们的样式布局 在res->values->style.xml文件中添加我们去除系统对话框的样式 @android:color/transparent @null true true false @null true 复制代码编写自定义对话框div_dialog.xml的布局代码 复制代码java核心代码: //实例化Dialog对象,并应用NormalDialogStyle去掉系统样式 Dialog dialog4 = new Dialog(this,R.style.NormalDialogStyle); View view = View.inflate(this, R.layout.div_dialog, null); dialog4.setContentView(view);//给dialog设置一个视图 dialog4.setCanceledOnTouchOutside(true);//在点击窗口外的地方可以退出 Window dialogWindow = dialog4.getWindow();//获取Dialog的窗口 //实例化窗口布局对象 WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.width =WindowManager.LayoutParams.MATCH_PARENT;//宽度铺满 lp.height = WindowManager.LayoutParams.WRAP_CONTENT;//高度自适应 lp.gravity = Gravity.BOTTOM;//窗口停靠在底部居中 dialogWindow.setAttributes(lp); dialog4.show(); 复制代码常用的对话框都介绍的差不多了。:.゚ヽ(。◕‿◕。)ノ゚.:。+゚ 点个赞再走吧٩(๑´0`๑)۶。奥里给! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |