compile 'cn.yc:YCDialogLib:3.6.5'
1.2.0 Запрос разрешения на уведомление
// Обратите внимание, что рекомендуется добавить этот запрос
DialogUtils.requestMsgPermission(this);
1.2.1 Диалог в стиле IOS, пользовательское диалоговое окно
private void showCustomDialog() {
final List<String> names = new ArrayList<>();
names.add("拍照");
names.add("相册");
names.add("其他");
showDialog(new CustomSelectDialog.SelectDialogListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
}, names);
}
private CustomSelectDialog showDialog(CustomSelectDialog.SelectDialogListener listener,
List<String> names) {
CustomSelectDialog dialog = new CustomSelectDialog(this,
R.style.transparentFrameWindowStyle, listener, names);
dialog.setItemColor(R.color.colorAccent,R.color.colorPrimary);
// Проверка активности не завершается
if (!this.isFinishing()) {
dialog.show();
}
return dialog;
}
1.2.2 Тост
// Можно свободно установить цвет фона тоста, по умолчанию он полностью чёрный
ToastUtils.setToastBackColor(this.getResources().getColor(R.color.color_7f000000));
// Просто установите самый простой тост, только содержимое тоста
ToastUtils.showRoundRectToast("Пользовательский тост");
// Установить заголовок и содержимое тоста
ToastUtils.showRoundRectToast("Тост", "Сянган Цзянь Юй Ян Чун - шутник");
// Третий вид напрямую устанавливает пользовательский макет тоста
ToastUtils.showRoundRectToast(R.layout.view_layout_toast_delete);
// Или используйте режим bulider для непосредственного создания
ToastUtils.Builder builder = new ToastUtils.Builder(this.getApplication());
builder
.setDuration(Toast.LENGTH_SHORT)
.setFill(false)
.setGravity(Gravity.CENTER)
.setOffset(0)
.setDesc("Содержание")
.setTitle("Заголовок")
.setTextColor(Color.WHITE)
.setBackgroundColor(this.getResources().getColor(R.color.blackText))
.build()
.show();
1.2.3 Простой PopupWindow
// Первый шаг, пользовательский pop, наследуйте класс BasePopDialog и повторно реализуйте два абстрактных метода
public class CustomPop extends BasePopDialog {
public CustomPop(Context context) {
super(context);
}
@Override
public int getViewResId() {
return R.layout.view_pop_custom;
}
@Override
public void initData(View contentView) {
TextView tv_pop = (TextView) contentView.findViewById(R.id.tv_pop);
tv_pop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtils.showRoundRectToast("Убирайся отсюда!");
}
});
}
}
// Второй шаг, создайте pop и покажите его
CustomPop customPop = new CustomPop(this);
customPop.setDelayedMsDismiss(2500);
customPop.setBgAlpha(0.5f);
customPop.showAsDropDown(tv6, 0, -tv6.getMeasuredHeight() - tv6.getHeight());
1.2.4 PopupWindow в режиме Builder
View contentView = LayoutInflater.from(this).inflate(R.layout.pop_layout,null);
// Создание и отображение popWindow
popWindow = new CustomPopupWindow.PopupWindowBuilder(this)
//.setView(R.layout.pop_layout)
.setView(contentView)
.setFocusable(true) ```
// При появлении popWindow фон становится темнее?
.enableBackgroundDark(true)
// Управление яркостью
.setBgDarkAlpha(0.7f)
.setOutsideTouchable(true)
.setAnimationStyle(R.style.popWindowStyle)
.setOnDissmissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
// Когда диалог закрывается
}
})
.create()
.showAsDropDown(tv6, 0, 10);
1.2.5 Пользовательский нижний диалог Dialog, режим Builder (с использованием меню)
new CustomBottomDialog(MainActivity.this)
.title("Это заголовок")
.setCancel(true, "Отменить выбор")
.orientation(CustomBottomDialog.VERTICAL)
.inflateMenu(R.menu.menu_share, new OnItemClickListener() {
@Override
public void click(CustomItem item) {
}
})
.show();
1.2.6 Пользовательский диалог DialogFragment с заполнением обычного макета
final BottomDialogFragment dialog = new BottomDialogFragment();
dialog.setFragmentManager(getSupportFragmentManager());
dialog.setViewListener(new BottomDialogFragment.ViewListener() {
@Override
public void bindView(View v) {
TextView tv_cancel = (TextView) v.findViewById(R.id.tv_cancel);
tv_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismissDialogFragment();
}
});
}
});
dialog.setLayoutRes(R.layout.dialog_bottom_layout);
dialog.setDimAmount(0.5f);
dialog.setTag("BottomDialog");
dialog.setCancelOutside(true);
// Эту высоту можно настроить самостоятельно, очень гибко
dialog.setHeight(getScreenHeight() / 2);
dialog.show();
1.2.7 Пользовательский диалог DialogFragment с заполнением макета списка
final List<DialogBean> list = new ArrayList<>();
for (int a = 0; a < 20; a++) {
DialogBean dialogBean = new DialogBean("ooo", "杨充", "title");
list.add(dialogBean);
}
BottomDialogFragment.create(getSupportFragmentManager())
.setViewListener(new BottomDialogFragment.ViewListener() {
@Override
public void bindView(View v) {
RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.recyclerView);
ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
ImageView ivDownload = (ImageView) v.findViewById(R.id.iv_download);
recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
DialogListAdapter mAdapter = new DialogListAdapter(MainActivity.this, list);
recyclerView.setAdapter(mAdapter);
final RecycleViewItemLine line = new RecycleViewItemLine(
MainActivity.this, LinearLayout.HORIZONTAL, 2,
MainActivity.this.getResources().getColor(R.color.grayLine));
recyclerView.addItemDecoration(line);
mAdapter.setOnItemClickListener(new DialogListAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
}
});
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_cancel:
break;
case R.id.iv_download:
ToastUtils.showToast("Скачать");
break;
default:
break;
}
}
};
ivCancel.setOnClickListener(listener);
ivDownload.setOnClickListener(listener);
}
})
.setLayoutRes(R.layout.dialog_bottom_layout_list)
.setDimAmount(0.5f)
``` **1.2.8. Создание пользовательских диалоговых окон в режиме Builder**
Очень часто используются диалоговые окна, так как встроенные диалоговые окна не всегда выглядят достаточно привлекательно. Поэтому возникает необходимость создания собственных диалоговых окон. Можно настроить заголовок, содержимое и кнопки «Отмена», «ОК» и другие, а также их содержание и цвет.
Обратите внимание: если какое-либо свойство установлено пустым или не задано, то соответствующий макет будет скрыт. Это также зависит от конкретных бизнес-сценариев компании и постепенно развивается. Конкретный эффект можно увидеть непосредственно в демонстрационном проекте.
*Пример кода:*
CustomDialogFragment .create(getSupportFragmentManager()) .setTitle("Это заголовок") .setContent("Это содержимое диалогового окна") .setOtherContent("Другое") .setDimAmount(0.2f) .setTag("dialog") .setCancelOutside(true) .setCancelListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomDialogFragment.dismissDialogFragment(); ToastUtils.showRoundRectToast("Отменено"); } }) .setOkListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomDialogFragment.dismissDialogFragment(); ToastUtils.showRoundRectToast("Определено"); } }) .setOtherListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomDialogFragment.dismissDialogFragment(); ToastUtils.showRoundRectToast("Другой контент"); } }) .show();
**1.2.9. Создание окна загрузки с помощью одной строки кода**
Для запуска загрузки достаточно одной строки кода. Я считаю, что для удовлетворения конкретных потребностей бизнеса не требуется слишком сложный код. Это тоже весело:
*Пример кода:*
// Начало загрузки ViewLoading.show(this); ViewLoading.show(this,"Загрузка..."); // Завершение загрузки ViewLoading.dismiss(this);
**1.3.0. Создание SnackBar**
Можно вызвать одну строку кода или использовать цепное программирование. Поддерживает настройку свойств длительности отображения, цвета фона, размера шрифта, цвета текста, содержимого действия, размера и цвета текста действия, события нажатия, значка. Больше информации можно получить, запустив демонстрационный проект!
*Примеры кода:*
1. Только настройка текста:
SnackBarUtils.showSnackBar(это, «Уходите»);
2. Настройка текста, действия и события клика:
SnackBarUtils.showSnackBar (это, "Уходите", "ДЕЙСТВИЕ", новый View.OnClickListener () {
@Override
public void onClick (View v) {
ToastUtils.showRoundRectToast («Уходите?»);
}
});
3. Настройка текста, действия, события клика и значка:
SnackBarUtils.showSnackBar (это, «Уходите», «ДЕЙСТВИЕ», R.drawable.icon_cancel, новый View.OnClickListener () {
@Override
public void onClick (View v) {
ToastUtils.showRoundRectToast ("Уходите?");
}
});
4. Цепное программирование:
SnackBarUtils.builder()
.setBackgroundColor (this.getResources().getColor(R.color.color_7f000000))
.setTextSize (14)
.setTextColor (this.getResources().getColor(R.color.white))
.setTextTypefaceStyle (Typeface.BOLD)
.setText («Уходите»)
.setMaxLines (4)
.centerText()
.setActionText («Получено»)
.setActionTextColor (this.getResources().getColor(R.color.color_f25057))
.setActionTextSize (16)
.setActionTextTypefaceStyle (Typeface.BOLD)
.setActionClickListener (новый View.OnClickListener () {
@Override
public void onClick (View v) {
ToastUtils.showRoundRectToast («Уходите?»);
}
})
.setIcon (R.drawable.icon_cancel)
.setActivity (MainActivity.this)
.setDuration (SnackBarUtils.DurationType.LENGTH_INDEFINITE)
.build()
.show ();
#### 2. Пользовательские скриншоты диалогов
На следующих скриншотах показаны примеры пользовательских диалогов:
| Скриншот |
| --- |
|  |
|  |
|  |
|  |
|  |
|  |
|  |
|  |
|  |
|  |
|  |
|  |
#### 3. Информация о версиях обновлений
v1.0 — обновление 2016-06-02;
v1.4 — обновление 2017-08-09;
v3.3 — обновление 2018-01-12;
v3.4 — обновление 2018-01-18;
v3.5 — обновление 2018-01-31;
v3.5.1 — обновление 2018-06-02;
v3.5.3 — обновление 2018-09-10;
v3.6.5 — обновление 2018-09-15.
#### 4. Серия блогов о диалоговых окнах
В этом разделе содержится информация о серии блогов, посвящённых диалоговым окнам.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )