Android 封装对话框工具类
2023-09-14 09:14:00 时间
(一)比较正常的AlertDialog的创建和使用,Alert(警告)
代码设计:
// 警告对话框,需要用Builder方法创建
public void bt2(View v) {
// 这里的属性可以一直设置,因为每次设置后返回的是一个builder对象
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 设置提示框的标题
builder.setTitle("提示标题").
// 设置提示框的图标
setIcon(R.drawable.ic_launcher).
// 设置要显示的信息
setMessage("文本的提示信息:你妈喊你回家吃饭了!").
// 设置确定按钮
setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "选择就确定哦", 0).show();
}
}).
// 设置取消按钮,null是什么都不做
setNegativeButton("取消", null).
// 设置退出按钮,在中间的按钮
setNeutralButton("退出", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 退出程序
finish();
}
});
// 生产对话框
AlertDialog alertDialog = builder.create();
// 显示对话框
alertDialog.show();
}
程序运行后显示的结果:
这里如果点击取消,对话框消失,什么都没有做
如果点击退出,会直接退出程序
如果点击确定,会弹出一个Toast,提示你
(二)设计一个选择菜单样式的对话框
代码设计:
//数据源
String[] array = new String[] { "音乐", "体育", "舞蹈", "看书" };
// 显示一个菜单的对话框选项,点击选择菜单后,菜单会消失
// 匿名类去创建
public void bt3(View v) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 设置标题
builder.setTitle("选择你最喜欢的课程").
// 设置可选择的内容,并添加点击事件
setItems(array, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// which代表的是选择的标签的序列号
Toast.makeText(MainActivity.this, "选择" + array[which],
Toast.LENGTH_SHORT).show();
}
}).
// 产生对话框,并显示出来
create().show();
}
程序运行后显示的结果:
(三)设置一个单选按钮菜单的对话框
其实这个对话框和上面的菜单对话框差不多,只是样式改变了,还有一点不同的是点击一个选项后对话框是不会消失的,所以必须要设置按钮,来使对话框消失
代码设计:
String[] array = new String[] { "音乐", "体育", "舞蹈", "看书" };
// 单选按钮的对话框,选择一个按钮值后,
// 对话框也是不会自动消失,需要自己关闭
// 要设置按钮,点击按钮后对话框才会消失
public void bt4(View v) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 设置标题
builder.setTitle("选择你最喜欢的课程").
// 设置可选择的内容,并添加点击事件
// 第一个参数是可以选择的单选框的内容
// 第二个参数是默认选中的项
// 第三个参数是点击选中的监听器
setSingleChoiceItems(array, 0, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "选择" + array[which],
Toast.LENGTH_SHORT).show();
}
}).
// 因为对话框不会自动消失,所以要添加按钮的必要
// 设置确定按钮
setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "选择确定", Toast.LENGTH_SHORT).show();
}
}).
// 取消,什么都不做,对话框消失而已
setNegativeButton("取消", null).
// 产生对话框,并显示出来
create().show();
}
运行后的结果:
(四)多选项的对话框设计
多选框的显示和单选的显示也是有点相似的,都是需要设置按钮来使对话框消失
代码如下:
String[] array = new String[] { "音乐", "体育", "舞蹈", "看书" };
// 多选按钮的对话框
// 对话框也是不会自动消失,需要自己关闭
// 要设置按钮,点击按钮后对话框才会消失
public void bt5(View v) {
// 多选按钮的默认状态
boolean[] checkedItems = { true, false, false, true };
// 多选按钮选中后保存的数据
final List<String> list = new ArrayList<String>();
// 默认的数据
list.add("音乐");
list.add("看书");
// 创建对话框的builder对象
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 设置标题
builder.setTitle("选择你最喜欢的课程").
// 设置可选择的内容,并添加点击事件
// 第一个参数是可以选择的选框的内容
// 第二个参数是一个布尔数组,如果是true代表的是默认选中
// 第三个参数是点击选中的监听器
setMultiChoiceItems(array, checkedItems,
new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
// 这里无论某个选项是被选中后被取消都会触发该方法
// which代表的是选中的是多少游标值的选项
// isChecked是代表该选项是或否选中了
// 判断如果集合中有某个数据,就把他移除,否则就添加数据
// 注意这里数选择之后的状态
if (isChecked) {
// 添加数据
list.add(array[which]);
} else {
// 移除数据
list.remove(array[which]);
}
}
}).
// 因为对话框不会自动消失,所以要添加按钮的必要
// 设置确定按钮
setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "你选中了" + list, 0)
.show();
}
}).
// 取消,什么都不做,对话框消失而已
setNegativeButton("取消", null).
// 产生对话框,并显示出来
create().show();
}
(五)设计一个有输入框的对话框
// 设置一个有输入文本的对话框---->builder的setView方法
// 输入数据后,对数据进行处理
// 这里要设置按钮,才能对数据的数据进行处理
public void bt7(View v) {
// 创建一个EditText对象
final EditText et = new EditText(this);
// 创建对话框对象
new AlertDialog.Builder(this).
// 设置标题
setTitle("有输入框的对话框").
// 添加输入的文本框
setView(et).
// 添加确定按钮
setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 获取输入的字符
String in = et.getText().toString();
Toast.makeText(MainActivity.this, "输入;" + in, 0).show();
}
}).setNegativeButton("取消", null).
// 产生并显示
create().show();
}
(六)条形对话框
// 显示设置水平的进度框
public void bt2(View v) {
// 创建进度条的对话框
final ProgressDialog dialog = new ProgressDialog(this);
// 设置进度条的样式,选择圆形或条状
// 这里这圆形的
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 设置标题
dialog.setTitle("文件下载");
// 设置文本信息
dialog.setMessage("正在下载。。。");
// 设置是否能用后退键出对话框
// 选择false就代表不能
// 如果设置为false,程序可能退出不了
dialog.setCancelable(false);
// 显示对话框
dialog.show();
// 这里新建一个线程来,跟新进度和关闭页面
new Thread(new Runnable() {
@Override
public void run() {
// 获取进度值的当前的值
int index = 0;
// 跟新进度
while (index < dialog.getMax()) {
index++;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 设置进度的值
dialog.setProgress(index);
}
// 完成任务后,退出对话框
dialog.cancel();
}
}).start();
}
相关文章
- android图片资源加密,Android平台图像文件加密
- 记一次 android 线上 oom 问题
- android 混淆不起作用,Android代码混淆的写法总结
- mac 电脑android环境变量设置,mac上Android环境变量配置[通俗易懂]
- 测试android sdk是否安装成功,配置Android SDK
- android vlc 中文字幕,解决Android版vlc中文乱码问题
- 【Android布局】在程序中设置android gravity 和 android layout Gravity属性
- [译] 将通用 Android 音乐播放器转化为 instant 应用
- android scaleanimation动画,Android 的ScaleAnimation 缩放动画基本运用
- android登录注册跳转的代码_Android开发代码
- android调用相册并显示图片_Android获取相册列表
- android线程间通信的几种方法_Android进程间和线程间通信方式
- Android Services Library_android freeware
- 【Android FFMPEG 开发】FFMPEG 音视频同步 ( 音视频同步方案 | 视频帧 FPS 控制 | H.264 编码 I / P / B 帧 | PTS | 音视频同步 )
- 【Android 异步操作】AsyncTask 异步任务 ( 参数简介 | 方法简介 | 使用方法 | AsyncTask 源码分析 )
- 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库编码 WebP 图片 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
- android 巧用finish方法详解手机开发
- Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string ‘android-23’ 等错误详解手机开发
- Connecting Android to Oracle: The Ultimate Guide for Seamless Integration.(android连接oracle)
- 报告称 Windows 比 Debian Linux 和 Android 更安全
- 如何看待 Kotlin 成为 Android 官方支持的开发语言?一线开发者这样说
- Android的webview支持HTML5的离线应用功能详细配置
- Android管理Activity中的fragments
- Android系统自带样式(android:theme)
- Android开源组件小结
- Android数据库打包随APK发布的实例代码