MVC в Android
Model-View-Controller
Создание простейшего приложения
Настройка проекта
Сладкий мир версий Android
Настройка версий
Добавление активности
Взаимодействие активности и макета
Взаимодействие активности и макета
Настройки активности
Структура проекта
Структура проекта
Структура проекта
Структура проекта
activity_main.xml
MainActivity.java
Запуск приложения в эмуляторе
Запуск приложения в эмуляторе
Взаимодействие активности и макета
А что по пиву посоветуете?
Структура приложения
Редактирование макета
Редактирование макета
Параметры кнопки
Файл строковых ресурсов
Использование строковых ресурсов в макете
Строковый массив как ресурс
Добавление значений в раскрывающийся список
Связывание макета и активности. Обработка событий
Связывание макета и активности. Обработка событий
FindBeerActivity.java
Получение ссылки на компонент
Получение значения, выбранного в списке
Класс бизнес-логики
Взаимодействие активности и макета
Вспомнить всё
Вспомнить всё
3.34M
Категория: ПрограммированиеПрограммирование

MVC в Android. Создание простейшего приложения

1. MVC в Android

2. Model-View-Controller

3. Создание простейшего приложения

4. Настройка проекта

Имя пакета должно оставаться
неизменным на протяжении
всего срока жизни
приложения!
Это уникальный идентификатор
вашего приложения, который
используется для управления
версиями программы.

5. Сладкий мир версий Android

https://developer.android.com/about/
dashboards/index.html

6. Настройка версий

Если вы не хотите, чтобы
приложение работало только
на самых новых устройствах,
стоит выбрать один из более
старых уровней API.

7. Добавление активности

Каждое Androidприложение состоит из экранов, а
каждый экран состоит из
активности и макета.

8. Взаимодействие активности и макета

• Активность — одна четко определенная операция, которую
может выполнить пользователь.
• Макет описывает внешний вид экрана.

9. Взаимодействие активности и макета

1. Устройство запускает приложение и создает объект
активности.
2. Объект активности задает макет.
3. Активность приказывает Android вывести макет на экран.
4. Пользователь взаимодействует с макетом, отображаемым на
устройстве.
5. Активность реагирует на эти взаимодействия, выполняя код
приложения.
6. Активность обновляет содержимое экрана...
7. ...и пользователь видит это на устройстве.
Макет
<Layout>

</ Layout >
Активность
public class MainActivity
extends Activity {
...
}
Макет
<Layout>

</ Layout >

10. Настройки активности

11. Структура проекта

• Исходные файлы Java и XML
Файлы активности и макета, которые были созданы за вас мастером.
• Файлы Java, сгенерированные Android
Дополнительные файлы Java, которые Android Studio тоже генерирует
автоматически. Вносить в них изменения не придется, да и нельзя.
• Файлы ресурсов
К этой категории относятся файлы изображений на значках по умолчанию, стили,
которые могут использоваться вашим приложением, и все общие строковые
данные, к которым может обращаться приложение.
• Библиотеки Android
В окне мастера была указана минимальная версия SDK, с которой должно быть
совместимо приложение. Android Studio включает в приложение библиотеки
Android, актуальные для этой версии.
• Файлы конфигурации
Файлы конфигурации сообщают Android, что содержит приложение и как его
следует выполнять.

12. Структура проекта

13. Структура проекта

14. Структура проекта

15. activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:orientation="vertical"
tools:context="com.hfad.myfirstapp.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</LinearLayout>

16. MainActivity.java

package com.hfad.myfirstapp;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

17. Запуск приложения в эмуляторе

1. Файлы с исходным кодом Java
компилируются в байт-код.
2. Создается пакет Android-приложения,
или файл APK.
3. Если эмулятор не выполняется в
настоящий момент, он запускается с
AVD.
4. Когда эмулятор будет запущен, а AVD
активизируется, файл APK передается
на AVD и устанавливается.
5. AVD запускает главную активность,
связанную с приложением.
Файл APK — файл
пакета приложения
Android. По сути это
архив JAR или ZIP с
приложением
Android.

18. Запуск приложения в эмуляторе

19. Взаимодействие активности и макета

20. А что по пиву посоветуете?

21. Структура приложения

• Макет определяет, как будет выглядеть приложение.
• Файл strings.xml включает все строковые ресурсы, необходимые
макету, — например, текст надписи на кнопке, входящей в макет,
и названия сортов пива.
• Активность определяет, как приложение должно
взаимодействовать с пользователем.
• Класс Java, содержащий логику приложения.

22. Редактирование макета

23. Редактирование макета

24. Параметры кнопки

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />

25.

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.hfad.beeradviser.FindBeerActivity">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a text view" />
</LinearLayout>
extends View

26. Файл строковых ресурсов

strings.xml
<resources>
<string name="app_name">Beer Adviser</string>
<string name="find_beer">Find Beer!</string>
<string name="brands">No beers selected</string>
</resources>

27. Использование строковых ресурсов в макете

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/find_beer" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/brands" />

28.

<string name="string_name">string_value</string>
"@string/string_name"

29.

Раскрывающийся список значений в системе Android.
Компонент предназначен для выбора одного значения из
представленного набора:
<Spinner
android:id="@+id/color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:layout_gravity="center"
android:layout_margin="16dp" />

30. Строковый массив как ресурс

<string-array name="имя_массива">
<item>значение1</item>
<item>значение2</item>
<item>значение3</item>
...
</string-array>
"@array/имя_массива"

31.

strings.xml
<resources>
<string name="app_name">Beer Adviser</string>
<string name="find_beer">Find Beer!</string>
<string name="brands">No beers selected</string>
<string-array name="beer_colors">
<item>light</item>
<item>amber</item>
<item>brown</item>
<item>dark</item>
</string-array>
</resources>

32. Добавление значений в раскрывающийся список

<Spinner
android:id="@+id/color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:layout_gravity="center"
android:layout_margin="16dp"
android:entries="@array/beer_colors" />

33. Связывание макета и активности. Обработка событий

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/find_beer"
android:onClick="onClickFindBeer" />

34. Связывание макета и активности. Обработка событий

package com.hfad.beeradviser;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class FindBeerActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_beer);
}
public void onClickFindBeer(View view) {
}
}

35. FindBeerActivity.java

package com.hfad.beeradviser;

import android.widget.Spinner; import android.widget.TextView;
import java.util.List;
public class FindBeerActivity extends Activity {
private BeerExpert expert = new BeerExpert();

public void onClickFindBeer(View view) {
TextView brands = (TextView) findViewById(R.id.brands);
Spinner colorSpinner = (Spinner) findViewById(R.id.color);
String beerType = String.valueOf(colorSpinner.getSelectedItem());
List<String> brandsList = expert.getBrands(beerType);
StringBuilder brandsFormatted = new StringBuilder();
for (String brand : brandsList) {
brandsFormatted.append(brand).append('\n');
}
brands.setText(brandsFormatted);
}
}

36. Получение ссылки на компонент

TextView brands =(TextView)findViewById(R.id.brands);
brands.setText(“Мама мыла раму”);
brands.setText(R.string.find_beer);
! R.java генерируется самостоятельно. Вы не сможете изменять код,
находящийся в R, но полезно знать, что он существует.

37. Получение значения, выбранного в списке

Spinner colorSpinner =
(Spinner) findViewById(R.id.color);
String beerType =
String.valueOf(colorSpinner.getSelectedItem());

38. Класс бизнес-логики

package com.hfad.beeradviser;
import java.util.ArrayList;
import java.util.List;
public class BeerExpert {
List<String> getBrands(String color) {
List<String> brands = new ArrayList<>();
if (color.equals("amber")) {
brands.add("Jack Amber");
brands.add("Red Moose");
} else {
brands.add("Jail Pale Ale");
brands.add("Gout Stout");
}
return brands;
}
}

39. Взаимодействие активности и макета

1. Устройство запускает приложение и создает объект
активности.
2. Объект активности задает макет.
3. Активность приказывает Android вывести макет на экран.
4. Пользователь взаимодействует с макетом, отображаемым на Макет
устройстве.
5. Активность реагирует на эти взаимодействия, выполняя код
приложения.
6. Активность обновляет содержимое экрана...
string.xml
7. ...и пользователь видит это на устройстве.
<resources>
<Layout>

</ Layout >

</resources>
Активность
public class MainActivity
extends Activity {
...
}
Макет
<Layout>

</ Layout >

40. Вспомнить всё

1.
2.
Версии Android характеризуются номером версии, уровнем API и кодовым именем.
Android Studio — специализированная версия среды IntelliJ IDEA, интегрированная с
пакетом Android Software Development Kit (SDK) и системой сборки Gradle.
3. Типичное Android-приложение состоит из активностей, макетов и файлов ресурсов.
4. Макеты описывают внешний вид приложения. Они хранятся в папке app/src/
main/res/layout.
5. Активности описывают то, что делает приложение и как оно взаимодействует с
пользователем. Созданные вами активности хранятся в папке app/src/main/java.
6. Файл AndroidManifest.xml содержит информацию о самом приложении. Этот файл
находится в папке app/src/main.
7. AVD — виртуальное устройство Android (Android Virtual Device). AVD выполняется в
эмуляторе Android и моделирует физическое устройство Android.
8. APK — пакет приложения Android, аналог JAR-файла для приложений Android. Файл
содержит байт-код приложения, библиотеки и ресурсы. Установка приложения на
устройстве осуществляется установкой его пакета APK.
9. Приложения Android выполняются в отдельных процессах с использованием
исполнительной среды Android (ART).
10. Элемент <TextView> используется для вывода текста.

41.

11.
12.
13.
14.
15.
16.
17.
18.
Элемент <Button> используется для добавления кнопки.
Элемент <Spinner> используется для добавления раскрывающегося списка.
Все компоненты графического интерфейса наследуют от класса Android View.
Файл strings.xml содержит пары «имя/значение» для строк. Они используются для
вынесения конкретных текстовых значений из макетов и активностей, а также для
поддержки локализации.
Для добавления строк в strings.xml используется синтаксис:
<string name="name">Value</ string>
Обращение к строке в макете выглядит так:
"@string/name"
Массив строковых значений создается в strings.xml конструкцией следующего вида:
<string-array name="array">
<item>string1</item>
...
</string-array>
Для обращения к string-array в макете используется синтаксис:
"@array/array_name"

42. Вспомнить всё

19. Чтобы при щелчке на кнопке вызывался метод, включите в макет
следующий атрибут:
android:onClick="clickMethod"
При этом в активности должен существовать соответствующий метод:
public void clickMethod(View view){ }
20. Класс R.java генерируется средой. Он позволяет получать ссылки на
макеты, компоненты графического интерфейса, строки и другие ресурсы в
коде Java.
21. Метод findViewById() возвращает ссылку на компонент.
22. Метод setText() задает текст компонента.
23. Метод getSelectedItem() возвращает вариант, выбранный в
раскрывающемся списке.

43.

Счастливого программирования!
English     Русский Правила