android自定义dialog开源库,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;
}
}
總結
以上是生活随笔為你收集整理的android自定义dialog开源库,android-dialog: 此框架提供五种对话框的显示,并支持对话框的扩展,目的是为了提供对话框的统一管理,并提供对话框显示的公共接口。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: picf509c语言程序,樊媛媛c语言程
- 下一篇: Android播放器自定义,androi