Приложение "Развитие речи"
Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 04.02.2016 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Изменился подход к предустановленным приложениям операторов. Все не нужные предустановленные приложения, которые пользователю не нужно, могут быть с легкостью удалены.
Основные проблемы новой версии ОС.
Проблема с подключение к Wi-Fi
Ошибка Missing system.img
Проблемы с батареей
Проблемы с воспроизведением видео
Проблемы с OTA обновлениями
Проблемы со вспышкой
Отсутствие беззвучного режима, Powerменю и прокрутки текста уведомлений
Проблемы с установкой OTAна модифицированных девайсах
Проблемы с переключением между приложениями
Проблема с вкладками Chrome
1.5Обоснование выбора языка и среды программирования
В качестве среды для разработки приложения была выбрана программа Android Studio. Она основана на программном обеспечении IntelliJIDEA от компании JetBrains. Существует множество сред разработки, но данная была выбрана в ввиду ее удобного графического интерфейса и средств отладки. Также основными особенностями Android Studio является возможность вёрстки в реальном времени, доступно множество вариантов размеров и разрешений экранов. Присутствует раздел справки, что намного облегчает работу в среде разработки. Встроены инструменты улучшения качества приложений и монетизации. Имеются инструменты для отслеживания эффективности рекламных объявлений. Добавлено средство взаимодействия с бета-тестерами и много другое. Вдобавок ко всему, новая среда разработки обладает функцией GoogleCloudMessaging, которая позволяет посылать данные с сервера на Android-устройства через облако. Это отличный способ посылать push-уведомления в приложения. Еще одна полезная вещь в Android Studio - инструмент анализа производительности, который называется MemoryMonitor. Он выдает всю информацию об использовании памяти, что дает возможность оптимизировать работу приложения.Android Studio - новая и полностью интегрированная среда разработки приложений, выпущенная компанией Google. Данный продукт призван снабдить разработчиков новыми инструментами для создания приложений, а также предоставить альтернативу устаревшей среде разработки Eclipse. Среда разработки поддерживает систему «Codeinjection», данная система позволяет редактировать фрагменты кода с привязкой к различным языкам. На сайте разработчиков Google отмечает, что планирует регулярно обновлять версию среды разработки. На рисунке1 представлен базовый вид среды разработки.
Главные возможности среды разработки, которые были отмечены в ходе выполнения дипломной работы:
Включены все «интеллектуальные» возможности по редактированию кода - автодополнение, рефакторинг и анализ кода
Есть возможность визуального просмотра будущего приложения
Сборка проекта работает быстрее, чем в альтернативных средах разработки;
Удобный конструктор интерфейсов
Встроенный SDK Manager
Удобное и интуитивно понятное логирование проекта
Указанные цвета и рисунки, использованные в layout'e отображаются на границе в виде небольших превью, которые легко помогают понять какой конкретно ресурс используется
Среда разработки является технологиями компании Google
При выборе ресурса, его содержимое отображается во всплывающих JavaDoc
Возможность создания одним кликом layout, сразу привязанным к activity
Управление локализацией и переводами
Предпросмотр приложений на разных разрешениях, языках, и версиях API во встроенном эмуляторе
Мониторинг используемой памяти
Доступ к возможностям GoogleCloudServices
Система сборки позволяет собирать приложение как внутри Android Studio, так и за его пределами, и собирать разные версии - платную или бесплатную, пользовательскую или отладочную и т.д.
Выделенные минусы среды разработки Android Studio:
Долгая компиляция проекта
Подвисание программы
Неудобства в управлении при переходе с альтернативной среды разработки Eclipse.
2. Построение проекта в среде разработки Android Studio
Приложение, созданное в данной дипломной работе, является обучающим и служит для развития речи. Основой для «Развития речи» служат скороговорки. Скороговорка -- короткая, синтаксически правильная фраза на любом языке с искусственно усложнённой артикуляцией. Скороговорки содержат близкие по звучанию, но различные фонемы и сложные для произношения сочетания фонем. Зачастую содержат аллитерации и рифмы. Используются для тренировки дикции и произношения.
Процесс разработки приложения выполнялся с использованием системы контроля версий, что позволило разрабатывать приложение не «кусками», а использовать модульный подход. Суть модульного подхода заключается в параллельной разработке частей приложения независимо друг от друга, при этом при разработке одного из модулей, изменения других модулей не учитываются до момента их окончания. То есть, по окончании одного модуля, все остальные «ветви» разработки модулей могут получить обновление, и дополниться готовыми модулями. Данный подход позволяет существенно облегчить задачу параллельной разработки модулей приложения, несмотря на свою сложность в организации и понимании происходящих процессов.
2.1 Описание компонентов разработанного приложения
Начальный экран приложения
Данный экран отображается после запуска приложения и отображает слова приветствия и рекламный баннер. Также отображается меню навигации с возможностью провести пальцем от левого края для раскрытия, расширенного меню, либо достаточно нажать на три белых полоски, которые находятся около надписи «Главная страница».Внешний вид окна представлен на рисунке 2.
Рисунок 2 - Внешний вид начального экрана.
Экран панели приложения
Данный экран отображается после того, как произошло нажатие кнопки навигации на «Главной странице» приложения.
Весь обучающий материал находится именно в панели приложения. Приложение представляет собой материал для развития речи, который состоит из скороговорок. Имеются скороговорки разных уровней, такие как - «Легкие» и «Сложные», что предоставляет пользователю выбор с учетом его возможностей. Также есть возможность читать скороговорки на иностранных языках, например, на английском, на немецком, на французском, на итальянском и т.д. Кроме обучающего материала в панели приложения можно найти еще три кнопки, которые выполняют функции выхода из приложения, общая оценка от пользователя в GooglePlay, и информация о приложение при нажатии на кнопку «О программе». Внешний вид панели приложения представлен на рисунке 3. В структуре приложения была использована панель - NavigationDrawer.
Рисунок 3 - Внешний вид панели приложения.
Экран обучения
После перехода с панели приложения по одной из кнопок с раздела «Скороговорки», например, по кнопке «Легкие» будет отображаться экран показанный на рисунке 4. На экране отображается обучающий материал, скороговорки по уровням или по языкам, которые перелистываются с одного окна на другой. Для этого необходимо провести пальцем от правого края к левому, чтобы перейти на следующее окно, либо от левого к правому, чтобы перейти к предыдущему окну. Переход с одного окна на другой показан на рисунке 5. В структуре приложения был использован менеджер ViewPager.
Рисунок 4 - Внешний вид обучающего экрана.
Рисунок 5 - Переход с одного окна на другой.
Экран рекомендаций
Данный экран отображается после того, как произошло нажатие по кнопке «Рекомендации», что находится в разделе «Помощь». Внешний вид экрана рекомендаций показан на рисунке 6. На экране отображается ряд рекомендаций, который поможет пользователю в самообучении. Также отображается рекламный баннер в самом низу. Для того, чтобы была возможность вертикально прокручивать текст, в структуре приложения был использован виджет ScrollView.
Рисунок 6 - Внешний вид экрана рекомендаций.
Функциональные кнопки
Кнопка «О программе»
При нажатии на кнопку «О программе», появляется всплывающее окно на котором отображается сообщение об версии приложение, об сборке и об авторе приложения. Данное всплывающее окно невозможно закрыть самостоятельно. Оно закрывается автоматически, после определенного интервала времени. После 2,5 секунд, либо после 3,5 секунд. Внешний вид виджета Toasts, показан на рисунке 7.
Рисунок 7 - Внешний вид виджетаToasts.
Кнопка «Оцените приложение»
При нажатии на кнопку «Оцените приложение», происходит переход в Google Play, в котором пользователь может оставить свой отзыв и поставить соответствующую оценку для приложения, также пользователь может удалить приложение, посмотреть, что нового в обновлениях приложения. Переход в Google Play, показан на рисунке 8.
Рисунок 8 - Переход в Google Play.
Кнопка «Выход»
При нажатии на кнопку «Выход» происходит выход из приложения, с закрытием всей деятельности, посредством метода finish( ).
2.2 Процесс разработки приложения
Процесс разработки приложения был разбит на создание и интеграцию различных компонентов. Приложение, ввиду особенностей и требований, использует фоновые сервисы, подключение к интернету и другие возможности. Также в процессе разработки для создания интерфейса приложения, была подключена и использована библиотека Materialdesignlibrarymasterс открытым исходным кодом. Для того чтобы прямиком подключить библиотеку, необходимо было загрузить AndroidSupportRepository в SDK Manager. После чего добавить в раздел dependencies, в файле build.gradle нужную библиотеку.
Так как приложение является высокоуровневым (для реализации недостаточно стандартных элементов управления), потребовалось реализовать дополнительные элементы пользовательского интерфейса. Список использованныхэлементов:
ViewPager - менеджер, который позволяет выполнять повороты влево и вправо по страницам данным. Чаще всего используются в сочетании с фрагментами, которые представляют собой удобный способ сопоставить управление жизненным циклом каждой страницы. Есть стандартные адаптеры, реализуемые для использования фрагментов с ViewPager, которые охватывают наиболее распространенные случаи использования. Это FragmentPagerAdapter и FragmentStatePagerAdapter;
NavigationDrawer - навигационная панель, которую можно запустить проведя пальцем с левого края в правый, либо с помощью нажатия на иконку в верхнем левом краю. Панель используется в том случае, если в приложении необходимо заменить верхний бар. NavigationDrawerпрекрасно подходит для отображения большого количества навигационных задач одновременно. В выпадающем списке отображаются пункты меню, позволяющие быстро перейти в нужную часть приложения. При открытии такого меню, заслоняется часть экрана, налаживаясь сверху на его левую часть;
ScrollView - виджет, который используется для выполнения вертикальной прокрутки элементов с последующим автоматическим выравниванием. Виджет, является одной из частей активности, поэтому для его работы, необходимы разместить виджет в специальной активности LinerLayout. Для горизонтальной прокрутки используется HorizontalScrollView;
Toasts - виджет, который при нажатии открывает всплывающее окно. Поле заполняется требуемым объемом для сообщения;
AdView - рекламный баннер занимающий небольшую часть экрана. При нажатии на объявление открывается веб-сайт или страница магазина приложений. Объявления отображаются в формате HTML5.
В приложении использованы элементы стандартной модели приложения для системы Android, такие как система ресурсов приложения. Данная система реализована непосредственно в системе и предоставляет доступ к ресурсам, а также организовывает их хранение. Однако способ предоставления ресурсов не является универсальным, посему в данном приложении он используется лишь частично, недостающий функционал реализован в одном из модулей приложения. Список используемого стандартного функционала:
Контроль локализации;
Контроль разрешения предоставляемых графических элементов пользовательского интерфейса;
Система анимации;
Система построения пользовательского интерфейса (частично);
Система контроля разрешений и прав доступа приложения и его данных;
Система интеграции сторонних приложений;
Система подключения сторонних библиотек;
Система организации фоновых процессов.
Разработанное приложение было успешно опубликовано в онлайн сервисе приложений “GooglePlay”, и доступно для бесплатного скачивания по ссылке: https://www.play.google.com/store/apps/details?id=com.shavkunov.razvitie.samo
На момент написания дипломной работы статистика приложения следующая:
Средняя оценка приложения (5-ти бальная система): 4,6
Количество оценивших приложение: 14;
Количество скачиваний: 618
Активные пользователи: 435
Дата последнего обновления: 3 июня 2015 г.
Как и любое приложение, в данном приложении используются настройки и начальные данные. Ввиду особенностей приложения и его способа хранения данных, был реализован сервис предоставления данных приложению в момент его установки и первого запуска.
Системой Android предоставляется интерфейс хранения настроек, однако он не выполнял всех поставленных требований, посему был разработан модуль, расширяющий стандартный функционал.
Так как приложение должно обновлять свои данные независимо от своего состояние, было принято решение разделить приложение на 2 части.
Первая - является основной частью и выполняет отображение данных и общение с пользователем, может быть свернута либо закрыта.
Вторая - фоновый сервис, работающий независимо от первой части, и предоставляющий последние обновленные данные первой части по ее первому требованию.
Для выполнения поставленной задачи было решено использовать систему фоновых процессов с периодической нотификацией. Если опустить процесс создания и настройки фонового режима для сервиса, основной функционал занимает приемник широковещательных запросов на обновление. Данный приемник по получении сообщения будет вызывать процесс обновления данных для менеджера данных, в случае если это необходимо.
Стандартного менеджера данных недостаточно для выполнения всех необходимых задач, поэтому в приложении был реализован новый менеджер с необходимым функционалом. Основные функции нового менеджера ресурсов - контроль занимаемой оперативной памяти посредством использования мягких ссылок и динамической подгрузки.
2.3Тестирование
Тестирование разработанного приложения проводилось на различных версиях операционной системы, краткий список:
Android 2.1
Android 2.3.3
Android 4.4
Android 5.0
Android 5.1
Тестирование проходило на устройствах Android разных версий и при использовании эмулятора Genymotion на персональном компьютере. А также тестирование проводилось для различных экранов, что показало сохранение качества приложения в разных разрешениях. Список разрешений экранов:
480x800
768x1280
2560x1600
2.4Инструкция для пользователя
Для начала необходимо установить приложение на телефон или планшет. Есть две возможности сделать установку.
Зайти в Google Play, ввести в поиске название приложения «Развитие речи». На экране появится большое множество приложений по подходящему поиску. И найти приложение, которое расположено на третьем месте в рейтинге.
Скачать файл *apk на телефон/планшет в подходящую папку. Зайти в файловый менеджер, найти файл *apk и установить. На рисунке 10 показано установленное приложение на Android.
Рисунок 10 - Установленное приложение на Android.
Установится приложение под названием «Развитие речи», необходимо запустить его, после чего будет возможность увидеть «Главную страницу» приложения. Для того чтобы, перейти с «Главной страницы» в панель приложения, необходимо провести пальцем от левого края экрана, либо кликнуть по иконке навигации, которая выглядит как - три белых полоски. На рисунке 11 показано, как войти в панель навигации приложения с помощью иконки.
Рисунок 11 - Вход в панель навигации приложения.
Теперь у пользователя появляется выбор скороговорок по сложности, а также по определенному языку. Либо кликнуть по кнопке «Рекомендации» и прочитать обучающий материал, который помог бы пользователю в определенной сфере. На рисунке 12 показана, панель навигации приложения.
Рис 12 - Панель навигации приложения.
Заключение
Только приложения могут сделать любую операционную систему пригодной для работы, развлечения, выхода в Интернет, просмотра веб-страниц и многого другого, что превращает обычный телефон в маленький карманный компьютер с полным набором функциональных возможностей. Сами приложения могут быть кросс-платформенными, то есть имеют возможность работать не только в одной операционной системе, но и в других.
В ходе проделанной дипломной работы в среде разработки Android Studio, а также создания приложений в данной среде, были сделаны следующие выводы:
Интегрированная среда разработки Android Studio предоставляет широкие возможности для программирования приложения OC Android
Возможность увидеть визуальное построение проекта
Среда разработки Android Studio рассчитана на программирование различных приложений и предоставляет большое количество компонентов для этого
Среда разработки Android Studio подходит для создания приложений любой сложности
Прототипом среды разработки Android Studio, является коммерческая интегрированная среда разработки IntelliJIDEA и устаревшая среда разработки Eclipse.
При выполнении дипломной работы было разработано обучающее приложение для операционной системы Android. Назначение приложения, это - развитие речи посредством произнесения скороговорок.
Аналогичных приложений существует множество и главными отличиями разработанного приложения от других, является следующее:
В приложении присутствует материальный дизайн, который является актуальным и более новым дизайном на данным момент и используется в основном в последних версия операционной системы Android;
В приложении присутствует меню «Рекомендации», что поможет пользователю, понять обучающий материал, предоставленный в приложении;
В приложении присутствуют иностранные языки.
Таким образом, в процессе написания диплома, поставленные цели были достигнуты, задачи решены.
приложение android обучающий
Список использованных источников
Веб-сервисдляхостингаIT-проектов[Электронныйресурс]. - Режимдоступа:http://www.github.com/
Общедоступная интернет-энциклопедия [Электронный ресурс]. - Режим доступа:http://www.ru-wikipedia.org/
Сайт по освоению программирования [Электронный ресурс]. - Режим доступа:http://www.developer.alexanderklimov.ru/
Многофункциональный форум [Электронный ресурс]. - Режим доступа: http://www.4pda.ru/
Сайт для публикации новостей, аналитических статей, мыслей, связанных с информационными технологиями [Электронный ресурс].-Режим доступа: http://www.habrahabr.ru/
Центр разработчиков [Электронный ресурс]. -Режим доступа: http://www.ibm.com/developerworks/ru/library/j-mobileforthemasses1/
Официальный сайт с мануалами для разработчика [Электронный ресурс]. -Режим доступа: http://www.developer.android.com/
Официальный сайт ОС Android[Электронный ресурс]. -Режим доступа: http://www.android.com/
Информационный сайт IT-технологий [Электронный ресурс]. -Режим доступа:http://www.3dnews.com/
Электронный дискаунер [Электронный ресурс]. -Режим доступа: http://www.overclockers.ru/
Сайт для разработки под ОС Android[Электронный ресурс]. -Режим доступа:http://www.pdalife.ru/
Приложение А
Листинг файла MainActivity.java
packagecom.shavkunov.razvitie.samo;
importandroid.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import com.shavkunov.razvitie.handlers.ActionBarDefaultHandler;
import com.shavkunov.razvitie.handlers.ActionBarHandler;
import com.shavkunov.razvitie.samo.navigationdrawers.NavigationDrawerActivity;
importjava.util.ArrayList;
import java.util.List;
public class MainActivityextends com.shavkunov.razvitie.activities.ListViewActivity {
@Override
public ListAdaptergetListAdapter() {
return new MainActivityAdapter(this, R.layout.activity_main_row, getFeatures());
}
@Override
public booleanuseCustomContentView() {
return false;
}
@Override
public intgetCustomContentView() {
return 0;
}
@Override
public booleanpullToRefreshEnabled() {
return false;
}
@Override
public int[] getPullToRefreshColorResources() {
return new int[0];
}
@Override
public void onRefresh() {
}
@Override
public void onItemClick(AdapterView<?>adapterView, View view, intposition, long l) {
Intent intent = new Intent(this,
((MainActivityFeature) adapterView.getAdapter().getItem(position)).getActivity());
startActivity(intent);
}
@Override
public booleanonItemLongClick(AdapterView<?>adapterView, View view, intposition, long l) {
return false;
}
@Override
protected ActionBarHandlergetActionBarHandler() {
return new ActionBarDefaultHandler(this);
}
private List<MainActivityFeature>getFeatures() {
MainActivityFeaturenavigationDrawerHeader = new MainActivityFeature();
navigationDrawerHeader.setHeader(true);
navigationDrawerHeader.setTitle("NavigationDrawer");
MainActivityFeature navigationDrawerFeature1 = new MainActivityFeature();
navigationDrawerFeature1.setActivity(NavigationDrawerActivity.class);
navigationDrawerFeature1.setTitle("Normal");
navigationDrawerFeature1.setDescription("A basic NavigationDrawer");
MainActivityFeaturelistViewHeader = new MainActivityFeature();
listViewHeader.setHeader(true);
listViewHeader.setTitle("ListView");
MainActivityFeatureviewPagerHeader = new MainActivityFeature();
viewPagerHeader.setHeader(true);
viewPagerHeader.setTitle("ViewPager");
MainActivityFeaturescrollViewHeader = new MainActivityFeature();
scrollViewHeader.setHeader(true);
scrollViewHeader.setTitle("ScrollView");
MainActivityFeaturesearchBarHeader = new MainActivityFeature();
searchBarHeader.setHeader(true);
searchBarHeader.setTitle("SearchBar");
List<MainActivityFeature> objects = new ArrayList<>();
objects.add(searchBarHeader);
objects.add(navigationDrawerHeader);
objects.add(navigationDrawerFeature1);
objects.add(listViewHeader);
objects.add(viewPagerHeader);
objects.add(scrollViewHeader);
return objects;
}
}
Листингфайла NavigationDrawerActivity.java
package com.shavkunov.razvitie.samo.navigationdrawers;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.Toast;
import com.shavkunov.razvitie.handlers.ActionBarDefaultHandler;
import com.shavkunov.razvitie.handlers.ActionBarHandler;
import com.shavkunov.razvitie.handlers.NavigationDrawerAccountsHandler;
import com.shavkunov.razvitie.handlers.NavigationDrawerAccountsMenuHandler;
importcom.shavkunov.razvitie.handlers.NavigationDrawerBottomHandler;
import com.shavkunov.razvitie.handlers.NavigationDrawerTopHandler;
import com.shavkunov.razvitie.models.Account;
import com.shavkunov.razvitie.samo.Glavnay;
import com.shavkunov.razvitie.samo.R;
import com.shavkunov.razvitie.samo.rasskaz;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment1;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment2;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment3;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment4;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment5;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment6;
import com.shavkunov.razvitie.samo.viewpagers.ViewPagerFragment7;
public class NavigationDrawerActivity
extends com.shavkunov.razvitie.activities.NavigationDrawerActivity {
@Override
public NavigationDrawerAccountsHandlergetNavigationDrawerAccountsHandler() {
return null;
}
@Override
public NavigationDrawerAccountsMenuHandlergetNavigationDrawerAccountsMenuHandler() {
return null;
}
@Override
public void onNavigationDrawerAccountChange(Account account) {
}
@Override
public NavigationDrawerTopHandlergetNavigationDrawerTopHandler() {
return new NavigationDrawerTopHandler(this)
.addItem(R.string.title_activity_glavnay, new Glavnay())
.addSection(R.string.skorogovorki)
.addItem(R.string.light, new ViewPagerFragment())
.addItem(R.string.hard, new ViewPagerFragment1())
.addItem(R.string.englishsk, new ViewPagerFragment2())
.addItem(R.string.Deutsch, new ViewPagerFragment3())
.addItem(R.string.ital2, new ViewPagerFragment4())
.addItem(R.string.ukrainaa, new ViewPagerFragment5())
.addItem(R.string.bel1, new ViewPagerFragment6())
.addItem(R.string.franзais1, new ViewPagerFragment7())
.addSection(R.string.help)
.addItem(R.string.reccomend, new rasskaz() );
}
@Override
public NavigationDrawerBottomHandlergetNavigationDrawerBottomHandler() {
return new NavigationDrawerBottomHandler(this)
.addItem(R.string.oceniteapp, R.mipmap.ic_google_play_black_48dp, new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(getApplicationContext(), "Спасибо :)", Toast.LENGTH_SHORT);
toast.show();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.shavkunov.razvitie.samo"));
startActivity(intent);
}
})
.addItem(R.string.about, R.mipmap.ic_exclamation_black_48dp, new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(getApplicationContext(), "Версия - 1.0, Сборка - 20, Автор - Shavkunov.A", Toast.LENGTH_SHORT);
toast.show();
}
})
.addItem(R.string.exit, R.mipmap.ic_exit_to_app_black_48dp, new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
public booleanoverlayActionBar() {
return false;
}
@Override
public booleanreplaceActionBarTitleByNavigationDrawerItemTitle() {
return true;
}
@Override
public intdefaultNavigationDrawerItemSelectedPosition() {
return 1;
}
@Override
protected ActionBarHandlergetActionBarHandler() {
return new ActionBarDefaultHandler(this);
}
}
Листинг файлаViewPagerFragment.java
packagecom.shavkunov.razvitie.samo.viewpagers;
importcom.shavkunov.razvitie.handlers.ViewPagerHandler;
importcom.shavkunov.razvitie.samo.MainFragment;
importcom.shavkunov.razvitie.samo.R;
publicclassViewPagerFragment
extendscom.shavkunov.razvitie.fragments.ViewPagerFragment {
@Override
publicViewPagerHandlergetViewPagerHandler() {
returnnewViewPagerHandler(getActivity())
.addPage(R.string.lightfragment, MainFragment.newInstance("1/80. Домдымит, дверьдребезжит"))
.addPage(R.string.lightfragment, MainFragment.newInstance("2/80. ПопросилаПоляПашупринестиейкошелёк"))
.addPage(R.string.lightfragment, MainFragment.newInstance("3/80. Оттопотакопытпыльпополюлетит"))
.addPage(R.string.lightfragment, MainFragment.newInstance("4/80. Вакулбабуобул, даиВакулабабаобула"))
.addPage(R.string.lightfragment, MainFragment.newInstance("5/80. Добылбобовбобыль"))
.addPage(R.string.lightfragment, MainFragment.newInstance("6/80. УВали, ВарииВалеркивареникивтарелке"))
.addPage(R.string.lightfragment, MainFragment.newInstance("7/80. Уосынеусы, неусища, аусики"))
.addPage(R.string.lightfragment, MainFragment.newInstance("8/80. Уёлкииголкиколки"))
.addPage(R.string.lightfragment, MainFragment.newInstance("9/80. Всех скороговорок не перескороговоришь, не перевыскороговоришь"))
.addPage(R.string.lightfragment, MainFragment.newInstance("10/80. Интервьюер интервента интервьюировал"))
.addPage(R.string.lightfragment, MainFragment.newInstance("11/80. Жужжит-жужжит жужелица, да не кружится"))
.addPage(R.string.lightfragment, MainFragment.newInstance("12/80. Корабли лавировали, лавировали, да не вылавировали"))
.addPage(R.string.lightfragment, MainFragment.newInstance("13/80. Шла Саша по шоссе и сосала сушку"))
.addPage(R.string.lightfragment, MainFragment.newInstance("14/80. Даже шею, даже уши ты испачкал в черной туши. Становись скорей под душ. Смой с ушей под душем тушь. Смой и с шеи тушь под душем. После душа вытрись суше. Шею суше, суше уши, и не пачкай больше уши"))
.addPage(R.string.lightfragment, MainFragment.newInstance("15/80. Яшма в замше замшела"))
.addPage(R.string.lightfragment, MainFragment.newInstance("16/80. Жутко жуку жить на суку"))
.addPage(R.string.lightfragment, MainFragment.newInstance("17/80. Чешуя у щучки, щетинки у чушки"))
.addPage(R.string.lightfragment, MainFragment.newInstance("18/80. Цапля чахла, цапля сохла, цапля сдохла"))
.addPage(R.string.lightfragment, MainFragment.newInstance("19/80. Из кузова в кузов шла перегрузка арбузов. В грозу в грязи от груза арбузов развалился кузов"))
.addPage(R.string.lightfragment, MainFragment.newInstance("20/80. Хвалю халву"))
.addPage(R.string.lightfragment, MainFragment.newInstance("21/80. Все бобры для своих бобрят добры. Бобры берут для бобрят бобы. Бобры, бывает, будоражат бобрят, давая им бобы"))
.addPage(R.string.lightfragment, MainFragment.newInstance("22/80. Около кола колокола, около ворот коловорот"))
.addPage(R.string.lightfragment, MainFragment.newInstance("23/80. У Фани - фуфайка, У Феди - туфли"))
.addPage(R.string.lightfragment, MainFragment.newInstance("24/80. Сачок зацепился за сучок"))
.addPage(R.string.lightfragment, MainFragment.newInstance("25/80. Жук летает над лужком, он устал ходить пешком"))
.addPage(R.string.lightfragment, MainFragment.newInstance("26/80. В один, Клим, клин колоти"))
.addPage(R.string.lightfragment, MainFragment.newInstance("27/80. Рыла свинья белорыла, тупорыла, пол двора рылом изрыла, вырыла, подрыла"))
.addPage(R.string.lightfragment, MainFragment.newInstance("28/80. Тщетно тщится щука ущемить леща"))
.addPage(R.string.lightfragment, MainFragment.newInstance("29/80. Съел молодец тридцать три пирога с пирогом, да все с творогом"))
.addPage(R.string.lightfragment, MainFragment.newInstance("30/80. Ехал Грека через реку, видит Грека - в реке рак. Сунул Грека руку в реку, рак за руку Грека - цап!"))
.addPage(R.string.lightfragment, MainFragment.newInstance("31/80. Волхвовал волхв в хлеву с волхвами"))
.addPage(R.string.lightfragment, MainFragment.newInstance("32/80. Маша мешает кашу, Миша мешает Маше"))
.addPage(R.string.lightfragment, MainFragment.newInstance("33/80. От жары во ржи пожар"))
.addPage(R.string.lightfragment, MainFragment.newInstance("34/80. Купи кипу пуха"))
.addPage(R.string.lightfragment, MainFragment.newInstance("35/80. У нас на дворе-подворье погода размокропогодилась"))
.addPage(R.string.lightfragment, MainFragment.newInstance("36/80. У ежа - ежата, у ужа - ужата"))
.addPage(R.string.lightfragment, MainFragment.newInstance("37/80. Шесть мышат в камыше шуршат"))
.addPage(R.string.lightfragment, MainFragment.newInstance("38/80. Рыбы в проруби - пруд пруди"))
.addPage(R.string.lightfragment, MainFragment.newInstance("39/80. Хитрую сороку поймать морока, а сорок сорок - сорок морок"))
.addPage(R.string.lightfragment, MainFragment.newInstance("40/80. Ученик учил уроки, у него в чернилах щёки"))
.addPage(R.string.lightfragment, MainFragment.newInstance("41/80. Верзила Вавила весело ворочал вилы"))
.addPage(R.string.lightfragment, MainFragment.newInstance("42/80. Сидел тетерев на дереве, а тетёрка с тетеревятами на ветке"))
.addPage(R.string.lightfragment, MainFragment.newInstance("43/80. Проворонила ворона воронёнка"))
.addPage(R.string.lightfragment, MainFragment.newInstance("44/80. Овощи тащи - будут щи"))
.addPage(R.string.lightfragment, MainFragment.newInstance("45/80. Во мраке раки шумят в драке"))
.addPage(R.string.lightfragment, MainFragment.newInstance("46/80. Рожа негожа, да душа пригожа"))
.addPage(R.string.lightfragment, MainFragment.newInstance("47/80. Везёт Сенька Саньку с Сонькой на санках. Санки скок, Сеньку с ног, Саньку в бок, Соньку в лоб - Все в сугроб"))
.addPage(R.string.lightfragment, MainFragment.newInstance("48/80. Однажды галок поп пугая, в кустах увидел попугая. И говорит тот попугай: Пугать ты галок, поп, пугай, но галок поп в кустах пугая, пугать не смей ты попугая"))
.addPage(R.string.lightfragment, MainFragment.newInstance("49/80. Пират чертёнка видит из бочонка"))
.addPage(R.string.lightfragment, MainFragment.newInstance("50/80. Плохо падать на ежа со второго этажа"))
.addPage(R.string.lightfragment, MainFragment.newInstance("51/80. Цыплёнок цапли цепко цеплялся за цепь"))
.addPage(R.string.lightfragment, MainFragment.newInstance("52/80. Боронила борона по боронованному полю"))
.addPage(R.string.lightfragment, MainFragment.newInstance("53/80. В живом уголке жили ежи да ужи"))
.addPage(R.string.lightfragment, MainFragment.newInstance("54/80. Соломы воз возница вез"))
.addPage(R.string.lightfragment, MainFragment.newInstance("55/80. Около колодца кольцо не найдется"))
.addPage(R.string.lightfragment, MainFragment.newInstance("56/80. Я бродил один у горки, собирал скороговорки"))
.addPage(R.string.lightfragment, MainFragment.newInstance("57/80. Щуку я тащу, тащу, щуку я не упущу"))
.addPage(R.string.lightfragment, MainFragment.newInstance("58/80. Ужеуживлуже"))
.addPage(R.string.lightfragment, MainFragment.newInstance("59/80. Уелкииголкиколки"))
.addPage(R.string.lightfragment, MainFragment.newInstance("60/80. Течетречка, печетпечка"))
.addPage(R.string.lightfragment, MainFragment.newInstance("61/80. ШелШишигапошоссе, Шелшуpшаштанами. Шагшагнет, шепнет: \"Ошибка\", Шевельнетушами"))
.addPage(R.string.lightfragment, MainFragment.newInstance("62/80. УКондратакурткакоротковата"))
.addPage(R.string.lightfragment, MainFragment.newInstance("63/80. Архипосип, Осипохрип"))
.addPage(R.string.lightfragment, MainFragment.newInstance("64/80. Потеянажаре, янежирею. Яжирею, себяжалея"))
.addPage(R.string.lightfragment, MainFragment.newInstance("65/80. ВпрудууПоликарпа - трикарася, трикарпа"))
.addPage(R.string.lightfragment, MainFragment.newInstance("66/80. Горожаненагородили, пригородразгребает"))
.addPage(R.string.lightfragment, MainFragment.newInstance("67/80. Пилорамапилитдрова, анерамы"))
.addPage(R.string.lightfragment, MainFragment.newInstance("68/80. Рострастенияпоражаетвоображение"))
.addPage(R.string.lightfragment, MainFragment.newInstance("69/80. Прореженныеросткибыстроразрастаются"))
.addPage(R.string.lightfragment, MainFragment.newInstance("70/80. МамаМилумыласмылом. Миламылонелюбила"))
.addPage(R.string.lightfragment, MainFragment.newInstance("71/80. Взимнийхолодвсякиймолод. Всякиймолодвзимнийхолод"))
.addPage(R.string.lightfragment, MainFragment.newInstance("72/80. Нашполканпопалвкапкан"))
.addPage(R.string.lightfragment, MainFragment.newInstance("73/80. Котмолоколакал, аВитябулкувмолокомакал"))
.addPage(R.string.lightfragment, MainFragment.newInstance("74/80. Дятелдубдолбил, данедодолбил."))
.addPage(R.string.lightfragment, MainFragment.newInstance("75/80. ПрохориПахомедутверхом"))
.addPage(R.string.lightfragment, MainFragment.newInstance("76/80. ДимадаритДинедыни, ДыниДимадаритДине"))
.addPage(R.string.lightfragment, MainFragment.newInstance("77/80. Убабыбобы, удедадубы"))
.addPage(R.string.lightfragment, MainFragment.newInstance("78/80. УБобывинт, УВитибинт."))
.addPage(R.string.lightfragment, MainFragment.newInstance("79/80. Цокнулсзадиконькопытцем, подкопытцемпыльклубится"))
.addPage(R.string.lightfragment, MainFragment.newInstance("80/80. Скворцыисиницы -- веселыептицы"))
;
}
@Override
public intdefaultViewPagerPageSelectedPosition()
{
return 0;
};
@Override
public booleanshowViewPagerIndicator() {
return false;
}
@Override
public booleanreplaceActionBarTitleByViewPagerPageTitle() {
return true;
}
}
Листингфайла MainActivityAdapter.java
package com.shavkunov.razvitie.samo;
importandroid.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.List;
public class MainActivityAdapterextends ArrayAdapter<MainActivityFeature> {
private intmLayoutResourceId;
private intmCount;
public MainActivityAdapter(Context context,
intlayoutResourceId,
List<MainActivityFeature> objects) {
super(context, layoutResourceId, objects);
mLayoutResourceId= layoutResourceId;
mCount= objects.size();
}
@Override
public intgetCount() {
return mCount;
}
@Override
public long getItemId(intposition) {
return position;
}
@Override
public booleanareAllItemsEnabled() {
return false;
}
@Override
public booleanisEnabled(intposition) {
return !getItem(position).isHeader();
}
@Override
public View getView(intposition, View convertView, ViewGroup parent) {
ViewHolder holder;
MainActivityFeature item = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext())
.inflate(mLayoutResourceId, parent, false);
holder = new ViewHolder();
holder.title= (TextView) convertView.findViewById(R.id.activity_main_row_title);
holder.header= (TextView) convertView.findViewById(R.id.activity_main_row_header);
holder.description= (TextView) convertView
.findViewById(R.id.activity_main_row_description);
holder.headerSeparator= convertView
.findViewById(R.id.activity_main_row_header_separator);
convertView.setTag(holder);
} else holder = (ViewHolder) convertView.getTag();
if (item.isHeader()) {
holder.header.setText(item.getTitle());
holder.header.setVisibility(View.VISIBLE);
if (position > 0) holder.headerSeparator.setVisibility(View.VISIBLE);
else holder.headerSeparator.setVisibility(View.GONE);
holder.title.setVisibility(View.GONE);
holder.description.setVisibility(View.GONE);
} else {
holder.title.setText(item.getTitle());
holder.title.setVisibility(View.VISIBLE);
if (item.getDescription() == null || "".equals(item.getDescription())) {
holder.description.setVisibility(View.GONE);
} else {
holder.description.setText(item.getDescription());
holder.description.setVisibility(View.VISIBLE);
}
holder.header.setVisibility(View.GONE);
holder.headerSeparator.setVisibility(View.GONE);
}
return convertView;
}
private class ViewHolder {
private TextViewtitle;
private TextViewheader;
private TextViewdescription;
private View headerSeparator;
}
}
Листинг файла MainActivityFeature.java
package com.shavkunov.razvitie.samo;
public class MainActivityFeature {
private String mTitle;
private String mDescription;
private booleanmHeader;
private Class mActivity;
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
this.mTitle= title;
}
public String getDescription() {
return mDescription;
}
public void setDescription(String description) {
this.mDescription= description;
}
public booleanisHeader() {
return mHeader;
}
public void setHeader(booleanheader) {
this.mHeader= header;
}
public Class getActivity() {
return mActivity;
}
public void setActivity(Class activity) {
this.mActivity= activity;
}
}
Листингфайла MainFragment.java
package com.shavkunov.razvitie.samo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MainFragmentextendsFragment {
private static final String ARG_TEXT = "text";
public MainFragment() {
}
public static MainFragmentnewInstance(String text) {
MainFragment fragment = new MainFragment();
Bundle bundle = new Bundle();
bundle.putString(ARG_TEXT, text);
fragment.setArguments(bundle);
return fragment;
}
@Override
public View onCreateView(LayoutInflaterinflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.textview, container, false);
String text = "";
if (getArguments() != null &&getArguments().containsKey(ARG_TEXT)) {
text = getArguments().getString(ARG_TEXT);
if (TextUtils.isEmpty(text)) text = "";
}
((TextView) view.findViewById(android.R.id.text1)).setText(text);
return view;
}
Приложение Б
На рисунке 1 представлен базовый вид среды разработки.
Рисунок 1 - Внешний вид среды разработки приложения.
На рисунке 9 представлена страница данного приложения.
Рисунок 9 - Страница в GooglePlay
Размещено на Allbest.ru
Подобные документы
Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.
курсовая работа [167,8 K], добавлен 18.01.2017Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.
дипломная работа [1,6 M], добавлен 17.06.2017Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.
дипломная работа [2,7 M], добавлен 03.04.2015Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.
дипломная работа [2,1 M], добавлен 18.01.2016Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.
курсовая работа [1,0 M], добавлен 15.11.2012Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019Разработка программного обеспечения для платформы Android версии 2.3: информационное приложения для поклонников футбольной команды, с возможностью просмотра событий, статистики и иной информации о команде и ее успехах. Листинг JsonDataManager.java.
дипломная работа [4,1 M], добавлен 24.04.2013Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.
дипломная работа [1,6 M], добавлен 08.07.2015Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.
дипломная работа [4,5 M], добавлен 19.01.2017