Android弹窗探究之Dialog(一)

您所在的位置:网站首页 dialogue中文是什么意思 Android弹窗探究之Dialog(一)

Android弹窗探究之Dialog(一)

2023-08-07 00:05| 来源: 网络整理| 查看: 265

在android里面,可视化视图除了最常见的Activity和Fragment外,还有一个就是今天我们要讲的主角Dialog了,虽然说Dialog的重要性和频率没有Activity那么高,但是在实际开发过程中Dialog依旧拥有着不可或缺的地位。

Dialog中文可以翻译为对话,意味着它更多充当的是一种提醒的作用,比如用户点击退出APP谈一个框进行确认操作,比如首页弹出一个APP用户隐私等等,尽管Google官方推出了DialogFragment来代替Dialog,但是我们仍然有必要去学习一下Dialog。

系统提供的Dialog

由于Dialog使用起来非常简单,这里我就不过多讲解,直接贴代码和效果图了。

普通弹框 1.png fun commonDialog(view: View) { val dialog = AlertDialog.Builder(this) dialog.setIcon(R.mipmap.ic_launcher) dialog.setTitle("对话框") dialog.setMessage("这是一个普通的对话框") dialog.show() } 选择弹框 2.png fun chooseDialog(view: View) { val dialog = AlertDialog.Builder(this) dialog.setIcon(R.mipmap.ic_launcher) dialog.setTitle("选择对话框") dialog.setMessage("这是一个可以选择的对话框") dialog.setPositiveButton( "确定" ) { _, _ -> Toast.makeText(this@DialogActivity, "你点击了确定按钮", Toast.LENGTH_SHORT).show() } dialog.setNeutralButton("关闭") { _, _ -> Toast.makeText(this@DialogActivity, "你点击了关闭按钮", Toast.LENGTH_SHORT).show() } dialog.setNegativeButton( "取消" ) { _, _ -> Toast.makeText(this@DialogActivity, "你点击了取消按钮", Toast.LENGTH_SHORT).show() } dialog.show() } 列表弹框 3.png fun itemDialog(view: View) { val items = arrayOf("我是1", "我是2", "我是3", "我是4") val dialog = AlertDialog.Builder(this) dialog.setIcon(R.mipmap.ic_launcher) dialog.setTitle("列表对话框") dialog.setItems( items ) { _, which -> Toast.makeText(this@DialogActivity, items[which], Toast.LENGTH_SHORT).show() } dialog.show() } 单选弹框 4.png fun singleChooseDialog(view: View) { val items = arrayOf("我是1", "我是2", "我是3", "我是4") val dialog = AlertDialog.Builder(this) dialog.setIcon(R.mipmap.ic_launcher) dialog.setTitle("单选对话框") dialog.setSingleChoiceItems( items, 0 ) { _, which -> Toast.makeText(this@DialogActivity, items[which], Toast.LENGTH_SHORT).show() } dialog.show() } 多选弹框 5.png fun multiChooseDialog(view: View) { val items = arrayOf("我是1", "我是2", "我是3", "我是4") val chooseItem = booleanArrayOf(false, false, false, false) val dialog = AlertDialog.Builder(this) dialog.setIcon(R.mipmap.ic_launcher) dialog.setTitle("多选对话框") dialog.setMultiChoiceItems( items, chooseItem ) { _, which, _ -> Toast.makeText( this@DialogActivity, items[which], Toast.LENGTH_SHORT ).show() } dialog.show() } 等待弹框 6.png fun waitDialog(view: View) { val dialog = ProgressDialog(this) dialog.setTitle("等待对话框") dialog.setMessage("等待中...") dialog.show() } 进度条弹框(Google不建议使用,建议使用ProgressBar来代替) 7.png fun progressDialog(view: View) { val maxValue = 100 val dialog = ProgressDialog(this) dialog.setIcon(R.mipmap.ic_launcher) dialog.setTitle("进度条对话框") dialog.progress = 0 dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) dialog.max = maxValue dialog.show() Thread { var progress = 0 while (progress < maxValue) { Thread.sleep(100) progress++ dialog.progress = progress } dialog.cancel() }.start() } 可编辑弹框 8.png fun editDialog(view: View) { val editText = EditText(this) val editDialog = AlertDialog.Builder(this) editDialog.setIcon(R.mipmap.ic_launcher) editDialog.setTitle("可编辑弹出框").setView(editText) editDialog.setPositiveButton( "确定" ) { _, _ -> Toast.makeText(this@DialogActivity, editText.text, Toast.LENGTH_SHORT).show() } editDialog.show() } 自定义的Dialog

自定义布局文件

实现代码

fun customDialog(view: View) { val customDialog = AlertDialog.Builder(this) val view = LayoutInflater.from(this).inflate(R.layout.dialog_custom,null) customDialog.setView(view) customDialog.show() }

最终效果

9.png

其实Dialog的使用相对来说比较简单,但是在使用的过程中仍然有几点需要注意:

(1)Dialog无法直接与宿主(Activity/Fragment)绑定,所以官方建议使用DialogFragment来管理对话框,使用Dialog可以确保它能正确处理生命周期事件,同时还可以以嵌入组件的形式在较大的界面重复使用对话框。 (2)Dialog除了自带的样式,我们还可以为Dialog设置我们想要的样式,其操作也很简单,只需要在对Dialog进行初始化的时候加上R.style.XXX。

好了,关于Dialog的简单使用就介绍到这里了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3