Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка мобильных приложений в среде Android Studio. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
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);
Контекст можно получить, передав его в конструктор MyRecyclerView­Adapter. Важное уточнение: класс MyViewHolder не должен быть стати-
ческим!
Далее объекту builder необходимо задать требуемые свойства диало-
гового окна. Ниже перечислены самые часто используемые методы:
1) setIcon – определяет иконку диалогового окна. На вход принимает либо Drawable, либо идентификатор ресурса;
2) setMessage – устанавливает текст в диалоговом окне, на вход ко­торого устанавливают строку или идентификатор ресурса;
8. Интерфейс мобильного прложения (взаимодействие с пользователем)
112
3) диалоговое окно может содержать до трех кнопок – отмены (set­NegativeButton), подтверждения (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 = alertDia­log.getWindow().findViewById(R.id.myTextView);
во втором случае:
View view = ((MainActivi­ty)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/intents­filters?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/prop­animation?hl=ru (дата обращения: 24.02.2019).
21. View Animation [Электронный ресурс]. – Режим доступа: https://developer.android.com/guide/topics/graphics/view­animation?hl=ru#tween-animation (дата обращения: 24.02.2019).
22. Color state list resource [Электронный ресурс]. – Режим доступа: https://developer.android.com/guide/topics/resources/color-list­resource?hl=ru (дата обращения: 24.02.2019).
23. Drawable resources [Электронный ресурс]. – Режим доступа: https://developer.android.com/guide/topics/resources/drawable­resource?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/providing­resources?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).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]