Введение в Android-разработку Олег Годовых
May 30, 2015
Введение в Android-разработку
Олег Годовых
Особенности платформы Android
ДостоинстваI Широкие возможности платформыI ОткрытостьI Интеграция с чужими приложениямиI Переиспользование библиотекI Java
НедостаткиI Необходимость поддержки различных устройствI Проблемы с памятью
2 Введение в Android-разработку
Архитектура Android
3 Введение в Android-разработку
Особенности приложения
I Приложение↔ название пакета"my.favorite.package.application"
I Приложение↔ пользователь LinuxI 1 видимое приложениеI Жизненный цикл приложения ̸= жизненный цикл процессаI Управление жизненным циклом приложения и все View вUIThread
4 Введение в Android-разработку
Строительные блоки приложения
I ActivityI ServiceI ContentProviderI BroadcastReceiverI Intent
5 Введение в Android-разработку
AndroidManifest.xmlI определяет имя Java-пакета приложения = уникальныйидентификатор для приложения.
I описывает компоненты приложения: Activity, Service,BroadcastReceiver, ContentProvider. Определяет именаклассов, реализующие каждый из компонентов и оглашаетих возможности (например, какие Intent-сообщения онимогут обрабатывать). Эти объявления позволяют системеAndroid знать, какие компоненты и при каких условияхмогут быть запущены.
I объявляет разрешения, которые приложение должноиметь для доступа к защищённым частям API ивзаимодействия с другими приложениями.
I объявляет минимальный уровень Android API, которыйтребует приложение.
I и другие...
6 Введение в Android-разработку
Структура проекта (IDEA)
1. Папка с проектом IntelliJ IDEA2. Папка с исходными файлами3. Activity4. Папка с различными ресурсами5. Разметка главного экрана6. Папка со значениями (строки,числа)
7. Изображения8. Автоматически сгенерированнаяпапка с данными о ресурсах
9. Класс с данными о ресурсах дляиспользования в коде
7 Введение в Android-разработку
Структура проекта (Android Studio)
I Вместо bin — build, там всёсгенерированное
I Папка с исходными файламитеперь содержит и ресурсы
I Файлы настройки GradleI Многие настройки вынесены вGradle
I Библиотеки можно какподкладывать руками, так иподгружать автоматически
8 Введение в Android-разработку
РесурсыТипы ресурсов
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-разработку
Ресурсы 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-разработку
Строковые ресурсы
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-разработку
Жизненный цикл Activity
12 Введение в Android-разработку
Жизненный цикл Activity
13 Введение в Android-разработку
Жизненный цикл 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-разработку
Fragment
I Доступны с API 11 (Android 3.0)I Портированы для старых версий в Android Support libraryI Позволяют объединить несколько экранов в одном.I Существуют только как часть Activity.
Для телефонов: Для планшетов:
15 Введение в Android-разработку
Жизненный цикл Fragment
I Привязано к жизненномуциклу Activity
I Добавлены методы поболее тонкомуоправлению состоянием
16 Введение в Android-разработку
Пример использования 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-разработку
Полезные ссылки
I http://developer.android.comI http://android-developers.blogspot.comI http://startandroid.ru
18 Введение в Android-разработку