最新的项目需求中,应用到了Dialog。之前也是有用过,但当时没有用心记下来。这一次,来一个更全一些的信息记录,给自己一个交代。
先构建基本的显示方法:
/**
* 测试其他弹出框
*
* @param str
*/
private void showDialog(String str) {
new AlertDialog.Builder(MainActivity.this)
.setMessage(str)
.show();
}
1.确定取消对话框
对话框中有2个按钮 通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件。
对话框中有2个按钮 通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件。
/**
* 確定取消框
*/
private void showEnsureOrNotDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.superman);
builder.setTitle("確定取消框");
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();
}
});
builder.create().show();
}
2.多个按钮信息框
/**
* 多个选择信息框
*/
private void showMultiChoice() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.iron_man);
builder.setTitle("多个选择信息框--投票");
builder.setMessage("你喜欢哪个动作明星?");
builder.setPositiveButton("李连杰", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("你选择了--李连杰");
}
});
builder.setNeutralButton("成龙", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("你选择了--成龙");
}
});
builder.setNeutralButton("甄子丹", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("你选择了--甄子丹");
}
});
builder.setNegativeButton("吴京", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("你选择了--吴京");
}
});
builder.create().show();
}
3,单选列表框
/**
* 展示单选列表框
*/
private void showSingleChoice() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.panda);
builder.setTitle("单项选择");
builder.setSingleChoiceItems(mItems, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
singleChoiceId = which;
showDialog("您选择了第" + which + "项,内容是:" + mItems[which]);
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("确定");
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("取消");
}
});
builder.create().show();
}
4,列表框
/**
* 列表展示,多项选择
*/
private void showMultiListChoice() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("列表框多选");
builder.setItems(mItems, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("你选择了第" + which + "项,你认为最重要的是:" + mItems[which]);
}
});
builder.create().show();
}
5,进度展示
/**
* 进度条展示
*/
private void showProgressDialog() {
final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setIcon(R.drawable.panda1);
progressDialog.setTitle("进度条展示窗口");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(100);
progressDialog.setButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("确定");
progressDialog.dismiss();
}
});
progressDialog.setButton2("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
showDialog("取消");
progressDialog.dismiss();
}
});
progressDialog.show();
new Thread() {
@Override
public void run() {
int progress = 0;
while (progress < 100) {
try {
Thread.sleep(100);
progress++;
progressDialog.incrementProgressBy(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
super.run();
}
}.start();
}
6,读取进度展示
/**
* 读取进度
*/
private void readProgressProgress() {
ProgressDialog mProgressDialog = new ProgressDialog(this);
mProgressDialog.setTitle("读取ing");
mProgressDialog.setMessage("正在读取中请稍候");
mProgressDialog.setIndeterminate(true);
mProgressDialog.setCancelable(true);
mProgressDialog.show();
}
7,自定义布局框展示
/**
* 展示自定义布局
*/
private void showSelfDefine() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(R.layout.self_define_view, null);
builder.setIcon(R.drawable.bired);
builder.setTitle("自定义输入框");
builder.setView(textEntryView);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
EditText userName = (EditText) textEntryView.findViewById(R.id.etUserName);
EditText password = (EditText) textEntryView.findViewById(R.id.etPassWord);
showDialog("姓名 :" + userName.getText().toString() + "密码:" + password.getText().toString() );
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
builder.create().show();
}
8,选项列表结果多个展示框
/**
* 展示列表选项多个展示框
*/
private void showMultiResult() {
final ArrayList<Integer> resultId = new ArrayList<>();
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
resultId.clear();
builder.setIcon(R.drawable.master);
builder.setTitle("多项选择");
builder.setMultiChoiceItems(mItems, new boolean[]{false, false, false, false,false}, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
resultId.add(which);
showDialog("你选择了第" + which + "个,内容是" + mItems[which]);
} else {
resultId.remove(which);
}
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String str = "";
int size = resultId.size();
for(int i=0;i<size;i++){
str+=mItems[resultId.get(i)]+"fenge";
}
showDialog(str);
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
}
公共的变量:
/**
* 选择列表数据
*/
final String[] mItems = {"学习力", "记忆力", "身体", "强大心理素质", "创造力"};
/**
* 默认被选中的ID
*/
int singleChoiceId = -1;
源码
理由是给弱者的安慰~~
理由是给弱者的安慰~~