- •Ос. Лабораторная работа №2 знакомство с пРограммированием на java. Програмирование расчетного android-приложения
- •Задание на разработку
- •Теоретические сведения.
- •Программный код на Java
- •Использование операторов Import для подключения классов из sdk Android
- •Класс MainActivity – инфраструктура приложения
- •Метод onCreate() класса MainActivity – создание инфраструктуры приложения
- •Метод onCreateOptionsMenu() класса MainActivity – создание меню приложения
- •Метод onOptionsItemSelected() класса MainActivity – обработка щелчков (касаний) элементов панели действий
- •Реализация приложения Tip Calculator
- •Инструкции package и import
- •Класс ActionBarActivity и жизненный цикл активностей приложения Tip Calculator
- •Поля (переменные) класса
- •Переопределение метода OnCreate() класса MainActivity
- •Разработка метода updateStandard() класса MainActivity
- •Разработка метода updateCustom() класса MainActivity
- •Переопределение метода onSaveInstanceState() класса Activity
- •Анонимный внутренний класс, реализующий интерфейс OnSeekBarChangeListener
- •Анонимный внутренний класс, реализующий интерфейс TextWatcher
- •Завершение разработки класса MainActivity и всего приложения
Метод onOptionsItemSelected() класса MainActivity – обработка щелчков (касаний) элементов панели действий
Так как активность MainActivity указана в качестве главной в файле манифеста приложения AndroidManifest.xml, панель действий активности MainActivity с помощью третьего метода onOptionsItemSelected() автоматически обрабатывает щелчки (касания) кнопок панели действий и элементов меню.
Методу передается item – объект класса MenuItem, импортируемого инструкцией в строке 5 листинга MainActivity.
Реализация приложения Tip Calculator
В листингах ниже приведена реализация приложения Tip Calculator в единственном классе MainActivity. Этот класс вычисляет чаевые на основе процентной ставки, равной 10%, 15%, 20%, а также на базе пользовательской процентной ставки. Чаевые вычисляются на основании выставленного счета, затем вычисленные чаевые добавляются к выставленному счету, образуя счет к оплате (total).
Инструкции package и import
В листинге ниже приводятся инструкции package и import, которые включены в класс MainActivity.java:
// MainActivity.java. Вычисляет чаевые на основе счета с 5%,
// 10%, 15% или введенной пользователем процентной ставкой.
package com.example.eugen.tipcalculator;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
Инструкция package, находящийся в строке 3, указывает на то, что класс в этом файле является частью пакета com.example.tipcalculator. Эта строка была автоматически сгенерирована при создании проекта.
Инструкции import, находящиеся в строках 4–13, импортируют различные интерфейсы и классы, используемые приложением. Инструкции import в строках 4 – 7 были сгенерированы автоматически при создании проекта и были описаны ранее при общем описании класса MainActivity. Для приложения Tip Calculator необходимо импортировать следующие дополнительные пакеты и интерфейсы:
Интерфейс Editable из пакета android.text (строка 8) позволяет изменять содержимое и разметку текста в UI.
Интерфейс TextWatcher из пакета android.text (строка 9) служит для реагирования на события, возникающие при взаимодействии пользователя с компонентами EditText.
Пакет android.widget (строки 10–13) содержит виджеты и макеты (т. е., компоненты UI), используемые в Android UI, такие как EditText (строка 10), SeekBar (строка 11) и TextView (строка 13).
Интерфейс SeekBar.OnSeekBarChangeListener из пакета android.widget (строка 12) предназначен для реагирования на события, возникающие при перемещении ползунка SeekBar.
Класс ActionBarActivity и жизненный цикл активностей приложения Tip Calculator
В приложениях Android отсутствует главный метод main() для запуска приложения.
В общем случае приложения Android могут включать четыре типа основных компонентов: активности, службы, провайдеры контента и широковещательные приемники.
Каждая активность обычно связана с отдельным экраном приложения. Взаимодействие пользователей с активностями осуществляется с помощью представлений (Views), которые являются компонентами UI.
В этой работе нам потребуются только активности, точнее, одна активность с именем MainActivity, сгенерированная при создании проекта:
// Главный класс активности для приложения Tip Calculator
public class MainActivity extends ActionBarActivity {
На протяжении своего жизненного цикла активность может находиться в одном из следующих состояний: активное (выполняется), приостановленное или остановленное. Переход между различными состояниями активности осуществляется в ответ на различные события:
Активная (или выполняющаяся) активность отображается на экране и «владеет фокусом» (т. е., возможен выбор или ввод данных с помощью мышки или клавиатуры). Именно с этой активностью взаимодействует пользователь.
Приостановленная активность отображается на экране, но не обладает фокусом. Эта активность может быть удалена из памяти операционной системой (как правило, с целью освобождения памяти, требуемой для выполнения другого приложения). Обратите внимание, что в первую очередь из памяти удаляются остановленные активности.
Остановленная активность не отображается на экране и удаляется системой при нехватке памяти.
В процессе перехода активности между различными состояниями она принимает вызовы для различных методов жизненного цикла, определенных в классе Activity. В приложении Tip Calculator реализуется два метода жизненного цикла: один основной метод onCreate() и один дополнительный метод onSaveInstanceState(). К другим основным методам жизненного цикла относятся: onStart(), onPause(), onRestart(), onResume(), onStop() и onDestroy().
Основной метод жизненного цикла onCreate() вызывается системой после запуска объекта класса Activity. После вызова этого метода отображается графический интерфейс пользователя, а пользователь получает возможность взаимодействия с объектом класса Activity.
Дополнительный метод жизненного цикла onSaveInstanceState() вызывается системой в случае изменения конфигурации устройства в процессе выполнения приложения (например, при вращении устройства пользователем или выдвижении физической клавиатуры устройства, как в оригинальном смартфоне Motorola Droid). Этот метод может применяться для сохранения информации о состоянии, которое может быть восстановлено в при вызове метода onCreate() (в качестве составной части процесса изменения конфигурации). Если приложение находится в фоновом режиме, обеспечивающем возможность ответа пользователя на телефонные звонки, либо в случае запуска пользователем другого приложения, компоненты UI приложения должны автоматически сохранять свой контент. В результате обеспечивается возврат к выполнению приложения на переднем плане (эта возможность будет доступной в том случае, если система не «убивает» приложение).
При реализации методов, следует помнить, что каждый метод жизненного цикла активности, переопределенный пользователем, должен сначала вызывать версию базового класса (суперкласса) этого метода. В противном случае вызов этого метода приведет к генерированию исключения.
