Автор: Программист XiaoBing
Пожалуйста, нажмите здесь, чтобы следить за мной в Weibo
Долгосрочно поддерживающий проект Android, который включает реализацию часто используемых функций, а также подробное объяснение ключевых моментов, конечно же, вместе с информацией о Java.
Инструменты Android, открытый проект:
Подробности см. на GitHub: https://github.com/QQ986945193/DavidAndroidProjectTools
Конечно, все знают, что при разработке приложений, обычно не обойтись без того, чтобы использовать диалоговое окно "загрузка". Например, когда запрашиваешь данные сети, скорее всего, скорость интернета будет медленной,
и поэтому время загрузки может быть долгим. Если при этом уже открылся новый экран, то это выглядит не очень хорошо, поэтому обычно используется диалоговое окно "загрузка",
которое сообщает пользователю, что данные ещё загружаются, обеспечивая лучший опыт использования. Вот такой эффект я покажу вам как создать. Сначала посмотрим на пример:
Я использовал handler для создания задержки в две секунды перед тем, как диалог исчезнет. Конечно, в вашем проекте вы можете слушать нужные вам методы, чтобы сделать диалог невидимым.
Это просто два простых способа реализации, конечно, есть и более эффективные способы. Вы можете попробовать реализовать их самостоятельно или найти информацию в Интернете.Перейдем к сути вопроса. Я расскажу лишь основные идеи, а конкретный код вы сможете попробовать написать самостоятельно. В конце концов, я предоставлю ссылку для скачивания исходного кода.
Первый шаг — напишите свой собственный диалог. Код довольно детализирован. Это создание диалогового окна, например:
public static Dialog createLoadingDialog(Context context, String msg) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.dialog_loading, null); // Получаем представление диалога
LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_loading_view); // Получаем линейное представление
TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView); // Получаем текстовое поле для сообщений
tipTextView.setText(msg); // Устанавливаем сообщение загрузки
}
Далее создаем диалог с пользовательским стилем:
Dialog loadingDialog = new Dialog(context, R.style.MyDialogStyle); // Создаем диалог с пользовательским стилем
loadingDialog.setCancelable(true); // Можно ли закрыть диалог нажатием кнопки "Назад"
loadingDialog.setCanceledOnTouchOutside(false); // Закрывается ли диалог при клике вне области диалога
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT)); // Устанавливаем контент диалога
/**
* Обертка метода отображения диалога
*/
Window window = loadingDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setGravity(Gravity.CENTER);
window.setAttributes(lp);
window.setWindowAnimations(R.style.PopWindowAnimStyle);
loadingDialog.show();
Затем мы можем видеть, что возвращается объект диалога, который можно использовать в нашем классе.Конечно, если есть отображение, то должно быть и закрытие. Мы просто упаковываем метод закрытия в наш кастомный диалог.
/**
* Закрыть диалог
*
* @param mDialogUtils
*/
public static void closeDialog(Dialog mDialogUtils) {
if (mDialogUtils != null && mDialogUtils.isShowing()) {
mDialogUtils.dismiss();
}
}
Затем мы можем его использовать. Здесь мы просто хотели показать вам идею реализации, так как это затрагивает некоторые графические материалы.
Поэтому я предоставляю здесь исходный код этих двух способов реализации, чтобы вы могли использовать его в качестве примера. Оптимизируйте его и используйте в своём проекте.
Конечно, если мой проект помог вам, приветствуем ваше пожертвование, пригласите автора выпить чашку чая. Спасибо за поддержку.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )