Android - 05 - Android basics

18
Введение в Android-разработку Олег Годовых

description

Основные понятия Android, жизненный цикл приложения и фрагмента.

Transcript of Android - 05 - Android basics

Page 1: Android - 05 - Android basics

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

Олег Годовых

Page 2: Android - 05 - Android basics

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

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

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

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

Page 3: Android - 05 - Android basics

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

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

Page 4: Android - 05 - Android basics

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

I Приложение↔ название пакета"my.favorite.package.application"

I Приложение↔ пользователь LinuxI 1 видимое приложениеI Жизненный цикл приложения ̸= жизненный цикл процессаI Управление жизненным циклом приложения и все View вUIThread

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

Page 5: Android - 05 - Android basics

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

I ActivityI ServiceI ContentProviderI BroadcastReceiverI Intent

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

Page 6: Android - 05 - Android basics

AndroidManifest.xmlI определяет имя Java-пакета приложения = уникальныйидентификатор для приложения.

I описывает компоненты приложения: Activity, Service,BroadcastReceiver, ContentProvider. Определяет именаклассов, реализующие каждый из компонентов и оглашаетих возможности (например, какие Intent-сообщения онимогут обрабатывать). Эти объявления позволяют системеAndroid знать, какие компоненты и при каких условияхмогут быть запущены.

I объявляет разрешения, которые приложение должноиметь для доступа к защищённым частям API ивзаимодействия с другими приложениями.

I объявляет минимальный уровень Android API, которыйтребует приложение.

I и другие...

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

Page 7: Android - 05 - Android basics

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

1. Папка с проектом IntelliJ IDEA2. Папка с исходными файлами3. Activity4. Папка с различными ресурсами5. Разметка главного экрана6. Папка со значениями (строки,числа)

7. Изображения8. Автоматически сгенерированнаяпапка с данными о ресурсах

9. Класс с данными о ресурсах дляиспользования в коде

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

Page 8: Android - 05 - Android basics

Структура проекта (Android Studio)

I Вместо bin — build, там всёсгенерированное

I Папка с исходными файламитеперь содержит и ресурсы

I Файлы настройки GradleI Многие настройки вынесены вGradle

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

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

Page 9: Android - 05 - Android basics

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

I drawableI .png, .jpg, .gifI .9.pngI .xml

I shapeI selector

I layoutI animI values

I stringsI dimensionsI colorsI arrays

I xmlI raw

Селекторы ресурсовI Ориентация

I land, portI Плотность точек

I ldpi, mdpi, hdpi, xhdpi,nodpi

I Размер экранаI small, normal, large,xlarge

I Версия AndroidI v3, . . . , v15

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

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

Page 10: Android - 05 - Android basics

Ресурсы 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-разработку

Page 11: Android - 05 - Android basics

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

I 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>

I res/values-ru/strings.xml<string name="simple_string">Это обычная строка</string><string name="args_string">Это строка с целочисленным аргументом:%1$d</string>

I src/my/favorite/TestActivity.javaTextView 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-разработку

Page 12: Android - 05 - Android basics

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

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

Page 13: Android - 05 - Android basics

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

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

Page 14: Android - 05 - Android basics

Жизненный цикл Activitypublic class TestActivity extends Activity {

private static final String TAG = TestActivity.class.getSimpleName();

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);Log.d(TAG, "onCreate");setContentView(R.layout.main);

}

@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);Log.d(TAG, "onRestoreInstanceState");

}

@Overrideprotected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);Log.d(TAG, "onSaveInstanceState");

}

@Overrideprotected void onDestroy() {

Log.d(TAG, "onDestroy");super.onDestroy();

}// ...

}

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

Page 15: Android - 05 - Android basics

Fragment

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

Для телефонов: Для планшетов:

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

Page 16: Android - 05 - Android basics

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

I Привязано к жизненномуциклу Activity

I Добавлены методы поболее тонкомуоправлению состоянием

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

Page 17: Android - 05 - Android basics

Пример использования Fragment

button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {

FragmentTransaction fragmentTransaction =getSupportFragmentManager().beginTransaction();

fragmentTransaction.replace(R.id.realtabcontent, new MyFragment());fragmentTransaction.commit();

}});

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

Page 18: Android - 05 - Android basics

Полезные ссылки

I http://developer.android.comI http://android-developers.blogspot.comI http://startandroid.ru

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