android自定义dialog开源库,android-dialog: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...
android-dialog
此框架提供七種對(duì)話框的顯示,并支持對(duì)話框的擴(kuò)展,目的是為了提供對(duì)話框的統(tǒng)一管理,并提供對(duì)話框顯示的公共接口。
LoadingDialog:正在加載對(duì)話框
MessageDialog:消息對(duì)話框,只有確定按鈕
AlertDialog:確認(rèn)對(duì)話框,有確認(rèn)和取消按鈕
ListDialog:普通選擇、單選或者多選對(duì)話框
EditTextDialog:有一個(gè)editText和checkbox的對(duì)話框
ProgressDialog:一個(gè)可以顯示具體進(jìn)度的對(duì)話框
BottomSheetDialog:一個(gè)在底部彈出的對(duì)話框
支持?jǐn)U展的ContentViewDialog
gradle配置方式
compile 'cn.yhq:android-dialog:1.6.0'
使用方法
創(chuàng)建對(duì)話框的方式有兩種:
1、使用DialogBuilder直接創(chuàng)建,這種方式創(chuàng)建的對(duì)話框不會(huì)保存狀態(tài),即當(dāng)屏幕旋轉(zhuǎn)等導(dǎo)致的activity重建,對(duì)話框會(huì)消失。
顯示一個(gè)正在加載的對(duì)話框
DialogBuilder.loadingDialog(this).show();
顯示一個(gè)進(jìn)度對(duì)話框
這個(gè)地方需要注意的是需要設(shè)置一個(gè)ProgressHandler,用于主動(dòng)更新對(duì)話框的進(jìn)度:
DialogBuilder.ProgressHandler progressHandler =
new DialogBuilder.ProgressHandler();
DialogBuilder.progressDialog(MainActivity.this).progressHandler(progressHandler).show();
// 更新進(jìn)度
progressHandler.setProgress(progress);
顯示一個(gè)消息對(duì)話框
DialogBuilder.messageDialog(MainActivity.this).setMessage("消息對(duì)話框").show();
顯示一個(gè)確認(rèn)對(duì)話框
DialogBuilder.alertDialog(MainActivity.this).setMessage(args.getString("message"))
.setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "點(diǎn)擊了確認(rèn)按鈕", Toast.LENGTH_LONG).show();
}
}).create();
顯示一個(gè)普通選擇對(duì)話框
DialogBuilder.listDialog(MainActivity.this).setChoiceItems(list)
.setChoiceType(DialogBuilder.TYPE_CHOICE_NORMAL)
.setOnChoiceListener(new DialogBuilder.OnChoiceListener() {
// 對(duì)話框關(guān)閉后回調(diào)的一個(gè)方法,返回選擇的條目
@Override
public void onChoiceItem(Object item) {
Toast.makeText(MainActivity.this, "最終選擇了:" + item, Toast.LENGTH_LONG).show();
}
}).setOnChoiceClickListener(new DialogInterface.OnClickListener() {
// 點(diǎn)擊條目后回調(diào)的一個(gè)方法
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "點(diǎn)擊了第" + (which + 1) + "個(gè)條目",
Toast.LENGTH_LONG).show();
}
}).show();
顯示一個(gè)單選對(duì)話框
DialogBuilder.listDialog(MainActivity.this).setChoiceItems(list)
.setChoiceType(DialogBuilder.TYPE_CHOICE_SINGLE)
.setOnChoiceListener(new DialogBuilder.OnChoiceListener() {
// 對(duì)話框關(guān)閉后回調(diào)的一個(gè)方法,返回選擇的條目
@Override
public void onChoiceItem(Object item) {
Toast.makeText(MainActivity.this, "最終選擇了:" + item, Toast.LENGTH_LONG).show();
}
}).setOnChoiceClickListener(new DialogInterface.OnClickListener() {
// 選擇某一個(gè)條目的時(shí)候回調(diào)的一個(gè)方法,返回選擇的是哪一個(gè)條目
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "點(diǎn)擊了第" + (which + 1) + "個(gè)條目",
Toast.LENGTH_LONG).show();
}
}).setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "點(diǎn)擊了確定按鈕", Toast.LENGTH_LONG).show();
}
}).show();
顯示一個(gè)多選對(duì)話框
// 已經(jīng)選好的條目
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, "點(diǎn)擊了確定按鈕", Toast.LENGTH_LONG).show();
}
}).setOnMultiChoiceClickListener(new DialogInterface.OnMultiChoiceClickListener() {
// 選擇或者取消選擇某一個(gè)條目的時(shí)候回調(diào)的一個(gè)方法,返回某一個(gè)條目的選擇情況
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
Toast.makeText(MainActivity.this,
(isChecked ? "選擇" : "取消選擇") + "了第" + (which + 1) + "個(gè)條目", Toast.LENGTH_LONG)
.show();
}
}).setOnMultiChoiceListener(new DialogBuilder.OnMultiChoiceListener() {
// 對(duì)話框關(guān)閉后回調(diào)的一個(gè)方法,返回選擇的條目
@Override
public void onMultiChoiceItems(Object[] items) {
Toast.makeText(MainActivity.this, "最終選擇了:" + Arrays.toString(items),
Toast.LENGTH_LONG).show();
}
}).show();
顯示一個(gè)文本輸入對(duì)話框
DialogBuilder.editTextDialog(MainActivity.this)
.setOnEditTextDialogListener(new DialogBuilder.OnEditTextDialogListener() {
@Override
public void onEditTextCreated(EditText editText, CheckBox checkbox) {
editText.setHint("請(qǐng)輸入文本內(nèi)容");
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();
顯示一個(gè)BottomSheet對(duì)話框
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();
顯示一個(gè)自定義對(duì)話框
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接口創(chuàng)建的對(duì)話框,這種方式創(chuàng)建的對(duì)話框會(huì)保存狀態(tài),在屏幕旋轉(zhuǎn)后對(duì)話框不會(huì)消失。
DialogManager dialogManager = new DialogManager(this);
Bundle args = new Bundle();
args.putString("message", "確認(rèn)對(duì)話框");
dialogManager.showDialog(1, args);
@Override
public IDialog createDialog(int id, Bundle args) {
switch (id) {
case 1:
// 這里返回的就是按照普通方式創(chuàng)建的對(duì)話框
return DialogBuilder.alertDialog(this).setMessage(args.getString("message"))
.setOnPositiveButtonClickListener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "點(diǎn)擊了確認(rèn)按鈕", Toast.LENGTH_LONG).show();
}
}).create();
}
return null;
}
3、當(dāng)使用第二種方式的時(shí)候,你可以在你的Activity基類里面實(shí)現(xiàn)IDialogCreator接口,并提供DialogManager的封裝方法,這樣在你的Activity子類里面重寫(xiě)IDialogCreator接口方法后,直接調(diào)用顯示對(duì)話框的方法showDialogFragment就可以直接顯示對(duì)話框了。具體可以參考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;
}
}
總結(jié)
以上是生活随笔為你收集整理的android自定义dialog开源库,android-dialog: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: picf509c语言程序,樊媛媛c语言程
- 下一篇: Android播放器自定义,androi