Java android всплывающее окно

Диалоговые окна в Android. Часть 1

Добрый день/вечер/утро, уважаемые хабравчане и Вы, %username%!
Я занимаюсь разработкой приложений для Android, обожаю эту операционную систему и хочу поделиться своим опытом использования в своих проектах диалоговых окон. В первую очередь эта статья записка очень пригодится начинающим в области разработки для Android.
Также для новичков в этой отрасли рекомендую сперва прочитать вот этот пост уважаемого Hoorsh.
А теперь приступим к рассмотрению данного вопроса (у которого есть несколько подводных камней) под катом.

Dialog
  • AlertDialog: это диалоговое окно для различных сообщений приложения, например «Вы хотите купить мое приложение?» или что то в этом роде. AlertDialog поддерживает три кнопки — утвердительную (OK), отрицательную (Cancel) и нейтральную (Later).
  • ProgressDialog: это диалоговое окно для отображения выполнения различных процессов, загрузки, например.
  • DatePickerDialog: диалоговое окно предлагает пользователю выбрать дату.
  • TimePickerDialog: диалоговое окно предлагает пользователю выбрать время
AlertDialog
  • setTitle(int resID) — задает заголовок диалогового окна, принимает в качестве аргументов ссылку на ресурс или строку.
  • setMessage(int resID) — задает сообщение в диалоговом окне, также принимает ссылку на ресурс или строку.
  • setPositiveButton(int textID, DialogInterface.OnClickListener listener) — устанавливает на Вашем диалоговом окне утвердительную кнопку с текстом ресурса textID и слушателем listener. Методы setNegativeButton и setNeutralButton идентичны, с разницей в назначении кнопок.
AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.dialog_about_title); builder.setMessage(R.string.dialog_about_message); builder.setCancelable(true); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() < // Кнопка ОК @Override public void onClick(DialogInterface dialog, int which) < dialog.dismiss(); // Отпускает диалоговое окно >>); AlertDialog dialog = builder.create(); 
  • showDialog(AlertDialog dialog) — самый простой способ показать диалоговое окно, но начиная с версии 3.0 разработчики Android не рекомендуют пользоваться этим методом, и в результате вы получите предупреждение, которое можно обойти только @SurpressWarning, что есть не совсем хорошо.
  • AlertDialog dialog.show() — альтернативный способ показать окно, для этого в экземпляре dialog должен лежать результат метода Builder.create().
public class DialogScreen < public static final int IDD_ABOUT = 1; // Идентификаторы диалоговых окон public static final int IDD_SETTINGS = 2; public static final int IDD_RATE = 3; public static AlertDialog getDialog(Activity activity, int ID) < AlertDialog.Builder builder = new AlertDialog.Builder(activity); switch(ID) < case IDD_ABOUT: // Диалоговое окно About builder.setTitle(R.string.dialog_about_title); builder.setMessage(R.string.dialog_about_message); builder.setCancelable(true); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() < // Кнопка ОК @Override public void onClick(DialogInterface dialog, int which) < dialog.dismiss(); // Отпускает диалоговое окно >>); return builder.create(); case IDD_RATE: // Диалоговое окно Rate the app builder.setTitle(R.string.dialog_rate_title); builder.setMessage(R.string.dialog_rate_message); builder.setCancelable(true); builder.setPositiveButton(R.string.dialog_rate_ok, new DialogInterface.OnClickListener() < // Переход на оценку приложения @Override public void onClick(DialogInterface dialog, int which) < // Переход dialog.dismiss(); >>); builder.setNeutralButton(R.string.dialog_rate_cancel, new DialogInterface.OnClickListener() < // Оценить приложение потом @Override public void onClick(DialogInterface dialog, int which) < dialog.dismiss(); // Отпускает диалоговое окно >>); builder.setNegativeButton(R.string.dialog_rate_buy, new DialogInterface.OnClickListener() < // Переход на покупку AdFree версии @Override public void onClick(DialogInterface dialog, int which) < // Переход dialog.dismiss(); >>); return builder.create(); case IDD_SETTINGS: // Диалог настроек View view = activity.getLayoutInflater().inflate(R.layout.settings, null); // Получаем layout по его ID builder.setView(view); builder.setTitle(R.string.dialog_settings_title); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() < // Кнопка ОК public void onClick(DialogInterface dialog, int whichButton) < MainActivity.doSaveSettings(); // Переход в сохранение настроек MainActivity dialog.dismiss(); >>); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() < // Кнопка Отмена public void onClick(DialogInterface dialog, int which) < dialog.dismiss(); >>); builder.setCancelable(true); return builder.create(); default: return null; > > >

Единственная заметка по поводу этого кода будет про использования метода setView(View view) в диалоге IDD_SETTINGS. У AlertDialog как и у всех остальных диалоговых окон есть одна приятная особенность — им можно задавать собственные Layout, что позволяет полностью видоизменять диалоговые окна и их содержимое. Здесь есть один подводный камень: обработку элементов этого Layout вы должны будете производить именно в той Activity, где вызываете это диалоговое окно. Например я показываю диалоговое окно IDD_SETTINGS в MainActivity с Layout по имени settings:

 AlertDialog dialog = DialogScreen.getDialog(this, DialogScreen.IDD_SETTINGS); dialog.show(); initSettings(dialog); >
 // Определяем SeekBar и привязываем к нему дельты настроек SeekBar sb_sense = (SeekBar)dialog.findViewById(R.id.seekSense); SeekBar sb_vol = (SeekBar)dialog.findViewById(R.id.seekVol); // Задаем этим SeekBar текущие значения настроек sb_sense.setProgress(sense); sb_vol.setProgress(volume);

Ну а дальше обрабатываете свои объекты как вам угодно.

Читайте также:  Php facebook like it
Небольшой итог

1) Для большинства целей диалоговых окон подходит AlertDialog
2) AlertDialog может принимать вид layout с любыми объектами
3) Гораздо лучше использовать для диалоговых окон отдельный класс и пользоваться AlertDialog.show()
4) Обработка объектов кастомного layout производится в активности, вызвавшей диалог

В следующей части этой статьи пойдет речь о DialogFragment, который был включен в Android SDK начиная с 3.0 Honeycomb. Надеюсь эта статья поможет новичкам и не очень в своих квестах по завоеванию Google Play.

Источник

Java android всплывающее окно

Для создания простых уведомлений в Android используется класс Toast . Фактически Toast представляет всплывающее окно с некоторым текстом, которое отображается в течение некоторого времени.

Объект Toast нельзя создать в коде разметки xml, например, в файл activity_main.xml . Toast можно использовать только в коде java.

Так, определим в файле разметки activity_main.xml кнопку:

У кнопки установлен обработчик нажатия — метод onClick. Определим его в коде MainActivity:

package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); >public void onClick(View view) < Toast toast = Toast.makeText(this, "Hello Android!",Toast.LENGTH_LONG); toast.show(); >>

В обработчике отображается всплывающее окно. Для его создания применяется метод Toast.makeText() , в который передается три параметра: текущий контекст (текущий объект activity), отображаемый текст и время отобажения окна.

В качестве времени показа окна мы можем использовать целочисленное значение — колическо миллисекунд или встроенные константы Toast.LENGTH_LONG (3500 миллисекунд) и Toast.LENGTH_SHORT (2000 миллисекунд).

Для самого отображения окна вызывается метод show() :

Toast в Android и Java

По умолчанию окно отображается внизу интерфейса с центрированием по центру. Но мы можем кастомизировать позиционирование окна с помощью методов setGravity() и setMargin() . Так, изменим метод onClick:

public void onClick(View view) < Toast toast = Toast.makeText(this, "Hello Android!", Toast.LENGTH_LONG); toast.setGravity(Gravity.TOP, 0,160); // import android.view.Gravity; toast.show(); >

Первый параметр метода setGravity указывает, в какой части контейнера надо позиционировать Toast, второй и третий параметр устанавливают отступы от этой позиции по горизонтали и вертикали сооветственно:

Читайте также:  Font awesome cdn html

Позиционирование toast в Android и Java

Метод setMargin() принимает два параметра: отступ от левой границы контейнера в процентах от шиирины контейнера и отступ от верхней границы в процентах от длины контейнера.

Источник

Пример AlertDialog (Диалоговое окно) в Android

AlertDialog

Компонент AlertDialog (диалоговое окно) — один из важных элементов пользовательского интерфейса в любом приложении на Андроид. AlertDialog чаще всего используется в тех случаях, когда нам спросить пользователя о чем-то (разрешение/подтверждение выполнения какой-то операции). В этом уроке мы рассмотрим создание диалогового окна с помощью различных компоновок.

Теория по AlertDialog в Android

AlertDialog является базовым компонентом для построения Android приложений, поэтому мы должны хорошо понимать как он работает и уметь создавать различные компоновки диалоговых окон.

Для того, чтобы создать AlertDialog в Android, нам необходимо создать объект AlertDialogBuilder , который является вложенным классом AlertDialog . Рассмотрим пример:

Компоновка Android AlertDialog

Компоновка диалогового окна позволяет работать с несколькими составляющими:

Название — необязательный элемент диалогового окна

Контент — текст, который будет показан пользователю. Это может быть сообщение, список или же свой полностью кастомный макет.

Кнопки. Они бывают трех типов: для подтверждения (ОК), отмены и дополнительная (настраиваемая) кнопка. Любое диалоговое окно может содержать максимум три кнопки действий.

Методы для работы с диалоговыми окнами

  • Метод setIcon(Drawable icon) устанавливает иконку (значок) в диалоговое окно
  • Метод setCancelable(boolean cancelable) устанавливает возможность отмены действия в AlertDialog .
  • Метод setMessage(CharSequence message) устанавливает сообщение, которое будет отображаться в диалоговом окне.
  • setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) задает список элементов, которые будут отображаться в диалоговом окне. Выбранный пользователем элемент списка будет отслеживаться слушателем
  • После нажатия на кнопку «Отмена» диалогового окна, сработает метод setOnCancelListener (DialogInterface.OnCancelListener onCancelListener) .
  • Метод setTitle(CharSequence title) устанавливает заголовок в AlertDialog .
  • Метод getListView() получает тип списка, используемый в диалоговом окне.
Читайте также:  Python beautifulsoup xml parsing

Пример использования AlertDialog в Android

Давайте рассмотрим пример работы с AlertDialog . Начнем с макета, в котором расположим 3 кнопки. Каждая кнопка будет вызывать диалоговое окно с различной компоновкой: с 1 кнопкой — ОК, с двумя кнопками — Отмена и ОК, а также окно с тремя вариантами: ОК, Отмена и так называемая нейтральная кнопка.

Начнем с макета activity_main.xml нашего приложения:

Источник

Оцените статью