Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Разработка мобильных приложений в среде Android Studio. Учебное пособие
.pdf
8.2. AlertDialog
111
1. Необходимо добавить «слушатель» события долгого нажатия для
элемента списка. Используем MyRecyclerViewAdapter, рассмотренный в
разд. 6. В конструкторе класса MyViewHolder был определен «слушатель»
коротких нажатий. Аналогичным образом определяется слушатель долгих
нажатий – onLongClickListener.
public MyViewHolder(View v) {
super(v);
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.i("Click", "on long item click");
return true;
}
});
}
2. Создание диалогового окна. Возможно создать его непосредственно при клике, сначала создать, например, в конструкторе ViewHolder, а при
клике только показывать. При создании вне «слушателя» нажатий, к нему
будет доступ по всему классу ViewHolder.
Предположим, что необходимо реализовать диалоговое окно только
при клике на элемент, которое не будет постоянно храниться в ViewHolder
[52]. В таком случае реализуют класс AlertDialogBuilder:
AlertDialog.Builder builder = new AlertDialog.Builder(context);
Контекст можно получить, передав его в конструктор MyRecyclerViewAdapter. Важное уточнение: класс MyViewHolder не должен быть стати-
ческим!
Далее объекту builder необходимо задать требуемые свойства диало-
гового окна. Ниже перечислены самые часто используемые методы:
1) setIcon – определяет иконку диалогового окна. На вход принимает
либо Drawable, либо идентификатор ресурса;
2) setMessage – устанавливает текст в диалоговом окне, на вход которого устанавливают строку или идентификатор ресурса;

8. Интерфейс мобильного прложения (взаимодействие с пользователем)
112
3) диалоговое окно может содержать до трех кнопок – отмены (setNegativeButton), подтверждения (setPositiveButton) и нейтральной кнопки
(setNeutralButton). Каждому методу следует указать название кнопки и
«слушатель» нажатий (DialogInterface.OnClickListener);
4) setCancelable() – возможность пользователю закрыть окно нажа-
тием вне окна (например, с использованием кнопки Back) принимает true
или false.
builder.setCancelable(true)
.setIcon(R.drawable.my_drawable)
.setMessage("Message")
.setTitle("Title")
.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("AlertDialog", "on negative button click");
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("AlertDialog", "on positive button click");
}
})
.setNeutralButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("AlertDialog", "on neutral button click");
}
});
Представленные выше методы используются для создания диалогового окна встроенными средствами. Если содержимое окна должно включать в себя не только текст, следует создавать отдельный макет и указывать
диалоговому окну использовать созданный макет методом setView(). Параметром данного метода может быть идентификатор ресурса или объект

8.2. AlertDialog
113
класса View. В первом случае получить доступ к элементам макета можно
следующим образом:
builder.setView(R.layout.alert_dialog_view);
AlertDialog alertDialog = builder.create();
TextView myTexView = alertDialog.getWindow().findViewById(R.id.myTextView);
во втором случае:
View view = ((MainActivity)context).getLayoutInflater().inflate(R.layout.alert_dialog_view, null);
TextView myTextView = view.findViewById(R.id.myTextView);
builder.setView(view);
Класс AlertDialog является окном диалога, создание которого осу-
ществляется из AlertDialog.Builder следующим образом:
AlertDialog alertDialog = builder.create();
а затем отобразить:
alertDialog.show();
Приведем пример разработки диалогового окна со следующим набо-
ром свойств.
builder.setCancelable(true)
.setIcon(R.drawable.my_drawable)
.setMessage("Message")
.setTitle("Title")
.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("AlertDialog", "on negative button click");
}
})

8. Интерфейс мобильного прложения (взаимодействие с пользователем)
114
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("AlertDialog", "on positive button click");
}
})
.setNeutralButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("AlertDialog", "on neutral button click");
}
})
.setView(R.layout.alert_dialog_view);
Макет alert_dialog_builder представляет собой xml-файл, приведенный ниже (содержит текстовое поле и кнопку):
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<Button
android:id="@+id/myButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>

8.2. AlertDialog
115
Изображение my_drawable представляет собой следующий файл:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#666666"/>
<size
android:width="120dp"
android:height="120dp"/>
</shape>
На данном этапе создание диалогового окна можно считать законченным. При долгом нажатии на элемент списка появится диалоговое окно,
представленное на рис. 30.
Рис. 30. Экран приложения с диалоговым окном

8. Интерфейс мобильного прложения (взаимодействие с пользователем)
116
Контрольные вопросы
1. Что такое NavigationDrawer?
2. Опишите основные этапы создания NavigationDrawer.
3. Добавление элементов в NavigationDrawer.
4. Обработка нажатия на элементы NavigationDrawer.
5. Для чего используется AlertDialog?
6. Этапы создания AlertDialog.
7. Свойства builder при создании AlertDialog.

117
ЗАКЛЮЧЕНИЕ
Учебное пособие содержит теоретический материал, практический материал с примерами выполнения и вопросы для самоконтроля. В качестве
теоретического и практического материала рассмотрены темы: работа в
среде разработки AndroidStudio, разработка интерфейса мобильного приложения, работа с ресурсами приложения, организация данных в виде
списка, сетевое взаимодействие, работа с JSON-файлами, реализация базы
данных в системе Android, особенности организации современного интерфейса мобильного приложения.
Учебное пособие может быть использовано для подготовки к лекциям,
лабораторным занятиям, а также к экзамену по дисциплине «Программирование для мобильных устройств» для студентов Института компьютерных технологий и информационной безопасности направлений подготовки
бакалавров 02.03.03 – Математическое обеспечение и администрирование
информационных систем, 09.03.04 – Программная инженерия.

118
СПИСОК ЛИТЕРАТУРЫ
1. Айкожаев, Н. М. Анализ среды разработки мобильных приложений
android studio [Электронный ресурс] / Н.М. Айкожаев, Н.А. Есеналиева
// Научное сообщество студентов XXI столетия. Технические науки:
сб. ст. по мат. междунар. студ. науч.-практ. конф. № 2(49). –
URL: https://sibac.info/archive/technic/2(49).pdf (дата обращения:
13.11.2019)
2. Install Android Studio [Электронный ресурс]. – Режим доступа:
https://developer.android.com/studio/install (дата обращения: 11.02.2019).
3. Meet Android Studio [Электронный ресурс]. – Режим доступа:
https://developer.android.com/studio/intro/ (дата обращения: 11.02.2019).
4. Create a project [Электронный ресурс]. – Режим доступа:
https://developer.android.com/studio/projects/create-project (дата обращения: 11.02.2019).
5. Манифест приложения [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ru
(дата обращения: 03.03.2019).
6. Build a UI with Layout Editor [Электронный ресурс]. – Режим досту-
па: https://developer.android.com/studio/write/layout-editor (дата обращения: 15.02.2019).
7. Create a Java class or type [Электронный ресурс]. – Режим доступа:
https://developer.android.com/studio/write/create-java-class (дата обращения: 15.02.2019).
8. Макеты [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/ui/declaring-layout?hl=ru (дата
обращения: 15.02.2019).
9. Linear Layout [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/ui/layout/linear (дата обраще-
ния: 15.02.2019).
10. Table [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/ui/layout/grid (дата обращения:
15.02.2019).
11. FrameLayout [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/android/widget/FrameLayout (дата
обращения: 15.02.2019).

Список литературы
119
12. Build a Responsive UI with ConstraintLayout [Электронный ресурс]. –
Режим доступа: https://developer.android.com/training/constraint-layout/
(дата обращения: 15.02.2019).
13. TextView [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/android/widget/TextView (дата
обращения: 15.02.2019).
14. EditText [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/android/widget/EditText (дата обращения: 15.02.2019).
15. ImageView [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/android/widget/ImageView (дата
обращения: 15.02.2019).
16. Buttons [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/ui/controls/button (дата обращения: 15.02.2019).
17. Объекты Intent и фильтры объектов Intent [Электронный ресурс]. –
Режим доступа: https://developer.android.com/guide/components/intentsfilters?hl=ru (дата обращения: 15.02.2019).
18. Create a fragment [Электронный ресурс]. – Режим доступа:
https://developer.android.com/training/basics/fragments/creating#AddInLay
out (дата обращения: 20.02.2019).
19. Add a Fragment to an Activity using XML [Электронный ресурс]. – Режим доступа: https://developer.android.com/training/basics/fragments/crea
ting#AddInLayout (дата обращения: 20.02.2019).
20. Property Animation Overview [Электронный ресурс]. – Режим доступа: https://developer.android.com/guide/topics/graphics/propanimation?hl=ru (дата обращения: 24.02.2019).
21. View Animation [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/graphics/viewanimation?hl=ru#tween-animation (дата обращения: 24.02.2019).
22. Color state list resource [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/resources/color-listresource?hl=ru (дата обращения: 24.02.2019).
23. Drawable resources [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/resources/drawableresource?hl=ru (дата обращения: 24.02.2019).

Список литературы
120
24. Meet Android Studio [Электронный ресурс]. – Режим доступа:
https://developer.android.com/studio/intro?hl=ru#mipmap (дата обращения: 24.02.2019).
25. Layout resource [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/resources/layout-resource?hl=ru
(дата обращения: 24.02.2019).
26. Menu resource [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/resources/menu-resource?hl=ru
(дата обращения: 24.02.2019).
27. Ресурсы. Работа с ресурсами [Электронный ресурс]. – Режим доступа:
https://metanit.com/java/android/2.4.php (дата обращения: 24.02.2019).
28. Предоставление ресурсов [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/topics/resources/providingresources?hl=ru (дата обращения: 24.02.2019).
29. Процессы и потоки [Электронный ресурс]. – Режим доступа:
https://developer.android.com/guide/components/processes-and-threads
(дата обращения: 12.11.2019).
30. AsyncTask [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/android/os/AsyncTask (дата об-
ращения: 08.03.2019).
31. Работа с сетью в Android: трафик, безопасность и батарейка [Электронный ресурс]. –
Режим доступа: https://habr.com/ru/company/mailru/blog/185696/ (дата
обращения: 12.11.2019).
32. URL [Электронный ресурс]. –
Режим доступа: https://developer.android.com/reference/java/net/URL
(дата обращения: 08.03.2019).
33. HttpURLConnection [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/java/net/HttpURLConnection (дата
обращения: 08.03.2019).
34. InputStreamReader [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/java/io/InputStreamReader (дата
обращения: 08.03.2019).
35. BufferedReader [Электронный ресурс]. – Режим доступа:
https://developer.android.com/reference/java/io/BufferedReader (дата обращения: 08.03.2019).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
