- Ш кодим под Android
- Изучаем Android. Первый курс
- День 1. Подготовка
- День 2. Hello Kitty!
- День 3. Щелчок
- День 4. Смена цветов
- День 5. Наташ, ты спишь?
- День 6. На другой экран
- День 7. Ориентация
- День 8. Темы и стили
- День 9. Toast (Kotlin)
- День 10. Шаблон «Basic Activity»
- День 11. Меню
- День 12. PopupMenu
- День 13. Экран
- День 14. Уведомления
- День 15. Конвертер
- День 16. Кто сказал Мяу?
- День 17. Графика
- День 18. Анимация
- День 19. Браузер
- День 20. Клавиатура
- День 21. Локализация
- День 22. Жизненный цикл активности
- День 23. Справочник
- День 24. Камера
- День 25. Настройки
- День 26. Экран настроек
- День 27. Блокнот
- День 28. Карты и StreetView
- День 29. Шаблон Google Maps Activity
- День 30. Broadcast
- День 31. Фрагменты
- День 32. AlertDialog
- День 33. RecyclerView
- День 34. База данных
- День 35. Публикация
- Дополнительные уроки
- Второй курс (закрытая зона)
- Третий курс (закрытая зона)
- Четвёртый курс (закрытая зона)
- 5-й, 6-й, 7-й курс и т.д. (закрытая зона)
- Отзывы
- Примеры тестовых заданий для Android и iOS
- Задача 1. Приложение «Погода»
- Задача 2. Репозитории GitHub
- Задача 3. Пользователи GitHub
- Задача 4. Приложение «Вечеринка»
- Задача 5. Приложение из 1-го экрана
- Задача 6. Приложение «Авто»
- Задача 7. Проверка адреса email
- Пишем своё первое приложение на Android
- Предисловие
- Подготовка к разработке
- Создание Android-приложения
- Запуск и тестирование приложения
- Заключение
- UPD: Устранение возможных ошибок
Ш кодим под Android
Спасибо всем, кто поддержал сайт в прошлом месяце своими пожертвованиями.
Изучаем Android. Первый курс
День 1. Подготовка
Инструменты для разработки под Android. Среда разработки — Android Studio
День 2. Hello Kitty!
Пишем первое приложение для Android Hello Kitty! Поздоровайся с котом
День 3. Щелчок
Щёлчкаем кнопки и пишем полезную программу для подсчёта ворон
День 4. Смена цветов
Управляем фоновым цветом экрана — Светофор
День 5. Наташ, ты спишь?
Создадим интерактивный мем с вечно спящей Наташей
День 6. На другой экран
Часто приложение состоит из нескольких экранов. Как переключаться между ними?
День 7. Ориентация
Телефоны можно вращать — узнаем, как писать программы для подобных случаев
День 8. Темы и стили
Чтобы приложение было стильным, можно применить специальные приёмы
День 9. Toast (Kotlin)
Выводим всплывающие сообщения для привлечения внимания
День 10. Шаблон «Basic Activity»
Базовый пример с применением разных компонентов
День 11. Меню
Мы научимся создавать меню для вызова различных команд
День 12. PopupMenu
Продолжим работу с меню и познакомимся с всплывающим меню
День 13. Экран
Настройки экрана устройства
День 14. Уведомления
Выводим уведомления, которые не исчезнут, пока сам пользователь не закроет их
День 15. Конвертер
Напишем универсальную программу перевода одних единиц в другие — Конвертер «38 попугаев»
День 16. Кто сказал Мяу?
Используем звуковые эффекты, чтобы привлечь внимание
День 17. Графика
Рассмотрим приёмы работы с графикой. У нас есть отдельная категория для графики
День 18. Анимация
Android имеет богатые возможности работы с анимацией
День 19. Браузер
Создадим свой браузер внутри своего приложения
День 20. Клавиатура
Изучаем возможности клавиатуры и аппаратных кнопок
День 21. Локализация
Можно сразу написать одну программу на нескольких языках мира. Это очень просто
День 22. Жизненный цикл активности
Приложение живёт своей жизнью.
День 23. Справочник
Напишем справочник. Полезная информация всегда в цене
День 24. Камера
Чтобы сфотографировать котика, нужно уметь обращаться с камерой
День 25. Настройки
Иногда необходимо сохранять настройки — имена, рекорды, результаты игры и т.п.
День 26. Экран настроек
Создаём экраны настроек, используя готовые шаблоны
День 27. Блокнот
Мы создадим текстовый редактор, в котором можно записывать умные мысли
День 28. Карты и StreetView
Запускаем Карты Google и Просмотр улиц для поиска котов
День 29. Шаблон Google Maps Activity
Интегрируем карты Google в приложение
День 30. Broadcast
Отправляем и принимаем широковещательные сообщения
День 31. Фрагменты
Создаём модульные компоненты для разных типов экранов
День 32. AlertDialog
Выводим диалоговые окна, чтобы узнать реакцию пользователя
День 33. RecyclerView
Универсальные списки для отображения имён котов
День 34. База данных
Современное программирование не может обойтись без базы данных
День 35. Публикация
Публикуем программу в Google Play, чтобы заработать свой первый миллион
Дополнительные уроки
Второй курс (закрытая зона)
Люди, не пишите в письме » Доброго времени суток «. Пишите просто — «Здравствуйте» или «Добрый день (утро, вечер)». Обещаю, что не обижусь, если утром прочитаю ваше письмо со словами «Добрый вечер!». Уважайте русский язык.
Третий курс (закрытая зона)
Четвёртый курс (закрытая зона)
5-й, 6-й, 7-й курс и т.д. (закрытая зона)
Отзывы
Большое спасибо Вам и вашего кота! Я уверен, что много людей благодарят Вам и, наверное это надоело. Я начинающий в Андроид и мне ваш кот очень помог. Никола, Болгария (орфография сохранена)
Источник
Примеры тестовых заданий для Android и iOS
Очень часто при приеме на работу, программиста просят выполнить тестовое задание. Особенно это актуально для Juniour специалистов. В большинстве случаев необходимо создать мини приложение, где продемонстрировать свои навыки проектирования и кодирования.
Ниже представлены реальные примеры тестовых заданий для Android и iOS разработчиков, которые компании давали моим студентам. Далеко не все из них понятные и адекватные, но это то, что в реальности присылают кандидатам.
Задача 1. Приложение «Погода»
На 1-м экране (отображение) должно быть:
- Возможность выбрать город (3-4 города)
- Возможность выбрать сезон года
- В зависимости от п.1 и п.2 — отображение средней температуры за сезон в городе
- В зависимости от п.1 — отображать тип города (малый, средний, большой)
На 2-м экране (настройки) должно быть:
- Управление списком городов (город, тип)
- Управление температурой по месяцам
Приложение на первом экране должно отображать информацию, введенную пользователем на втором экране. Например, на втором экране вводим: город «Минск», тип «средний», температура июнь «23», июль «28», август «25». На первом экране в списке городов, должен отобразится Минск, тип «средний» и температура за сезон «лето» = 25,3 (среднее арифметическое 3-х месяцев).
Обязательно использовать паттерны:
- Lazy singleton
- Factory: получать тип города в зависимости от его названия
- Decorator: При запросе средней температуры за сезон в городе — должна быть возможность получить строку для логирования
- Observer: Дополнительно выводить сообщение, о температуре, через Snackbar
- Strategy: В зависимости от стратегии — выводить температуру в необходимом формате (градус Цельсия, градус Фаренгейта, Кельвин)
Условия:
- Без использования сети
- БД: SQLite
- Мы ожидаем выполнения задания без применения сторонних библиотек, кроме официальных (таких как AndroidX, Android Architectural Components, CoreData и т.д.)
- Результат выложить на Github.com
Задача 2. Репозитории GitHub
- При помощи GitHub API отобразить список репозиториев у организации xxx (github.com/xxx)
- Дизайн — полностью на ваше усмотрение
- Код разместить на GitHub и прислать нам ссылку
Обязательно:
- Код на Kotlin/Swift
- Задействовать RxJava/RxSwift
- Покрыть юнит-тестами (UI не стоит)
Желательно:
- Обработка сетевых ошибок
- Поиск репозиториев в рамках организации по названию (просто фильтр списка подойдёт)
- MVI, MVVM, MVP — на ваше усмотрение, будет интересно посмотреть, но лучше без сторонних библиотек
Задача 3. Пользователи GitHub
Главный экран:
- Users (список всех Github пользователей). Использовать API https://developer.github.com/v3/users/#get-all-users
- В элементе списка отрисовать avatar, login (title), id (subtitle)
- По нажатию на элемент списка реализовать переход на UserDetails
- Реализовать pagination и Pull-to-refresh
UserDetails (экран с информацией о пользователе):
- Использовать API https://developer.github.com/v3/users/#get-a-single-user
- Поля: Avatar, Name, Email, Organization (если есть), Following count, Followers count, Дата создания аккаунта
Требования:
- Структурированный код (архитектурный паттерн на усмотрение кандидата)
- Язык Java/Kotlin/Swift
- Код поместить в репозиторий на GitHub/Bitbucket/GitLab
- Неоднозначности задания трактуются на усмотрение разработчика
Задача 4. Приложение «Вечеринка»
На экране располагаются:
- Картинка (загружается по URL)
- Название вечеринки
- Имя пригласившего
- Фото пригласившего (извлекается по URL)
- Список гостей с фото, которые идут вместе с текущим пользователем. Фото загружаются по URL
Все данные должны загружаться из файла в формате JSON, зашитого в ресурсах приложения.
Критерии проверки: корректность работы: отсутствие крашей и багов, соответствие требованиям, код как для продакшена, читабельный и аккуратный, с разделением обязанностей между классами, код должен легко модифицироваться, из учета, что новые требования могут быть выставлены каждую неделю, при использовании RecyclerView нежелательно использовать дополнительные библиотеки.
Задача 5. Приложение из 1-го экрана
- Необходимо создать приложение состоящее из 1 экрана
- Реализовать данное задание с применением RxJava/RxSwift, любого DI (например Dagger 2) и MVP.
Реализовать:
- База данных 5 полей и заполнить любыми данными
- Вывод в активити или фрагмент в виде списка
- Live search по базе данных
- Реализовать сортировку, любой параметр
Задача 6. Приложение «Авто»
Приложение, должно иметь следующие функции:
- Отображение списка автомобилей с характеристиками (10-12 автомобилей, 3 производителя, 1-3 марки у каждого производителя)
- Добавление нового автомобиля
- Редактирование деталей автомобиля
Желательно:
- Фильтрация по производителю и марке
- Сортировка по цене
Задача 7. Проверка адреса email
Создать хороший UX для пользователей, вводящих адрес электронной почты и пароль при регистрации в приложении.
Требования:
- Проверка формата электронной почты. Пример: [email protected] не является действительным адресом электронной почты
- Пользовательский интерфейс должен показывать, действителен или нет адрес электронной почты. При необходимости интерфейс должен указать, что не так с адресом
- Автозаполнение и проверка доступности домена. Пользователи часто опечатываются при вводе адреса. Например, указывают неправильно доменное имя (gmail.con вместо gmail.com)
- Проверка пароля. Нет ограничения на вводимые символы. Есть ограничение минимальной и максимальной длины
- При необходимости, интерфейс должен указать, что неправильно
- Проверить, что заполнены все поля, и указать, какое именно не заполнено
Для автозаполнения необходимо:
- Проверить существование введённого домена
- Указать, что неправильно в введённом имени
- Предложить Автозаполнение доменного имени самыми вероятными и популярными доменными именами. Пример: если пользователь вводит «[email protected]», то продолжениями могут быть «[email protected]», «[email protected]» и т.д. Если пользователь уточняет «[email protected]», то продолжениями могут быть популярные домены, начинающиеся с «g». Например: «[email protected]», «[email protected]»
Источник
Пишем своё первое приложение на Android
Предисловие
Подготовка к разработке
Установка среды разработки Eclipse
Тут всё просто. Идём в раздел Downloads на официальном сайте и качаем версию Classic. Далее просто распакуйте архив, куда вам хочется, я же решил это сделать в почетную директорию C:\Eclipse
Установка ADT плагина к Eclipse
Запускаем Eclipse, и открываем диалог установки плагина через меню Help → Install new software. В поле Work with вписываем адрес загрузки плагина dl-ssl.google.com/android/eclipse (если не получилось, то плагин можно скачать и установить вручную по ссылке http://developer.android.com/sdk/eclipse-adt.html), далее в таблице ниже появится Developer Tools, отмечаем его и идем далее.
После успешной установки, можно перезапустить среду Eclipse.
Установка среды для Java: JDK и JRE
Если у вас еще не установлены Java Development Kit (JDK) и Java Runtime Environment (JRE), то их необходимо установить. Сделать это можно на сайте Oracle. Скачайте и установите JDK и JRE.
Установка Android SDK
Дело осталось за малым — это скачать и установить свежий Android SDK. Это делается на сайте для Android разработчиков. Я лично установил SDK опять-таки в почётную директорию C:\Android. После этого необходимо добавить платформы и прочие дополнительные элементы SDK. Я добавил все доступные версии, так как планирую делать приложения и для ранних платформ, а также USB-драйвер и примеры приложений.
Подготовка к разработке завершена. Теперь следующий этап — создание приложения.
Создание Android-приложения
Перед тем как создать своё первое приложение, можно создать виртуальное Android-устройство, чтобы быстро тестировать на нём свой свеженаписанный софт. Вначале я хочу сказать вам несколько слов по поводу Android Virtual Device (AVD). Это виртуальный смартфон с ОС Android, на котором вы с легкостью сможете запускать созданную вами программу. Как можно заметить, преимущество Android Virtual Device состоит в том, что наглядно можно увидеть как будет работать Ваша программа на разных смартфонах с Android, а не покупать весь модельный ряд и тестировать приложение на каждом из них.
Приступим к созданию виртуального устройства Android. Следуем в меню по пути Window → Android SDK and AVD Manager.
Выбираем New в правой части окна, в появившемся окне вписываем имя виртуального устройства, платформу (допустим Android 2.1), размер карты памяти (допустим 512 Mb), тип дисплея (допустим HVGA). Затем жмем внизу на кнопку Create AVD.
Теперь создадим проект. Для этого идем по пути в меню File → New → Other, в появившемся списке Android → Android Project.
В качестве примера расскажу о разработке одной моей простейшей программы UfaTermometr, показывающей текущую температуру с датчиков, расположенных на одном из объектов местной энерго-компании.
После создания проекта, слева вы увидите дерево директорий. Перво-наперво загрузим свою иконку приложения, а точнее 3 иконки под разные варианты. В папку drawable-hdpi грузим png-картинку с прозрачным фоном размером в 72×72, в drawable-mdpi соответственно 48×48 и в drawable-ldpi самую маленькую размером 36×36. Делать это можно простым перетаскиванием файлов прямо на дерево. Следующим шагом будут элементы управления. В моей программе было необходимо всего три элемента интерфейса: ImageView (просто картинка логотип приложения), Button (обновить значение температуры) и TextView (вывод значения температуры). Все эти элементы управления нужно описать в специальном xml-файле. В дереве он расположен по адресу res → layout → main.xml. Во-многом разметка элементов управления сходна с вёрсткой веб-страниц, тут есть и padding, и margin, и аналог align. Код main.xml моего приложения:
xml version =«1.0» encoding =«utf-8» ? >
LinearLayout xmlns:android =«schemas.android.com/apk/res/android»
android:orientation =«vertical»
android:layout_width =«fill_parent»
android:layout_height =«fill_parent»
>
ImageView android:layout_width =«fill_parent»
android:layout_height =«wrap_content»
android:src =»@drawable/droid»
android:layout_gravity =«center_horizontal|center»
android:layout_margin =«0px»
/>
Button
android:id =»@+id/refrbutton»
android:layout_width =«wrap_content»
android:layout_height =«wrap_content»
android:gravity =«center_horizontal»
android:layout_gravity =«center_horizontal|center»
android:textSize =«30px»
android:padding =«20px»
android:layout_marginTop =«10dip»
android:text =«Обновить»
/>
TextView
android:layout_width =«fill_parent»
android:layout_height =«wrap_content»
android:text =». »
android:textSize =«100dip»
android:gravity =«center_horizontal»
android:id =»@+id/temper»
android:textColor =»#EEE3C4″
/>
LinearLayout >
Подробно останавливаться на разметке элементов управления не буду, так как это всё достаточно подробно описано в мануале и вообще интуитивно понятно, особенно тому, кто имел дело с html/css-вёрсткой и/или разработкой в какой-либо визуальной среде (например, Delphi). Единственное, обратите внимание как я загрузил произвольное изображение в ImageView. В поле src указывается путь, начинающийся с символа @ и далее указываете адрес по дереву. В папке res я заблаговременно создал подпапку drawable и «закинул» туда логотип, а затем просто указал ImageView путь. Легко? По мне так очень.
Непосредственно код приложения располагается по пути src → «ваше название package» → «название приложения».java.
По-умолчанию создается «болванка» главного класса и от неё уже дальше можно плясать. Не буду останавливаться на тонкостях такого простого кода как у меня в примере, но поясню, что логика работы объясняется тремя простыми шагами:
- Загрузить HTML-страницу со значениями температуры
- С помощью регулярок «вытащить» температуру
- Показать в TextView значение температуры
Заметьте, что когда приложению требуются какие-то системные разрешения, нужно указывать их в манифесте AndroidManifest.xml. В данном конкретном случае мы используем подключение к Интернет, соответственно добавляем строчку в указанный выше xml-файл.
Собственно сам код, реализующий указанную выше логику работы:
package app.test.ufatermometr;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.*;
public class UfaTermometr extends Activity
<
@Override
public void onCreate(Bundle savedInstanceState)
<
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button button = (Button) findViewById(R.id.refrbutton);
button.setOnClickListener( new Button.OnClickListener() <
public void onClick(View v) // клик на кнопку
<
RefreshTemper();
>
>);
RefreshTemper(); // при запуске грузим температуру сразу
>;
//—————————————————————-
public String GetTemper(String urlsite) // фукция загрузки температуры
<
String matchtemper = «» ;
try
<
// загрузка страницы
URL url = new URL(urlsite);
URLConnection conn = url.openConnection();
InputStreamReader rd = new InputStreamReader(conn.getInputStream());
StringBuilder allpage = new StringBuilder();
int n = 0;
char [] buffer = new char [40000];
while (n >= 0)
<
n = rd.read(buffer, 0, buffer.length);
if (n > 0)
<
allpage.append(buffer, 0, n);
>
>
// работаем с регулярками
final Pattern pattern = Pattern.compile
( » [^-+0]+([-+0-9]+)[^ [^(а-яА-ЯёЁa-zA-Z0-9)]+([а-яА-ЯёЁa-zA-Z ]+)» );
Matcher matcher = pattern.matcher(allpage.toString());
if (matcher.find())
<
matchtemper = matcher.group(1);
>
return matchtemper;
>
catch (Exception e)
<
>
return matchtemper;
>;
//—————————————————————-
public void RefreshTemper()
<
final TextView tTemper = (TextView) findViewById(R.id.temper);
String bashtemp = «» ;
bashtemp = GetTemper( «be.bashkirenergo.ru/weather/ufa» );
tTemper.setText(bashtemp.concat( «°» )); // отображение температуры
>;
>
После того как приложение написано, можно уже его отлаживать и тестировать.
Запуск и тестирование приложения
Вспоминаем про нашу виртуальную машину и запускаем привычной кнопкой или менюшкой Run → Run
Вот такую картину мы можем затем созерцать:
Теперь, если вы хотите поделиться приложением, то нужно собрать apk-файл. Для этого воспользуемся меню File → Export и в списке Android → Export Android application. Далее выберите проект, затем создайте хранилище ключей keystore и ключ key, для этого нужно будет заполнить несколько полей с всякого рода справочной информацией. Получившийся apk-файл можно распространять и даже выложить в Android Market, но для этого придется зарегистрироваться и уплатить $25, что в общем-то немного, особенно для стоящего проекта. Но регистрация в Маркете, пожалуй, тема отдельной статьи.
Заключение
В заключении хотелось бы сказать, что безусловно разработка приложений для Android приятна, достаточно проста и интересна. Конечно, мы рассмотрели лишь верхушку айсберга, но я надеюсь, что в умах тех из вас, кто раньше не пробовал делать ничего подобного «загорелась лампочка» и вполне возможно, что когда-то вашим приложением будут пользоваться миллионы.
Источники, ссылки
UPD: Устранение возможных ошибок
ERROR: Unable to open class file C:\workspace\Test\gen\com\example\test\R.java: No such file or directory
emulator: ERROR: no search paths found in this AVD’s configuration. Weird, the AVD’s config.ini file is malformed. Try re-creating it
— это следствие того, что у Вас кириллица в имени пользователя. Решается: идем в Компьютер → Свойства системы → Дополнительные параметры системы → Переменные среды. Создаем новую переменную с именем ANDROID_SDK_HOME и значением – путем, где находится папка AVD (например, C:\Android\). Создаем, далее ищем там же переменную Path, открываем и в поле значений через точку с запятой добавляем путь до папки tools Android SDK (например, C:\Android\tools). Сохраняем. Запускаем Eclipse, запускаем программу.
UPD 05.10.2011, во что превратилось данное приложение можно лицезреть на следующих скринах:
Это результат развития той самой болванки, которая выше дана в качестве примера.
Разработка и создание Android-приложений
Создание сайтов
Источник