Android中的Dialog总结

1. 简单的单按钮对话框

1
2
3
4
new AlertDialog.Builder(getContext())
.setMessage(getString(R.string.main_dialog_simple_title))
.setPositiveButton(getString(R.string.dialog_ok), null)
.show();

20180524152714803498814.png

2. 简单的多按钮对话框

1
2
3
4
5
6
7
new AlertDialog.Builder(getContext())
.setTitle(getString(R.string.main_dialog_simple_title))
.setMessage(getString(R.string.main_dialog_simple_message))
.setPositiveButton(getString(R.string.dialog_ok), null)
.setNegativeButton(getString(R.string.dialog_cancel), null)
.setNeutralButton(getString(R.string.dialog_neutral), null)
.show();

20180524152714806024632.png

3. 单选对话框

1
2
3
4
5
6
7
8
9
10
String[] singleChoiceItems = getResources().getStringArray(R.array.dialog_choice_array); int itemSelected = 0; new AlertDialog.Builder(getContext())
.setTitle(getString(R.string.main_dialog_single_choice))
.setSingleChoiceItems(singleChoiceItems, itemSelected, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
})
.setNegativeButton(getString(R.string.dialog_cancel), null)
.show();

20180524152714807770908.png

4. 多选对话框

1
2
3
4
5
6
7
8
String[] multiChoiceItems = getResources().getStringArray(R.array.dialog_choice_array); boolean[] checkedItems = {true, false, false, false, false}; new AlertDialog.Builder(getContext())
.setTitle(getString(R.string.main_dialog_multi_choice))
.setMultiChoiceItems(multiChoiceItems, checkedItems,
![屏幕快照 2018-05-16 上午9.58.24]($res/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7%202018-05-16%20%E4%B8%8A%E5%8D%889.58.24.png)
null)
.setPositiveButton(getString(R.string.dialog_ok), null)
.setNegativeButton(getString(R.string.dialog_cancel), null)
.show();

20180524152714810264023.png

5. 进度条对话框1

1
ProgressDialog progressDialog = new ProgressDialog(getContext()); progressDialog.setMessage(getString(R.string.main_dialog_progress_title)); progressDialog.show();

20180524152714811979490.png

6. 进度条对话框2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
final ProgressDialog horizontalProgressDialog = new ProgressDialog(getContext()); horizontalProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); horizontalProgressDialog.setMessage(getString(R.string.main_dialog_progress_title)); horizontalProgressDialog.setCancelable(false); horizontalProgressDialog.setMax(100); horizontalProgressDialog.show(); new Thread(new Runnable() {
int progress = 0; @Override
public void run() {
while (progress <= 100) {
horizontalProgressDialog.setProgress(progress);
if (progress == 100) {
horizontalProgressDialog.dismiss();
}
try {
Thread.sleep(35);
} catch (InterruptedException e) {
e.printStackTrace();
}
progress++;
}
}
}).start();

20180524152714814062038.png

7. 日期选择对话框

1
2
3
4
5
6
7
8
9
10
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String date = DateFormat.getDateInstance(DateFormat.MEDIUM).format(calendar.getTime());
btn_dialog_7.setText(date);
}
}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); datePickerDialog.show();

屏幕快照 2018-05-16 上午9.58.54

7. 时间选择对话框

1
2
3
4
5
6
7
8
9
TimePickerDialog timePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
calendar.set(Calendar.HOUR_OF_DAY, i);
calendar.set(Calendar.MINUTE, i1);
String time = DateFormat.getTimeInstance(DateFormat.SHORT).format(calendar.getTime());
btn_dialog_8.setText(time);
}
}, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true); timePickerDialog.show();

20180524152714815685030.png

8. 底部对话框(BottomSheet)

1
2
3
4
5
6
7
8
9
10
11
final BottomSheetDialog mBottomSheetDialog = new BottomSheetDialog(getContext()); View dialogView = getActivity().getLayoutInflater().inflate(R.layout.dialog_bottom_sheet, null); Button btn_dialog_bottom_sheet_ok = dialogView.findViewById(R.id.btn_dialog_bottom_sheet_ok); Button btn_dialog_bottom_sheet_cancel = dialogView.findViewById(R.id.btn_dialog_bottom_sheet_cancel); ImageView img_bottom_dialog = dialogView.findViewById(R.id.img_bottom_dialog); Glide.with(getContext()).load(R.drawable.bottom_dialog).into(img_bottom_dialog); mBottomSheetDialog.setContentView(dialogView); btn_dialog_bottom_sheet_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomSheetDialog.dismiss();
}
}); btn_dialog_bottom_sheet_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomSheetDialog.dismiss();
}
}); mBottomSheetDialog.show();

9. 全屏对话框

1
2
3
4
5
6
final Dialog fullscreenDialog = new Dialog(getContext(), R.style.DialogFullscreen); fullscreenDialog.setContentView(R.layout.dialog_fullscreen); ImageView img_full_screen_dialog = fullscreenDialog.findViewById(R.id.img_full_screen_dialog); Glide.with(getContext()).load(R.drawable.google_assistant).into(img_full_screen_dialog); ImageView img_dialog_fullscreen_close = fullscreenDialog.findViewById(R.id.img_dialog_fullscreen_close); img_dialog_fullscreen_close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fullscreenDialog.dismiss();
}
}); fullscreenDialog.show(); break;
1
2
3
4
<style name="DialogFullscreen" parent="@android:style/Theme.Material.Light.DialogWhenLarge">
<item name="android:windowNoTitle">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> </style>

20180524152714817610818.png

10. PopupMenu

1
2
3
4
5
6
PopupMenu popupMenu = new PopupMenu(getContext(), btn_dialog_11); popupMenu.getMenuInflater().inflate(R.menu.popup_menu_main, popupMenu.getMenu()); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
}); popupMenu.show();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.eajy.materialdesigndemo.activity.MainActivity"> <item android:id="@+id/popup_menu_action_1"
android:orderInCategory="100"
android:title="action 1"
app:showAsAction="never" /> <item android:id="@+id/popup_menu_action_2"
android:orderInCategory="100"
android:title="action 2"
app:showAsAction="never" /> <item android:id="@+id/popup_menu_action_3"
android:orderInCategory="100"
android:title="action 3"
app:showAsAction="never"> <menu> <item android:id="@+id/popup_menu_action_4"
android:orderInCategory="100"
android:title="item 1"
app:showAsAction="never" />
<item android:id="@+id/popup_menu_action_5"
android:orderInCategory="100"
android:title="item 2"
app:showAsAction="never" />
<item android:id="@+id/popup_menu_action_6"
android:orderInCategory="100"
android:title="item 3"
app:showAsAction="never" />
</menu> </item> </menu>

20180524152714819159925.png