Pull to refresh

Программирование под Android для начинающих. Часть первая

Программирование под Android для начинающих. Часть первая.



С увеличением количества устройств работающих на платформе android увеличивается и популярность программирования под android. Это замечательная платформа для программирования — отлично задокументированное и простое в использовании API и просто удовольствие от написание чего – нибудь что можно запустить сразу же на своем телефоне. В целом, не нужен даже телефон, можно тестировать программы на эмуляторе на компьютере. В первой из двух частей введения в программирование под android, мы напишем простой таймер и начнем изучать android API. Эта статья подразумевает знания у читателя основ java, xml и концепций программирования, но даже если вы не знакомы с этим, не стесняйтесь и присоединяйтесь к нам.


Среда разработки и начало обучения.

Примечание о версиях: Последняя версия android – 4.2 (Jelly Bean), но как вы можете увидеть из этой диаграммы, множество людей все еще не используют ее. Поэтому лучше заниматься разработкой под 2.3 или 4.0 версии платформы, особенно учитывая тот факт, что приложения полностью вперед-совместимы (код, написанный для 2.3, запустится и на 4.2), но не всегда обратно – совместимы. Код написанный в статье должен работать на любой из версий 2.3 или 4.0 .
Быстрый способ установить среду разработки – это скачать Android Bundle. Так же необходима JDK 6 (не JRE).Стоит упомянуть, что Android не совместим с GCJ. Если у вам уже установлен Eclipse или вы хотите использовать другую IDE настройте ее для работы с android как описано здесь.
Итак создадим проект, который назовем Countdown используя Eclipse, для этого:
1. Выберите File > New > Project
2. Выберите Android > Android Application Project и нажмите кнопку Next
3. Установите основные свойства будущего проекта

• Application Name, это имя будет отображаться рядом с иконкой установленного приложения на устройстве.
• Project Name, это поля будет использоваться в качестве имени папки в которой создан проект.
• Package Name, это поле уникально идентифицирует ваше приложения когда вы размещаете его для пользователей. Package Name должно соответствовать правилам наименования пакетов Java.
• Minimum Required SDK показывает минимальную версию android которую поддерживает ваша программа.
• Target SDK показывает высшую версию android на которой ваша программа была протестирована.
• Выберите Theme, которая будет определять внешний вид вашего приложения
• Нажмите Next

4. Еще несколько раз жмем Next и Finish.

Установим Target SDK 4.0.3 и minimum SDK 2.2 и не будем использовать дополнительных компонентов при создании проекта.

Мое первое приложение под Android: Макет приложения.

Наше первое приложение будет показывать обратный отсчет с 10 секунд при нажатии на кнопку. До начала написания кода, давайте разработаем интерфейс, который пользователь будет видеть при запуске приложения. Откроем res/layout/activity_countdown.xml для создания XML макета программа, используя встроенный в eclipse редактор или любой другой наберем это:
<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 приложения.

Мое первое приложение под Android: Код.

Откройте файл CountdownActivity.java в редакторе и приготовьтесь написать немного кода. У вас уже должен быть cгенерированный метод-загрушка OnCreate(). Этот метод всегда создается, и именно в нем начинаются установки и логика приложения ( 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 который мы и использовали. Мы просто настроили его, и таймер отобразился в качестве приватной переменной.
В OnCreate() мы использовали встроенный метод setContentView для того что бы связать наш XML макет с написанным кодом, это один из стандартных методов привязки макета к коду.
Другой метод, который вы заметили в коде это findViewById, который находит изображение кнопки StartButton из XML макета. Для того что мы кнопка работала, когда на нее нажимают необходимо отслеживать ее нажатие, для этого существует метод 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 делает большую часть работы за нас, что естественно хорошо. Если таймер уже запущен, а мы запускаем его снова, таймер отключается, и мы создаем его снова, устанавливая количество миллисекунд для обратного отсчета ( параметр функции showTimer() ) и количество миллисекунд на один интервал отсчета. Этот интервал будет показывать как часто onTick() будет вызываться.
Методы onTick() и onFinish() это подклассы класса CountDownTimer, onTick используется для отрисовки уменьшения значения таймера на секунду на каждый тик. И onFinish() для отображения сообщения о том что обратный отсчет закончен, ну а start() запускает таймер.

Нажмите «Run» в eclipse, и выберите «run this as an Android app» эмулятор с вашим приложением автоматически сгенерируется и запустится. Дополнительную информацию по настройкам эмулятора почитайте в документации.
Поздравляю, вы написали ваше первое приложения для android. Во второй части серии мы более подробно изучим структуру приложения для android и немного улучшим наш таймер, добавим поле ввода для времени таймера, кнопку стоп и меню. Так же посмотрим на запуск полученного приложения на телефоне, что гораздо лучше чем на эмуляторе.

Исходная статья: www.linux.com/learn/docs/683628-android-programming-for-beginners-part-1
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.