SlideShare a Scribd company logo
Введение в Android-разработку
Олег Годовых
Особенности платформы Android
Достоинства
Широкие возможности платформы
Открытость
Интеграция с чужими приложениями
Переиспользование библиотек
Java
Недостатки
Необходимость поддержки различных устройств
Проблемы с памятью
2 Введение в Android-разработку
Архитектура Android
3 Введение в Android-разработку
Особенности приложения
Приложение ↔ название пакета
"my.favorite.package.application"
Приложение ↔ пользователь Linux
1 видимое приложение
Жизненный цикл приложения ̸= жизненный цикл процесса
Управление жизненным циклом приложения и все View в
UIThread
4 Введение в Android-разработку
Строительные блоки приложения
Activity
Service
ContentProvider
BroadcastReceiver
Intent
5 Введение в Android-разработку
AndroidManifest.xml
определяет имя Java-пакета приложения = уникальный
идентификатор для приложения.
описывает компоненты приложения: Activity, Service,
BroadcastReceiver, ContentProvider. Определяет имена
классов, реализующие каждый из компонентов и оглашает
их возможности (например, какие Intent-сообщения они
могут обрабатывать). Эти объявления позволяют системе
Android знать, какие компоненты и при каких условиях
могут быть запущены.
объявляет разрешения, которые приложение должно
иметь для доступа к защищённым частям API и
взаимодействия с другими приложениями.
объявляет минимальный уровень Android API, который
требует приложение.
и другие...
6 Введение в Android-разработку
Структура проекта (IDEA)
1. Папка с проектом IntelliJ IDEA
2. Папка с исходными файлами
3. Activity
4. Папка с различными ресурсами
5. Разметка главного экрана
6. Папка со значениями (строки,
числа)
7. Изображения
8. Автоматически сгенерированная
папка с данными о ресурсах
9. Класс с данными о ресурсах для
использования в коде
7 Введение в Android-разработку
Структура проекта (Android Studio)
Вместо bin — build, там всё
сгенерированное
Папка с исходными файлами
теперь содержит и ресурсы
Файлы настройки Gradle
Многие настройки вынесены в
Gradle
Библиотеки можно как
подкладывать руками, так и
подгружать автоматически
8 Введение в Android-разработку
Ресурсы
Типы ресурсов
drawable
.png, .jpg, .gif
.9.png
.xml
shape
selector
layout
anim
values
strings
dimensions
colors
arrays
xml
raw
Селекторы ресурсов
Ориентация
land, port
Плотность точек
ldpi, mdpi, hdpi, xhdpi,
nodpi
Размер экрана
small, normal, large,
xlarge
Версия Android
v3, ..., v15
Язык
en, fr, ru, ...
9 Введение в Android-разработку
Ресурсы R.java
package my.favorite;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int message_edit_text=0x7f050000;
public static final int message_show_text_view=0x7f050003;
public static final int send_button=0x7f050002;
public static final int show_button=0x7f050001;
}
public static final class layout {
public static final int message_input_layout=0x7f030000;
public static final int message_show_layout=0x7f030001;
}
public static final class string {
public static final int app_name=0x7f040003;
public static final int message_input_message_hint=0x7f040000;
public static final int message_input_send_button=0x7f040002;
public static final int message_input_show_button=0x7f040001;
}
}
10 Введение в Android-разработку
Строковые ресурсы
res/values/strings.xml
<string name="simple_string">It is a simple string</string>
<string name="args_string">It is a string with integer arg: %1$d</string>
res/values-ru/strings.xml
<string name="simple_string">Это обычная строка</string>
<string name="args_string">Это строка с целочисленным аргументом:
%1$d</string>
src/my/favorite/TestActivity.java
TextView simpleText = (TextView)findViewById(R.id.text_view);
simpleText.setText(getString(R.string.simple_string));
TextView argsText = (TextView)findViewById(R.id.text_view);
simpleText.setText(getString(R.string.args_string, 999));
11 Введение в Android-разработку
Жизненный цикл Activity
12 Введение в Android-разработку
Жизненный цикл Activity
13 Введение в Android-разработку
Жизненный цикл Activity
public class TestActivity extends Activity {
private static final String TAG = TestActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
setContentView(R.layout.main);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.d(TAG, "onRestoreInstanceState");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.d(TAG, "onSaveInstanceState");
}
@Override
protected void onDestroy() {
Log.d(TAG, "onDestroy");
super.onDestroy();
}
// ...
}
14 Введение в Android-разработку
Fragment
Доступны с API 11 (Android 3.0)
Портированы для старых версий в Android Support library
Позволяют объединить несколько экранов в одном.
Существуют только как часть Activity.
Для телефонов: Для планшетов:
15 Введение в Android-разработку
Жизненный цикл Fragment
Привязано к жизненному
циклу Activity
Добавлены методы по
более тонкому
оправлению состоянием
16 Введение в Android-разработку
Пример использования Fragment
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.realtabcontent, new MyFragment());
fragmentTransaction.commit();
}
});
17 Введение в Android-разработку
Полезные ссылки
http://developer.android.com
http://android-developers.blogspot.com
http://startandroid.ru
18 Введение в Android-разработку

More Related Content

Viewers also liked

Lec 12
Lec 12Lec 12
Canvas
CanvasCanvas
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
Noveo
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
Noveo
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
Noveo
 
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в DelphiWebinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Denis Vasilyev
 
Android - 10 - Graphics
Android - 10 - GraphicsAndroid - 10 - Graphics
Android - 10 - Graphics
Noveo
 
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)Антон Звонов
 
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложенийWebinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Denis Vasilyev
 
Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)
Noveo
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
Noveo
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
Denis Vasilyev
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Noveo
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Noveo
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Denis Vasilyev
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Noveo
 
Lec 9
Lec 9Lec 9
Lec 13
Lec 13Lec 13
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)
Noveo
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Noveo
 

Viewers also liked (20)

Lec 12
Lec 12Lec 12
Lec 12
 
Canvas
CanvasCanvas
Canvas
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
 
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в DelphiWebinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
 
Android - 10 - Graphics
Android - 10 - GraphicsAndroid - 10 - Graphics
Android - 10 - Graphics
 
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
 
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложенийWebinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
 
Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
 
Lec 9
Lec 9Lec 9
Lec 9
 
Lec 13
Lec 13Lec 13
Lec 13
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 

Similar to Android - 05 - Android basics

Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
Noveo
 
Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1
Empatika
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
metaform
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
GlobalLogic Ukraine
 
Лекция 4
Лекция 4Лекция 4
Лекция 4itc73
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
Pavel Tsukanov
 
чмв лабораторная №3
чмв   лабораторная №3чмв   лабораторная №3
чмв лабораторная №3student_kai
 
Что нового в Android M Developer Preview 1
Что нового в Android M Developer Preview 1Что нового в Android M Developer Preview 1
Что нового в Android M Developer Preview 1
Kirill Danilov
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
Igor Shkulipa
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
Technopark
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Sergey Platonov
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
GoSharp
 
Что нового в Android M?
Что нового в Android M?Что нового в Android M?
Что нового в Android M?
HackDay_Russia
 
Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Dmytro Mindra
 
введение в Laravel 5
введение в Laravel 5введение в Laravel 5
введение в Laravel 5
Аскар Рымбаев
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
DataArt
 
190
190190

Similar to Android - 05 - Android basics (20)

Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
 
Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Tdd php
Tdd phpTdd php
Tdd php
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
чмв лабораторная №3
чмв   лабораторная №3чмв   лабораторная №3
чмв лабораторная №3
 
Что нового в Android M Developer Preview 1
Что нового в Android M Developer Preview 1Что нового в Android M Developer Preview 1
Что нового в Android M Developer Preview 1
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
Что нового в Android M?
Что нового в Android M?Что нового в Android M?
Что нового в Android M?
 
Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011
 
введение в Laravel 5
введение в Laravel 5введение в Laravel 5
введение в Laravel 5
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
 
190
190190
190
 
Kharkov
KharkovKharkov
Kharkov
 

More from Noveo

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
Noveo
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
Noveo
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
Noveo
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Noveo
 
Yii2
Yii2Yii2
Yii2
Noveo
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
Noveo
 
Rest
RestRest
Rest
Noveo
 
PHP basic
PHP basicPHP basic
PHP basic
Noveo
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
Noveo
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
Noveo
 
MySQL
MySQLMySQL
MySQL
Noveo
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
Noveo
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
Noveo
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
Noveo
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
Noveo
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
Noveo
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Noveo
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
Noveo
 
Android - 16 - QR
Android - 16 - QRAndroid - 16 - QR
Android - 16 - QR
Noveo
 

More from Noveo (19)

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
Rest
RestRest
Rest
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
MySQL
MySQLMySQL
MySQL
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
 
Android - 16 - QR
Android - 16 - QRAndroid - 16 - QR
Android - 16 - QR
 

Android - 05 - Android basics

  • 2. Особенности платформы Android Достоинства Широкие возможности платформы Открытость Интеграция с чужими приложениями Переиспользование библиотек Java Недостатки Необходимость поддержки различных устройств Проблемы с памятью 2 Введение в Android-разработку
  • 3. Архитектура Android 3 Введение в Android-разработку
  • 4. Особенности приложения Приложение ↔ название пакета "my.favorite.package.application" Приложение ↔ пользователь Linux 1 видимое приложение Жизненный цикл приложения ̸= жизненный цикл процесса Управление жизненным циклом приложения и все View в UIThread 4 Введение в Android-разработку
  • 6. AndroidManifest.xml определяет имя Java-пакета приложения = уникальный идентификатор для приложения. описывает компоненты приложения: Activity, Service, BroadcastReceiver, ContentProvider. Определяет имена классов, реализующие каждый из компонентов и оглашает их возможности (например, какие Intent-сообщения они могут обрабатывать). Эти объявления позволяют системе Android знать, какие компоненты и при каких условиях могут быть запущены. объявляет разрешения, которые приложение должно иметь для доступа к защищённым частям API и взаимодействия с другими приложениями. объявляет минимальный уровень Android API, который требует приложение. и другие... 6 Введение в Android-разработку
  • 7. Структура проекта (IDEA) 1. Папка с проектом IntelliJ IDEA 2. Папка с исходными файлами 3. Activity 4. Папка с различными ресурсами 5. Разметка главного экрана 6. Папка со значениями (строки, числа) 7. Изображения 8. Автоматически сгенерированная папка с данными о ресурсах 9. Класс с данными о ресурсах для использования в коде 7 Введение в Android-разработку
  • 8. Структура проекта (Android Studio) Вместо bin — build, там всё сгенерированное Папка с исходными файлами теперь содержит и ресурсы Файлы настройки Gradle Многие настройки вынесены в Gradle Библиотеки можно как подкладывать руками, так и подгружать автоматически 8 Введение в Android-разработку
  • 9. Ресурсы Типы ресурсов drawable .png, .jpg, .gif .9.png .xml shape selector layout anim values strings dimensions colors arrays xml raw Селекторы ресурсов Ориентация land, port Плотность точек ldpi, mdpi, hdpi, xhdpi, nodpi Размер экрана small, normal, large, xlarge Версия Android v3, ..., v15 Язык en, fr, ru, ... 9 Введение в Android-разработку
  • 10. Ресурсы R.java package my.favorite; public final class R { public static final class attr { } public static final class drawable { public static final int ic_launcher=0x7f020000; } public static final class id { public static final int message_edit_text=0x7f050000; public static final int message_show_text_view=0x7f050003; public static final int send_button=0x7f050002; public static final int show_button=0x7f050001; } public static final class layout { public static final int message_input_layout=0x7f030000; public static final int message_show_layout=0x7f030001; } public static final class string { public static final int app_name=0x7f040003; public static final int message_input_message_hint=0x7f040000; public static final int message_input_send_button=0x7f040002; public static final int message_input_show_button=0x7f040001; } } 10 Введение в Android-разработку
  • 11. Строковые ресурсы res/values/strings.xml <string name="simple_string">It is a simple string</string> <string name="args_string">It is a string with integer arg: %1$d</string> res/values-ru/strings.xml <string name="simple_string">Это обычная строка</string> <string name="args_string">Это строка с целочисленным аргументом: %1$d</string> src/my/favorite/TestActivity.java TextView simpleText = (TextView)findViewById(R.id.text_view); simpleText.setText(getString(R.string.simple_string)); TextView argsText = (TextView)findViewById(R.id.text_view); simpleText.setText(getString(R.string.args_string, 999)); 11 Введение в Android-разработку
  • 12. Жизненный цикл Activity 12 Введение в Android-разработку
  • 13. Жизненный цикл Activity 13 Введение в Android-разработку
  • 14. Жизненный цикл Activity public class TestActivity extends Activity { private static final String TAG = TestActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate"); setContentView(R.layout.main); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.d(TAG, "onRestoreInstanceState"); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.d(TAG, "onSaveInstanceState"); } @Override protected void onDestroy() { Log.d(TAG, "onDestroy"); super.onDestroy(); } // ... } 14 Введение в Android-разработку
  • 15. Fragment Доступны с API 11 (Android 3.0) Портированы для старых версий в Android Support library Позволяют объединить несколько экранов в одном. Существуют только как часть Activity. Для телефонов: Для планшетов: 15 Введение в Android-разработку
  • 16. Жизненный цикл Fragment Привязано к жизненному циклу Activity Добавлены методы по более тонкому оправлению состоянием 16 Введение в Android-разработку
  • 17. Пример использования Fragment button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.realtabcontent, new MyFragment()); fragmentTransaction.commit(); } }); 17 Введение в Android-разработку