- PVSM.RU - https://www.pvsm.ru -
С появлением всё большего и большего количествa телефонов и планшетов на Android, программирование на нём становится все более популярным.
И это отличная платформа — API в основном хорошо документированы и просты в использовании. И это просто классно написать что-то, что вы можете запустить на своём телефоне. Вам даже не нужен телефон, потому что вы можете писать и тестировать код в эмуляторе на вашем Linux PC.
В первой из двух частей введения в программирование под android, мы напишем простой таймер и начнем изучать Android API. Это руководство предполагает некоторые базовые знания Java, XML и принципы программирования, но даже если вы в этом слабоваты, не стесняйтесь следовать дальше!
Замечание о версии: самая последняя версия это Android 4.2 (Jelly Bean), но как вы можете увидеть из этой диаграммы Wikipedia [1], она еще не так популярна. Вам лучше писать для обеих или одной из версий: 4.0 (Sandwich Ice Cream) или 2.3 (Gingerbread), тем более, что Android является полностью совместимой с последующими версиями ( код для 2.3 будет работать на 4.2), но не всегда обратно совместимы.
Этот код должен работать на обеих версиях 4.0 и 2.3.
Самый быстрый способ получить рабочую среду разработки это скачать Bundle Android [2]. Вам также понадобится JDK 6 (не только JRE), обратите внимание, что Android не совместим с gcj. Если у вас уже есть Eclipse, или хотите использовать другой IDE, вы можете настроить его для Android, как описано здесь [3].
Теперь создайте проект под названием Countdown, используя Eclipse [4] или из командной строки [5]. Я установил BuildSDK на 4.0.3, минимальный SDK до 2.2, и использовал шаблон BlankActivity (в Eclipse).
Для нашей самой первой программы, мы собираемся сделать таймер, который при нажатии кнопки отсчитывает с 30 секунд. Прежде чем писать код, давайте создадим интерфейс — то, что увидит пользователь когда запустит приложение.
Откройте res/layout/activity_countdown.xml
чтобы создать XML макет, используя графический редактор Eclipse или текстовый XML редактор, и введите следующее:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/time_display_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:text="@string/_00_30"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<Button
android:id="@+id/startbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/time_display_box"
android:layout_centerHorizontal="true"
android:layout_marginTop="41dp"
android:text="@string/start" />
</RelativeLayout>
Обратите внимание на ссылки @string/start
и @string/__00_30
. Эти значения сохраняются в res/values/strings.xml
:
<string name="start">Start</string>
<string name="_00_30">00:30</string>
Это стандартный способ обращения к ресурсам Android. Хорошая практика использовать ссылки на строки, вместо прямого назначения строк.
Далее, открываем файл CountdownActivity.java
в редакторе. У вас уже должен быть создан метод OnCreate ()
. OnCreate ()
всегда вызывается когда впервые создается Activity, поэтому вы часто будете начинать именно здесь, делая установку и логику запуска приложения. (Eclipse также мог создать метод onCreateOptionsMenu ()
, который мы пока проигнорируем.) Введите этот код:
public class CountdownActivity extends Activity {
private static final int MILLIS_PER_SECOND = 1000;
private static final int SECONDS_TO_COUNTDOWN = 30;
private TextView countdownDisplay;
private CountDownTimer timer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_countdown);
countdownDisplay = (TextView) findViewById(R.id.time_display_box);
Button startButton = (Button) findViewById(R.id.startbutton);
startButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
try {
showTimer(SECONDS_TO_COUNTDOWN * MILLIS_PER_SECOND);
} catch (NumberFormatException e) {
// method ignores invalid (non-integer) input and waits
// for something it can use
}
}
});
}
}
Вы заметите, то что делает это удивительно легко как для первого проекта, это то что Android API
уже включает в себя CountDownTimer
. Мы создали его (timer
), и экран отсчета (countdownDisplay
), как приватные переменные. В OnCreate ()
мы используем встроенный метод setContentView
, чтобы захватить наш XML
макет. Синтаксис R.foo.bar
это стандартный способ обращения к Android XML
-ресурсам, так что вы это будите видеть часто.
findViewById
является еще одним методом который вы часто будите использовать, здесь он захватывает экран и кнопку Start
из XML-разметки. Чтобы кнопка работала при нажатии, она должна иметь OnClickListener
. Это интерфейс, так что должен быть создан как подкласс. Мы также могли бы создать целый новый класс MyButton
, но это перебор для одной кнопки. Вместо этого, мы делаем это здесь же, создаём новой OnClickListener
и его OnClick ()
метод. Он просто вызывает showTimer ()
с количеством миллисекунд (в данный момент миллисекунды записаны прямо в коде).
Итак, что же showTimer () делает?
private void showTimer(int countdownMillis) {
if(timer != null) { timer.cancel(); }
timer = new CountDownTimer(countdownMillis, MILLIS_PER_SECOND) {
@Override
public void onTick(long millisUntilFinished) {
countdownDisplay.setText("counting down: " +
millisUntilFinished / MILLIS_PER_SECOND);
}
@Override
public void onFinish() {
countdownDisplay.setText("KABOOM!");
}
}.start();
}
Класс CountDownTimer
[6] делает большую часть работы за нас, что приятно. На всякий случай, если уже есть работающий таймер, мы начнем с его отменой. Затем мы создаем новый таймер, установив в миллисекундах отсчет (параметр из showTimer ()
) и количество миллисекунд в интервале. Этот интервал указывает как часто вызывается OnTick ()
.
CountDownTimer
является другим абстрактным классом, и методы __ OnTick () __
и __ onFinish () __
должны быть реализованы при подклассе. Мы переопределяем OnTick ()
, чтобы он уменьшал обратный отсчет на секунду при каждом тике, переопределяем onFinish ()
, чтобы отобразить сообщение на экране после завершения обратного отсчета. И, наконец, start ()
запускает таймер.
Выберите «Запуск» (Run) в Eclipse, и запустите программу как Android приложения, эмулятор будет автоматически сгенерирован и запущен для вас. Прочитайте эту Android документацию, если вам нужно больше информации о настройке эмулятора [7], или о запуске приложения из командной строки [8].
Поздравляю, вы написали ваше первое приложение для Android!
Во второй части мы взглянем поближе на структуру Android приложения, и сделаем некоторые улучшения для уже написанного таймера. Сделаем возможным ввод времени отсчета, кнопку стоп, и опции меню. Мы также увидим как запустить его на телефоне, а не программном эмуляторе.
Ну а пока, для получения дополнительной информации вы можете пройти на Android Development Training [9], раздел из Linux training [10] от Linux Foundation.
PS:
Оригинал на Linux Foundation: (часть 1) [11]
Автор: emailAlexander
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/24168
Ссылки в тексте:
[1] этой диаграммы Wikipedia: http://en.wikipedia.org/wiki/File:Android_historical_version_distribution.png
[2] скачать Bundle Android: http://developer.android.com/sdk/index.html
[3] здесь: http://developer.android.com/sdk/installing/index.html
[4] используя Eclipse: http://developer.android.com/tools/projects/projects-eclipse.html
[5] из командной строки: http://developer.android.com/tools/projects/projects-cmdline.html
[6] CountDownTimer
: http://developer.android.com/reference/android/os/CountDownTimer.html
[7] Прочитайте эту Android документацию, если вам нужно больше информации о настройке эмулятора: http://developer.android.com/tools/devices/index.html
[8] запуске приложения из командной строки: http://developer.android.com/tools/building/building-cmdline.html
[9] Android Development Training: http://training.linuxfoundation.org/linux-courses/android-development-training
[10] Linux training: http://training.linuxfoundation.org/
[11] (часть 1): https://www.linux.com/learn/docs/683628-android-programming-for-beginners-part-1
[12] Источник: http://habrahabr.ru/post/164893/
Нажмите здесь для печати.