一.ProgressDialog
1.1方法解释
setMessage 设置弹框的信息 setTitle 设置弹框的标题 setIcon 设置弹框图标
setIndeterminate
当设置setIndeterminate(true)参数为真时,进度条采用不明确显示进度的‘模糊模式’,即滚轮的进度不是实际文件下载的进度
(false)参数为假时, 进度条不采用‘模糊模式’,而采用明确显示进度的‘明确模式’。
setCancelable(false) dialog弹出后会点击屏幕或物理返回键,dialog不消失
setCanceledOnTouchOutside(false) dialog弹出后会点击屏幕,dialog不消失;点击物理返回键dialog消失
setProgressStyle 弹框的样式设置
setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条
setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条
1.2实例操作
public class ProgressUtil {
private static ProgressDialog mDialog;
private static void createLoadingDialog(Context context) {
hide();
mDialog = new ProgressDialog(context);
mDialog.setMessage("正在上传照片,请稍等...");
// mDialog.setTitle("正在上传数据中");
mDialog.setIcon(R.drawable.upload);
//参数为真时,进度条采用不明确显示进度的‘模糊模式,即无法查看真实的进度,如果为false则为真实进度
mDialog.setIndeterminate(false);
//dialog弹出后会点击屏幕或物理返回键,dialog不消失
mDialog.setCancelable(false);
//dialog弹出后会点击屏幕,dialog不消失;点击物理返回键dialog消失
mDialog.setCanceledOnTouchOutside(false);
mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
}
/**
* 显示进度dialog
* @param context 上下文对象
* @param
*/
public static void show(Activity context) {
if (context == null || context.isFinishing()) return;
createLoadingDialog(context);
mDialog.show();
}
/**
* 显示进度dialog
* @param context 上下文对象
* @param message 显示的message
*/
public static void show(Activity context, String message) {
createLoadingDialog(context);
mDialog.setMessage(message);
mDialog.show();
}
public static void hide() {
if (mDialog != null && mDialog.isShowing()) {
mDialog.dismiss();
mDialog = null;
}
}
public static boolean isShowing() {
if (mDialog != null) {
return mDialog.isShowing();
}
return false;
}
}
二.AlertDialog.Builder
2.1方法解释
setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setSingleChoiceItems :用来设置对话框显示一系列的单选框
setNeutralButton :普通按钮
setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
2.2简单弹框显示
new AlertDialog.Builder(this)
.setTitle("警告")
.setMessage("您是否注销")
.setNegativeButton("取消", null)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
用户点击确定后的操作
}
}).create().show();
2.3列表弹框
//查验员名称列表
final String[] names = new String[informationBeans.size()];
//初始化查验员名称列表
for (int i = 0; i < informationBeans.size(); i++) {
names[i] = informationBeans.get(i).getCyyName() + "";//加引号防止警员编号或姓名为null
}
AlertDialog.Builder listDialog =
new AlertDialog.Builder(LoginActivity.this);
listDialog.setTitle("请选择查验员姓名");
listDialog.setCancelable(true);
listDialog.setItems(names, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// which 下标从0开始
LogUtils.w(informationBeans.get(which).toString());
}
}).show();
2.4单选列表
final int[] index = new int[1];
final String[] items4 = new String[]{"item9", "item4", "item1", "item3"};//创建item
new AlertDialog.Builder(this)
.setTitle("选择您喜欢的item")
.setIcon(R.mipmap.ic_launcher)
.setSingleChoiceItems(items4, 0, new DialogInterface.OnClickListener() {//添加单选框
@Override
public void onClick(DialogInterface dialogInterface, int i) {
index[0] = i;
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(RequestAction.this, "这是确定按钮" + "点的是:" + items4[index[0]], Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", null)
.setCancelable(false).create().show();
2.5多选列表
final String[] items5 = {"item1", "item2", "item3", "item4"};
final boolean[] booleans = {true, true, false, false};
new AlertDialog.Builder(this)
.setTitle("选择您喜欢的")
.setIcon(R.mipmap.ic_launcher)
.setMultiChoiceItems(items5, booleans, new DialogInterface.OnMultiChoiceClickListener() {//创建多选框
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
booleans[i] = b;
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
@Override
public void onClick(DialogInterface dialogInterface, int i) {
StringBuilder stringBuilder = new StringBuilder();
for (int a = 0; a < booleans.length; a++) {
if (booleans[a]) {
stringBuilder.append(items5[a]).append(",");
}
}
Toast.makeText(RequestAction.this, "选中的是:" +
stringBuilder.toString(), Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", null)
.setCancelable(false).create().show();
2.6自定义Adapter
final String[] items6 = {"item1", "item2", "item3", "item4"};
new AlertDialog.Builder(this)
.setTitle("标题")
.setIcon(R.mipmap.ic_launcher)
.setAdapter(new ArrayAdapter<String>(RequestAction.this, R.layout.item, R.id.tv, items6), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(RequestAction.this, "点的是:" + items6[i], Toast.LENGTH_SHORT).show();
}
})
.create().show();
R.layout.item对应的布局文件,R.id.tv对应的控件
2.7自定义view的用法
final AlertDialog.Builder alertDialog7 = new AlertDialog.Builder(this);
View view1 = View.inflate(this, R.layout.activity_alter_dialog_setview, null);
final EditText et = view1.findViewById(R.id.et);
Button bu = view1.findViewById(R.id.button);
alertDialog7
.setTitle("Login")
.setIcon(R.mipmap.ic_launcher)
.setView(view1)
.create();
final AlertDialog show = alertDialog7.show();
bu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(RequestAction.this, "电话" + et.getText().toString(), Toast.LENGTH_SHORT).show();
show.dismiss();
}
});