Вы находитесь на странице: 1из 24

Приложение Twitter®

Searches
Аурсалиди Юлия
Лящук Екатерина
1МЖ
Приложение Twitter® Searches
позволяет сохранить избранные
поисковые запросы пользователя на
устройстве с короткими, легко
запоминающимися именами
(тегами).
Можно отслеживать сообщения по
заданной теме, приложение также
позволяет пересылать,
редактировать и удалять
сохраненные запросы.
Добавление нового запроса
В таблице представлены некоторые
примеры использования поисковых
операторов «Твиттера».
В нижнем компоненте EditText
введите тег запроса Deitel. Это
короткое имя будет отображаться в
списке сохраненных запросов.
Коснитесь кнопки , чтобы сохранить
запрос — тег «Deitel» появляется в
списке под заголовком Tagged
Searches. При сохранении запроса
виртуальная клавиатура исчезает,
чтобы список был виден на экране.
Просмотр результатов поиска
Чтобы просмотреть результаты поиска, коснитесь Deitel.
На устройстве запускается браузер, которому передается URL-адрес,
представляющий сохраненный поисковый запрос. «Твиттер» получает поисковый
запрос из URL и возвращает сообщения, соответствующие запросу, в виде веб-
страницы. Затем браузер выводит страницу результато.
Просмотрев результаты, коснитесь кнопки Back, чтобы вернуться к приложению
Twitter Searches, в котором вы можете сохранить новые запросы, а также
отредактировать, удалить и опубликовать ранее сохраненные запросы.
Для запроса "from:deitel" «Твиттер» выдает учетные записи пользователей, в имя
которых входит строка deitel, а также последние сообщения от этих пользователей.
Редактирование запроса
Запросы также можно пересылать, редактировать и удалять.
Чтобы увидеть эти команды, выполните длинное нажатие на теге запроса. При
длинном нажатии на теге Deitel открывается диалоговое окно AlertDialog с
командами Share, Edit и Delete для поискового запроса с тегом Deitel. Если вы не
хотите выполнить ни одну из этих операций, коснитесь кнопки CANCEL.
Ограничение поиска
Чтобы изменить запрос с тегом Deitel, коснитесь команды Edit в диалоговом
окне. Приложение загружает запрос и тег в компоненты EditText для
редактирования.
Чтобы ограничить поиск сообщениями, отправленными после 1 сентября 2015
года, добавьте пробел и фрагмент since:2015-09-01 в конец запроса в верхнем
компоненте EditText.
Оператор since: ограничивает результаты поиска сообщениями, отправленными
в заданный день или после него (в формате ГГГГ-ММ-ДД). Коснитесь кнопки ,
чтобы обновить сохраненный запрос, и просмотрите обновленные результаты,
коснувшись тега Deitel в разделе Tagged Searches приложения.
Пересылка запроса
Сделайте длинное нажатие на теге запроса и выберите команду Share в
открывшемся окне AlertDialog.
На экране появляется окно выбора, содержимое которого зависит от типа
передаваемой информации и приложений, способных эту информацию
обрабатывать. В приложении публикуется текстовая информация, а окно выбора
на нашем телефоне содержит список приложений, способных обрабатывать текст.
Если информация не может быть обработана ни одним приложением, в окне
выбора выводится соответствующее сообщение.
Если информация обрабатывается только одним приложением, это приложение
запускается без отображения промежуточного окна выбора.
Удаление запроса
Чтобы удалить запрос, выполните длинное нажатие на теге запроса и выберите в
открывшемся окне AlertDialog команду Delete.
Приложение предлагает подтвердить удаление запроса — кнопка CANCEL
возвращает приложение к главному экрану без удаления, а кнопка DELETE
удаляет запрос.
Хранение пар «ключ—значение» в
файле SharedPreferences
С приложением могут быть связаны один или несколько файлов, содержащих
пары «ключ—значение».
В этом приложении используется файл с именем searches, в котором хранятся
пары из тегов и поисковых запросов «Твиттера», созданных пользователем. Для
работы с парами «ключ—значение» в этом файле используются объекты
SharedPreferences.Editor.
Неявные интенты и выбор интентов
В этом приложении будут использоваться два неявных интента:
1. Запускает браузер устройства по умолчанию для вывода результатов поиска в
«Твиттере» на основании поискового запроса, встроенного в URL,
2. Разрешает пользователю выбрать приложение для передачи текста, чтобы
пользователь мог поделиться с другими результатами поиска.

В обоих случаях, если система не может найти активность для обработки


действия, метод startActivity инициирует исключение
ActivityNotFoundException.
RecyclerView
Для отображения списка поисковых запросов с поддержкой прокрутки
используется компонент RecyclerView - гибкое представление с широкими
возможностями настройки и управления выводом списка данных.
Он помогает отделить представление данных от механизма повторного
использования представлений RecyclerView, а также обладает более широкими
возможностями настройки для представления элементов RecyclerView.
Благодаря RecyclerView элементы будут отображаться в вертикальном списке, а
в каждом элементе списка поисковый запрос будет отображаться как строка в
текстовом представлении.
RecyclerView.Adapter
Субкласс RecyclerView.Adapter создается для связывания элементов списка
RecyclerView с данными в списке List.
У каждого элемента RecyclerView имеется соответствующий объект субкласса
RecyclerView.ViewHolder, который хранит ссылки на представления элемента.
Взаимодействие RecyclerView и RecyclerView.Adapter обеспечивает повторное
использование представлений элементов, выходящих за границы экрана.
View-Holder
Для повторного использования представлений, выходящих за границы экрана,
использовался паттерн View-Holder.
Компонент RecyclerView формализует паттерн View-Holder и делает его
обязательным.
Мы создали субкласс RecyclerView.Adapter для связывания элементов списка
RecyclerView с данными.
Также был создан субкласс RecyclerView.ViewHolder для хранения ссылок на
представления всех элементов списка, обеспечивающих возможность их
повторного использования. Чтобы между элементами RecyclerView выводились
разделительные линии, мы определили субкласс RecyclerView.ItemDecoration.
RecyclerView.ItemDecoration
Класс ListView автоматически выводит горизонтальные линии между
элементами, но RecyclerView никаких декоративных элементов по умолчанию
не предоставляет. Для рисования горизонтальных разделительных линий между
элементами мы определяем субкласс RecyclerView.ItemDecoration.
Отображение списка команд в
AlertDialog
В этом приложении пользователь может выполнить длинное нажатие на
элементе RecyclerView, чтобы вызвать окно AlertDialog. Окно содержит список
команд, из которых пользователь может выбрать только одну.
Метод setItems класса AlertDialog.Builder задает ресурс строкового массива с
именами отображаемых команд и назначает обработчик события, который
вызывается при касании команды пользователем.
Создание графического интерфейса
приложения и файлов ресурсов
Создание проекта:

• androidManifest.xml; • arrays.xml;

• библиотека RecyclerView; •dimens.xml;

• colors.xml; • activity_main.xml;

• strings.xml; •сontent_main.xml;
• list_item.xml;
СТРОКОВЫЕ РЕСУРСЫ ГРАФИЧЕСКИЙ ИНТЕРФЕЙС
Класс MainActivity
Приложение состоит из трех классов:
• Класс MainActivity;
• Класс SearchesAdapter;
• Класс ItemDivider.
•Класс MainActivity настраивает графический интерфейс и
определяет логику приложения.

• Класс SearchesAdapter определяет, как теги запросов должны


связываться с элементами RecyclerView. Метод onCreate класса
MainActivity создает объект класса SearchesAdapter и назначает
его адаптером RecyclerView.

• Класс ItemDivider используется для рисования горизонтальных


линий между элементами.
Другие методы класса MainActivity
• Метод onCreate
• Обработчик событий TextWatcher и метод updateSaveFAB
• Слушатель OnClickListener
• Метод addTaggedSearch
• Метод shareSearch
• Метод deleteSearch

Fabric
«Твиттер» предоставляет Fabric - мощную платформу мобильной разработки
для Android и iOS.
Fabric инкапсулирует подробности работы с веб-сервисами «Твиттера» в
библиотеках, которые встраиваются в проект и упрощают включение
функциональности «Твиттера» в приложения.
Также возможно включение механизма управления мобильной идентификацией
(Digits), средств монетизации за счет показа рекламы (MoPub) и отправки
отчетов о сбоях приложений (Crashlytics).
По итогам:
Мы использовали следующие технологии:
• SharedPreferences для хранения данных, связанных с приложением, в виде пар
«ключ—значение»;
• Неявный интент для открытия сайта в браузере;
• Неявный интент для вывода списка приложений, способных обмениваться
текстом;
• Вывод списка с поддержкой прокрутки и добавили компонент RecyclerView;
• Использовали субкласса RecyclerView. Adapter для определения данных
RecyclerView
•субкласс RecyclerView. Adapter для определения данных RecyclerView;
•субкласс RecyclerView. ViewHolder для реализации паттерна View-Holder;
•субкласс RecyclerView.ItemDecoration для вывода линий между строками
RecyclerView
•диалоговое окно AlertDialog с помощью объекта AlertDialog.Builder.
Демонстрация работы приложения

Оценить