27
Введение в Android- разработку Android Александр Вайцеховский

Введение в Android-разработку (Lecture 06 – basics)

  • Upload
    noveo

  • View
    46

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Введение в Android-разработку (Lecture 06 – basics)

Введение в Android-разработку

Android

Александр Вайцеховский

Page 2: Введение в Android-разработку (Lecture 06 – basics)

Особенности платформы

Достоинства

Широкие возможности платформыОткрытостьИнтеграция с другими приложениямиПереиспользование библиотекJava

Недостатки

Разное железоРазные экраныРазные производители устройствПроблемы с памятью

Page 3: Введение в Android-разработку (Lecture 06 – basics)

Архитектура Android*

*Kitkat (Android 4.4 Api 19) и меньше

Page 4: Введение в Android-разработку (Lecture 06 – basics)

Архитектура Android*

*Lollipop (Andriod 5.0 Api 20) и старше

Page 5: Введение в Android-разработку (Lecture 06 – basics)

ART vs Dalvik

Page 6: Введение в Android-разработку (Lecture 06 – basics)

Особенности приложения

Приложение ↔ название пакета "com.noveogroup.application"

Приложeние ↔ Пользователь Linux

1 видимое приложение (2, начиная с Android N)

Жизненный цикл приложения ≠ жизненный цикл процесса

Управление жизненным циклом приложения и все View в UIThread

Page 7: Введение в Android-разработку (Lecture 06 – basics)

Application Framework

Page 8: Введение в Android-разработку (Lecture 06 – basics)

Application Framework

Это фреймворк!построен на шаблоне Model-View-ViewModel (MVVM)

Page 9: Введение в Android-разработку (Lecture 06 – basics)

Строительные блоки

Page 10: Введение в Android-разработку (Lecture 06 – basics)

AndroidManifest.xml

Имя java-пакета (id приложения)Объевление компонент:

Activity

Service

BroadcastReceiver

ContentProvider

Описание возможностей компоненты:IntentFilter

Классы, реализующие ихИконки, названия :)

Перечисление разрешенийОграничение уровня Android API.Мета-данныеИ другое...

Page 11: Введение в Android-разработку (Lecture 06 – basics)

Структура проекта (IDEA)1. специфика Intellij IDEA2. Исходники3. Activity4. Ресурсы5. Разметка Activity6. Ресурсы значений (тут строки)7. Ресурсы изображений (туткартинки)

8. Генерируемые классы9. R.java - контейнер id ресурсов

Page 12: Введение в Android-разработку (Lecture 06 – basics)

Структура проекта (IDEA)

Вместо bin/gen - buildИсходники и ресурсы вместеКонфигурационные файлы Gradle дажепараметры из Manifest

Библиотеки можно как подкладыватьруками...а можно подгружать автоматически

Page 13: Введение в Android-разработку (Lecture 06 – basics)

Ресурсы

Типы ресурсов

drawableimage

.png, .jpg, .gif9patch

.9.png.xml

vector, shape, selectorlayoutanimvalues:

строки, числа, цветаxmlraw

Селекторы ресурсов

Ориентацияland, port

Плотность точекldpi, mdpi, hdpi, xhdpi,nodpi

Размер экранаsmall, normal, large, xlargesw720dp, sw600dp, ...

Версия Androidv3, ..., v15

Языкen, fr, ru, ...

Page 14: Введение в Android-разработку (Lecture 06 – basics)

Ресурсы R.java 1 package com.noveogroup.example.app; 2 3 public final class R { 4 public R() { 5 6 public static final class string { 7 public static final int app_name = 2130968576; 8 public static final int hello_world = 2130968577; 9 } 10 11 public static final class layout { 12 public static final int activity_main = 2130903040; 13 } 14 15 public static final class drawable { 16 public static final int ic_launcher = 2130837504; 17 } 18 19 public static final class attr { 20 } 21 } 22 }

Page 15: Введение в Android-разработку (Lecture 06 – basics)

Строковые ресурсы

res/values/strings.xml

1 <string name="test">String</string> 2 <string name="test_arg">String with integer argument: %1$d</string>

res/values-ru/strings.xml

1 <string name="test">Строка</string> 2 <string name="test_arg">Cтрока с целочисленным аргументом: %1$d</string>

src/com/noveogroup/example/app/MainActivity.java

1 TextView simpleView = (TextView) findViewById(R.id.text_view_simple); 2 simpleView.setText(getString(R.string.test)); 3 4 TextView argsView = (TextView) findViewByid(R.id.text_view_args) 5 argsView.setText(getString(R.string.test_arg, 50));

Page 16: Введение в Android-разработку (Lecture 06 – basics)

Жизненный цикл Activity

Page 17: Введение в Android-разработку (Lecture 06 – basics)

Восстановление Activity

Page 18: Введение в Android-разработку (Lecture 06 – basics)

Восстановление Activity 1 public class MainActivity extends Activity { 2 @Override 3 void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 } 6 7 @Override 8 void onRestoreInstanceState(Bundle savedInstanceState) { 9 super.onRestoreInstanceState(savedInstanceState); 10 } 11 12 @Override 13 void onSaveInstanceState(Bundle outState) {14 super.onSaveInstanceState(outState); 15 } 16 17 @Override 18 void onDestroy() { 19 super.onDestroy(); 20 } 21 }

Page 19: Введение в Android-разработку (Lecture 06 – basics)

Fragment

Доступны с API 11 (Android 3.0)Портированы для старых версий в Android Support LibraryПозволяют объединиться несколько экранов в одном.Существуют только как часть Activity.

Page 20: Введение в Android-разработку (Lecture 06 – basics)

Fragment

Page 21: Введение в Android-разработку (Lecture 06 – basics)
Page 22: Введение в Android-разработку (Lecture 06 – basics)

Android L

API 20 - 22

Material DesignRecyclerView на замену ListView/GridViewART CompilerУлучшение уведомленийМногое для SmartWatch, TV и Auto

Page 23: Введение в Android-разработку (Lecture 06 – basics)
Page 24: Введение в Android-разработку (Lecture 06 – basics)

Android M

API 23

Режиме Dozeнельзя в сетьнельзя синхроинизироватьсяработает с прерываниями

БезопасностьRuntime Permissions: опасные и не оченьОграничение доступа к MAC-адресу

Apache HTTP ClientМного новых ViewGroupApp Links

* Приложения для старого API нормально запускаются

Page 25: Введение в Android-разработку (Lecture 06 – basics)
Page 26: Введение в Android-разработку (Lecture 06 – basics)

Android N

API 24

Многооконный режимМасштабирование экранаРежиме Doze

Нельзя: будить телефон, GPS, искать Wi-FiУведомления:

Можно: обновлять, группировать, менять viewRemoteInput

Java 8 + Jack compilerЗакрыт доступ через NDK к закрытым API системы

* Приложения для старого API не работают, если экран масштабирован