Как создать свое первое приложение для Android. Пошаговая инструкция для новичков

Android приложения прочно вошли в нашу жизнь. Мы каждый день ими пользуемся: картами, социальными сетями, мессенджерами, браузерами. Но каждый опытный пользователь смартфона на Android хоть раз задумывался о создании своего приложения. Сложился стереотип, что это очень сложно и нужно долго учить программирование, чтобы что-то качественное написать. Однако Google постоянно совершенствует свои инструменты разработки, делая их проще и удобнее. Сегодня мы создадим самое простое приложение для Android и запустим его на смартфоне.

Приложения для Android создаются на языке программирования Java. Сейчас как альтернатива Java продвигается еще и относительно новый более простой язык Kotlin (язык назван в честь острова? на котором расположен город Кронштадт). Наш пример будет на Java.

Сперва мы проверим, установлен ли на вашем компьютере (под управлением Windows) JDK. Java Development Kit – это комплект разработчика приложений от компании Oracle. Без него среда разработки не сможет правильно функционировать.

Для этого нажмите на клавиатуре Win + R. Введите cmd и нажмите Enter. Откроется командная строка. Далее в консоли необходимо набрать:

java -version

Скорее всего, вы увидите версию Java:

Это значит, что у вас уже установлен JDK. В противном случае его необходимо скачать (150 Мб).

После установки JDK переходим к основному инструменту разработки для ОС Android – Android Studio. Загрузить его можно здесь (944 Мб).

Android Studio – это свободно распространяемая среда разработки от Google. Это такой огромный комбайн для разработки приложений, в который вошли различные инструменты для тестирования, сборки приложений, а также шаблоны, удобный редактор макетов и многое другое. Android Studio постоянно обновляется, как и его многочисленные компоненты.

Версии Android Studio есть не только под Windows, но и для Mac OS и Linux. Системные требования для Android Studio: Windows 7/8/10, 3 Гб оперативной памяти минимум, 8 Гб RAM рекомендовано, 4 Гб на жестком диске.

Итак, вы скачали инсталлятор Android Studio.

Запускаем его.

Жмем Next, выбираем путь для установки. Настройки желательно не менять.

 

Затем запустится мастер настройки Android Studio. Здесь можно выбрать цветовую тему среды разработки, скачать дополнительные файлы. Тип установки выбираем стандартный.

После скачивания необходимых компонентов будет предложено выбрать тип вашего проекта. Выбираем Empty Activity и кликаем Next.

На следующем экране даем название проекту и выбираем, начиная с какой версии Android будет работать ваше приложение. Лучше всего выбрать – c Android 4.0.3 – так наше приложение будет работать на максимальном количестве устройств. Стоит отметить, что Android Studio настолько универсальна, что позволяет создавать приложения не только для смартфонов, но и для смарт-часов и телевизоров!

Далее у нас открывается основное окно Android Studio. Слева мы видим несколько разделов. Это структура нашего проекта. В папке manifests находится файл AndroidManifest.xml, который отвечает за информацию о приложении, импортируемые библиотеки, компоненты и другие параметры. В папке java находится непосредственно код (файл MainActivity в папке com.example.myapplication). В папке res находятся ресурсы приложения – кнопки, файлы, которые определяют дизайн интерфейса (например, activity_main.xml).

Acitivity – это отдельный экран, с которым взаимодействует пользователь. Примеры: экран с фото, набор номера, ввод текста. У нас будет один Acitivity (экран). Поэтому сразу идем по пути appsrcmainreslayout и открываем файл activity_main.xml. Переключаемся в режим Design.

Выбираем раздел Button и перетягиваем его на экран приложения. У нас появилась кнопка. Вводим текст на ней (kv.by).

Чтобы увеличить размер шрифта – переключаемся в режим Text и в коде в разделе Button добавляем такую строчку:

android:textSize="25sp"

В режиме Design жмем правой кнопкой мыши и выбираем Constrain, далее выбираем все пункты по очереди. Это «привяжет» вашу кнопку, чтобы она не могла сместиться.

Далее редактируем надпись Hello, World – меняем на свою собственную («Мое первое приложение на Android»).

Следующий этап – добавляем картинку. Сначала мы должны ее добавить в проект. Картинка будет к примеру, эта:

Скачайте ее и перетяните прямо в проект в папку res – drawable. Она добавится в проект. Теперь открываем activity_main.xml и переключаемся в режим Design. Выбираем Common – ImageView. Перетягиваем на наш экран. Откроется окно выбора картинки. Переходим в раздел Project. Там видим логотип kv.by. Выбираем его и помещаем в середине окна нашего приложения. На картинке также применяем Constrain.

В итоге у вас должен получится такой код activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="145dp"
        android:layout_height="53dp"
        android:layout_marginTop="262dp"
        android:layout_marginBottom="416dp"
        android:gravity="center"
        android:text="Мое первое приложение на Android"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.552"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="199dp"
        android:layout_height="113dp"
        android:text="kv.by"
        android:textSize="25sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="114dp" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="216dp"
        android:layout_height="172dp"
        android:layout_marginStart="55dp"
        android:layout_marginLeft="55dp"
        android:layout_marginTop="380dp"
        android:layout_marginEnd="28dp"
        android:layout_marginRight="28dp"
        android:layout_marginBottom="51dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/logo" />
    </android.support.constraint.ConstraintLayout

И, соответственно, такой код MainActivity (в папке com.example.myapplication):

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="App kv.by"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

А теперь пора проверить, все ли работает. Проверим на виртуальном смартфоне прямо у вас на компьютере.

Жмем вверху Tools – AVD Manager – Create Virtual Device.

Мы создаем виртуальное устройство (смартфон) под управлением Android. Выбираем Nexus 5X. Скачиваем сам эмулятор Android. Жмем Next. После всех манипуляций у вас в списке виртуальных устройств должен появиться «смартфон» Nexus 5X.

Теперь запустим приложение на виртуальном смартфоне – RunRun app.

Появится окно с выбором, на чем необходимо его протестировать. Разумеется, выберем Nexus 5X.

 

На смартфоне открываем список приложений и ищем там App kv.by

Вот что получилось:

Работает! Приложение готово. Теперь можно и на ваш реальный смартфон его загрузить.

Чтобы установить на смартфон наше первое приложение – нужно создать apk-файл. APK – Android Package Kit, это такой незашифрованный zip-архив, в котором содержатся скомпилированный код приложения, файлы ресурсов, файлы манифеста и другая информация. Именно в формате apk хранятся файлы в Google Play, из которого мы скачиваем приложения.

Поскольку они не зашифрованы, картинки и некоторую другую информацию можно легко извлечь из любых приложений. Для этого есть ресурс APKMirror.com. На нем можно скачать apk-файл нужного приложения из Google Play. Затем переименовать его в *.zip и открыть любым архиватором. Там можно увидеть структуру приложения, иконки, графику. Например, вот как выглядит приложение WhatsApp изнутри:

Apk-файлы можно скачивать себе на смартфон или обмениваться ими. Либо установить в качестве приложения. Это удобно и дает некоторую свободу.

Для того, чтобы установить apk на вашем смартфоне, нужно сначала это разрешить. Идем в Настройки – Приложения – Особые права доступа – Установка неизв. приложений и там выбираем «Разрешено» для вашего файлового менеджера (например, Total Commander).

Итак, наша задача сделать apk-файл из кода, который мы написали. Для этого в Android Studio выбираем Build – Build Bundle / APK – Build APK. Запустится скрипт для создания apk. В конце вам предложат открыть папку в которой будет apk-файл. Далее необходимо подключить смартфон к компьютеру и скопировать полученный apk-файл в память телефона. Затем уже на смартфоне открыть файловым менеджером папку с файлом и установить его. Теперь у вас собственное приложение в смартфоне!

Если вас заинтересовала эта тема – вы можете ознакомиться с исходным кодом некоторых простейших приложений на GitHub. Например, там есть галерея и файловый менеджер. Вы можете редактировать их код под собственные нужды. Много информации о разработке под Android вы также можете найти здесь.

 

 
Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 5
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Читайте также

 

Комментарии

Страницы

Аватар пользователя mike

Некоторые приложения имеют активити дополнительных настроек, влияющих на графику главной активити. Эти настройки вступают они в силу по событию onCreate главной активити, которое недоступно при возврате из активити настроек -- так устроен жизненный цикл активити. Следовательно, надо рестартовать приложение.

Пусть имеем готовый метод doRestart(this), рестартующий приложение из главной активити. Не пытайтесь напрямую пристроить этот метод в обработчики событий onStart, onRestart, onResume главной активити -- приложение будет падать. Рестарт надо делать через хендлер рестарта.

Шаг 1. В классе главной активити объявляем статический буль retFromOptionsActivity и в конструкторе сбрасываем его в false.

Шаг 2. В классе главной активити объявляем статический хендлер gotoAppRestartHandler и в конструкторе сбрасываем его в null.

Шаг 3. В активити допнаcтроек при возврате из неё взводим буль retFromOptionsActivity в true.

Шаг 4. В главную активити добавляем коллбэк срабатывания хендлера рестарта: private final Runnable gotoAppRestart = this::callAppRestart; и обработчик этого коллбэка:

     private void callAppRestart() {
        gotoAppRestartHandler.removeCallbacks(gotoAppRestart);  // убрать коллбэк
        retFromOptionsActivity = false;    // сброс признака возврата из активити опций 
        gotoAppRestartHandler = null;     // убить хендлер рестарта
        doRestart(this);                        // рестарт

Шаг 5. В главной активити в конце обработчика события onStart() проверяем буль retFromOptionsActivity, чтобы удостовериться, что мы вернулись именно из активити настроек:

if (retFromOptionsActivity ){ 
            gotoAppRestartHandler = new Handler(); // созд. хендлер рестарта
            gotoAppRestartHandler.post(gotoAppRestart); // запуск этого хендлера
            }

Реализация метода doRestart выполняется через менеджер пакетов, получение из него лончерной активити и создания ждущего намерения стартовать её. Для пуска ждущего намерения используется AlarmManager, срабатывающий через неск. сотен мс после убийства приложения с помощью System.exit(0).

Может, кому пригодится.

 

 

Аватар пользователя mike

Не нравится, что в новом дизайне студии убрали кнопки перемещения по коду проекта, из-за чего приходится отрываться для работы с CtrlAlt + стрелки. Возможно, эти кнопки можно как-то вытянуть в контролбар, но не знаю как...

Аватар пользователя mike

Что в UX-дизайне предпочесть:  кнопки со значками или кнопки с текстом? Мой ответ: ни то, ни другое. Кнопки со значками предполагают изучение их методом тыка, кнопки с текстом очень громоздки. Лучше пару-тройку плавающих кнопок, каждая из которых имеет последующий предупреждающий диалог (AlertDialog).  Например, плавающая кнопка "PDF". Жмём, открывается диалог: "PDF-отчёты, операция:" и текстовые опции: "Открыть", "Записать", "Отправить".  Тексты могут быть и поподробнее. Диалог отменяется кликом по экрану в любом месте вне диалога. При таком подходе приложение как бы учит юзера обращению с приложением, и экран не загромождается сонмом кнопок, назначение которых изначально не известно или не понятно.

Класс стандартного алерт-диалога легко расширить своими опциями. Но не следует увлекаться красивостями, которые так и прут у многих дизайнеров. 

+1
Аватар пользователя mike

Оочень любят разработчики писать приложения прогнозов погоды, ну оочченнь! В качестве тренировки -- да, можно и полезно. 

Вот поставил одно такое приложение, девбайинфо рекламировал, писал взахлёб, как трое релоцированных разработчиков написали очередное. Красивая портянка! И так и эдак крутить можно, а уж рюшечек -- как на барбоске блох. Как положено -- реклама и платное доп. Требует, ессно, геолокацию. Включил. Одно плохо: врёт безбожно! За окном +21 Цельсия, у них -- 17,5. И пердолит на экран извещение, о котором не просил.  Собирает, говорят, инфу отовсюду. Отовсюду, но, думаю, только не из местной МСТ. Вот именно так и можно облажаться. 

Аватар пользователя mike

Пропатчил "жирафа" очередным обновлением. Студия потяжелела и грузится дольше. Но радует отладчик: прежние баги исчезли, а новые пока не обнаружились. Отлично работают эмуляторы девайсов с низкими версиями ОС -- даже быстрее, чем реальные устройства. Однако не радует, что время включения режима дизайна заметно увеличилось. Похоже, что мощности i7 8700 уже маловато, и скоро придётся покупать что-нибудь помощнее. Или отключать все  малонужные службы. Памяти 24 Гб пока хватает, если, конечно, не включать сразу пяток и больше эмуляторов. Короче, у кого i3 или даже i5 с 8 Гб ОЗУ -- проектирование через терпение... 

Аватар пользователя mike

Что меня больше всего раздражает в студии? Недоделанность. Бывает, хочешь изменить, например, цвет в векторной картинке, щёлкаешь по иконке слева от xml-кода экрана -- появляется список xml-файлов иконок, выбираешь, жмёшь "brows" --  дудки: файл не открывается! Ручками идёшь в список файлов проекта, ищешь файл ресурса, открываешь и уж там меняешь код параметра tint. После этого собираешь проект и смотришь что получилось.

Или, например, открываешь split -- это когда на экране и xml-код экрана, и графика, щёлкаешь по графическому виджету, но курсор в xml-коде не становится на код этого виджета.

Или, положим, один виджет затеняет другой в дизайне. Студия предлагает инструментальное управление, чтобы убрать затеняющий виджет (на конечную сборку не влияет), раньше работало, теперь после нового дизайна студии не работает...

Или меняешь гравити, а изменение не применяется, если после изменения не тиснул  энтер.

Или...

Много ещё чего.

Аватар пользователя mike

Особенно раздражает, что поиск выделения по проекту Ctr+Shift+F открывает окно списка результатов поиска, но границы этого окна практически не таскаются по экрану. Окно это мышью стандартно не сворачивается и не закрывается, кроме как через клавишу Esc в отличие от др. окон студии. Правда, его можно таскать по экрану, но, задвинув на задворки, часто забываешь, что оно уже существует, и поэтому новый поиск с помощью Ctr+Shift+F визуально игнорируется, хотя студия на самом деле ищет, что задано.

Аватар пользователя mike

Вообще-то андроид-студия позволяет на Котлине многое создавать помимо нативных приложений под андроид: мультиплатформенные десктопные приложения, приложения для айфонов, веб-приложения, сайты.

Стоит ли осваивать Котлин?  IMHO, да. Хотя синтаксис его мне не очень нравится -- привык к плюсам и к джаве.

Аватар пользователя mike

Пропатчил жирафа вторым выпуском патчей. Полёт нормальный. 

Если сложный дизайн активити, то студия не спешит его показывать. Чтобы ускорить, надо указать для какого именно девайса вы хотите его увидеть.

Для показа данных в графике я использую активные ресайклеры с расчётами на лету. Трудность возникла, когда потребовалось скроллить в 2D только часть данных, принадлежащих, например, только к одному столбцу.  В инете есть решения, но там сколлится не весь столбец. :(

Страницы