开源软件名称:android-dialog
开源软件地址:https://gitee.com/i-android/android-dialog
开源软件介绍:
android-dialog此框架提供七种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。 - LoadingDialog:正在加载对话框
- MessageDialog:消息对话框,只有确定按钮
- AlertDialog:确认对话框,有确认和取消按钮
- ListDialog:普通选择、单选或者多选对话框
- EditTextDialog:有一个editText和checkbox的对话框
- ProgressDialog:一个可以显示具体进度的对话框
- BottomSheetDialog:一个在底部弹出的对话框
- 支持扩展的ContentViewDialog
gradle配置方式compile 'cn.yhq:android-dialog:1.6.0'
使用方法创建对话框的方式有两种: 1、使用DialogBuilder直接创建,这种方式创建的对话框不会保存状态,即当屏幕旋转等导致的activity重建,对话框会消失。显示一个正在加载的对话框DialogBuilder.loadingDialog(this).show();
显示一个进度对话框这个地方需要注意的是需要设置一个ProgressHandler,用于主动更新对话框的进度: DialogBuilder.ProgressHandler progressHandler = new DialogBuilder.ProgressHandler(); DialogBuilder.progressDialog(MainActivity.this).progressHandler(progressHandler).show(); // 更新进度progressHandler.setProgress(progress);
显示一个消息对话框DialogBuilder.messageDialog(MainActivity.this).setMessage("消息对话框").show();
显示一个确认对话框DialogBuilder.alertDialog(MainActivity.this).setMessage(args.getString("message")) .setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了确认按钮", Toast.LENGTH_LONG).show(); } }).create();
显示一个普通选择对话框 DialogBuilder.listDialog(MainActivity.this).setChoiceItems(list) .setChoiceType(DialogBuilder.TYPE_CHOICE_NORMAL) .setOnChoiceListener(new DialogBuilder.OnChoiceListener() { // 对话框关闭后回调的一个方法,返回选择的条目 @Override public void onChoiceItem(Object item) { Toast.makeText(MainActivity.this, "最终选择了:" + item, Toast.LENGTH_LONG).show(); } }).setOnChoiceClickListener(new DialogInterface.OnClickListener() { // 点击条目后回调的一个方法 @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了第" + (which + 1) + "个条目", Toast.LENGTH_LONG).show(); } }).show();
显示一个单选对话框 DialogBuilder.listDialog(MainActivity.this).setChoiceItems(list) .setChoiceType(DialogBuilder.TYPE_CHOICE_SINGLE) .setOnChoiceListener(new DialogBuilder.OnChoiceListener() { // 对话框关闭后回调的一个方法,返回选择的条目 @Override public void onChoiceItem(Object item) { Toast.makeText(MainActivity.this, "最终选择了:" + item, Toast.LENGTH_LONG).show(); } }).setOnChoiceClickListener(new DialogInterface.OnClickListener() { // 选择某一个条目的时候回调的一个方法,返回选择的是哪一个条目 @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了第" + (which + 1) + "个条目", Toast.LENGTH_LONG).show(); } }).setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了确定按钮", Toast.LENGTH_LONG).show(); } }).show();
显示一个多选对话框 // 已经选好的条目 int[] checkedItems = {1, 3, 4}; DialogBuilder.listDialog(MainActivity.this) .setChoiceType(DialogBuilder.TYPE_CHOICE_MULTI).setChoiceItems(list) .setCheckedItems(checkedItems) .setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了确定按钮", Toast.LENGTH_LONG).show(); } }).setOnMultiChoiceClickListener(new DialogInterface.OnMultiChoiceClickListener() { // 选择或者取消选择某一个条目的时候回调的一个方法,返回某一个条目的选择情况 @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { Toast.makeText(MainActivity.this, (isChecked ? "选择" : "取消选择") + "了第" + (which + 1) + "个条目", Toast.LENGTH_LONG) .show(); } }).setOnMultiChoiceListener(new DialogBuilder.OnMultiChoiceListener() { // 对话框关闭后回调的一个方法,返回选择的条目 @Override public void onMultiChoiceItems(Object[] items) { Toast.makeText(MainActivity.this, "最终选择了:" + Arrays.toString(items), Toast.LENGTH_LONG).show(); } }).show();
显示一个文本输入对话框DialogBuilder.editTextDialog(MainActivity.this) .setOnEditTextDialogListener(new DialogBuilder.OnEditTextDialogListener() { @Override public void onEditTextCreated(EditText editText, CheckBox checkbox) { editText.setHint("请输入文本内容"); checkbox.setVisibility(View.VISIBLE); checkbox.setText("checkbox文本"); } @Override public boolean onEditTextSelected(EditText editText, String text, CheckBox checkbox, boolean checked) { Toast.makeText(MainActivity.this, editText.getText().toString(), Toast.LENGTH_LONG).show(); return false; } }).show();
显示一个BottomSheet对话框 View sheetView = View.inflate(MainActivity.this, android.R.layout.simple_list_item_1, null); TextView sheetViewTextView = (TextView) sheetView.findViewById(android.R.id.text1); sheetViewTextView.setText("自定义视图"); DialogBuilder.bottomSheetDialog(MainActivity.this).setContentView(sheetView).show();
显示一个自定义对话框View customView = View.inflate(MainActivity.this, android.R.layout.simple_list_item_1, null); TextView textView = (TextView) customView.findViewById(android.R.id.text1); textView.setText("自定义视图"); DialogBuilder.otherDialog(MainActivity.this).setContentView(customView).show();
2、使用DialogManager,配合IDialogCreator接口创建的对话框,这种方式创建的对话框会保存状态,在屏幕旋转后对话框不会消失。DialogManager dialogManager = new DialogManager(this);Bundle args = new Bundle();args.putString("message", "确认对话框");dialogManager.showDialog(1, args); @Override public IDialog createDialog(int id, Bundle args) { switch (id) { case 1: // 这里返回的就是按照普通方式创建的对话框 return DialogBuilder.alertDialog(this).setMessage(args.getString("message")) .setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了确认按钮", Toast.LENGTH_LONG).show(); } }).create(); } return null; } 3、当使用第二种方式的时候,你可以在你的Activity基类里面实现IDialogCreator接口,并提供DialogManager的封装方法,这样在你的Activity子类里面重写IDialogCreator接口方法后,直接调用显示对话框的方法showDialogFragment就可以直接显示对话框了。具体可以参考BaseActivity与BaseFragment。public class BaseActivity extends AppCompatActivity implements IDialogCreator { private DialogManager dialogManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dialogManager = new DialogManager(this); } public void showDialogFragment(int id) { dialogManager.showDialog(id); } public void showDialogFragment(int id, Bundle bundle) { dialogManager.showDialog(id, bundle); } @Override public IDialog createDialog(int id, Bundle args) { return null; }} |
请发表评论