Курс
"Мобильная разработка"
Создание нескольких активностей
Файл AndroidManifest.xml

Файл манифеста AndroidManifest.xml
Каждое приложение содержит файл манифеста AndroidManifest.xml. Данный файл определяет важную информацию о приложении - название, версию, иконки, какие разрешения приложение использует, регистрирует все используемые классы activity, сервисы и т.д.
Файл манифеста может выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=" com.example.intentvideo1 ">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Элементом корневого уровня является узел manifest. В данном случае только определяется пакет приложения - package="com.example.intentvideo1"
Большинство настроек уровня приложения определяются элементом application. Например, через атрибут android:icon="@mipmap/ic_launcher" задается иконка приложения, которая находится в каталоге res/mipmap-xxxx
Также здесь задается название приложение, которое будет отображаться на мобильном устройстве в списке приложений и в заголовке: android:label="@string/app_name". В данном случае оно хранится в строковых ресурсах.
Вложенные элементы activity определяют все используемые в приложении activity. В данном случае видно, что в приложении есть только одна activity - MainActivity.
Элемент intent-filter в MainActivity указывает, как данная activity будет использоваться. В частности, с помощью узла action android:name="android.intent.action.MAIN", что данная activity будет входной точкой в приложение и не должна получать какие-либо данные извне.
Элемент category android:name="android.intent.category.LAUNCHER" указывает, что MainActivity будет представлять стартовый экран, который отображается при запуске приложения.
Определение версии
С помощью атрибутов элемента manifest можно определить версию приложения и его кода:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=" com.example.intentvideo1"
android:versionName="1.0"
android:versionCode="1" />
<!-- остальное содержимое-->
</manifest>
Установка версии SDK
Для управления версией android sdk в файле манифеста определяется элемент <uses-sdk>. Он может использовать следующие атрибуты:
-
minSdkVersion: минимальная поддерживаемая версия SDK
-
targetSdkVersion: оптимальная версия
-
maxSdkVersion: максимальная версия
Версия определяется номером API, например, Jelly Beans 4.1 имеет версию 16:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intentvideo1"
android:versionName="1.0"
android:versionCode="1" />
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="19" />
<!-- остальное содержимое-->
</manifest>
Установка разрешений
Иногда приложению требуются разрешения на доступ к определенным ресурсам, например, к списку контактов, камере, интернет и т.д. Чтобы приложение могло работать с тем же списком контактов, в файле манифесте необходимо установить соответствующие разрешения. Для установки разрешений применяется элемент <uses-permission>:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intentvideo1""/>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CAMERA" android:maxSdkVersion="21" />
<!-- остальное содержимое-->
</manifest>
Атрибут android:name устанавливает название разрешения: в данном случае на чтение списка контактов и использование камеры. Опционально можно установить максимальную версию sdk посредством атрибута android:maxSdkVersion, который принимает номер API.
Поддержка разных разрешений
Мир устройств Android очень сильно фрагментирован, здесь встречаются как гаджеты с небольшим экраном, так и большие широкоэкранные телевизоры. И бывают случаи, когда надо ограничить использование приложения для определенных разрешений экранов. Для этого в файле манифеста определяется элемент <supports-screens>:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intentvideo1"/>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="false"
android:xlargeScreens="true" />
<!-- остальное содержимое-->
</manifest>
Данный элемент принимает четыре атрибута:
android:largeScreens - экраны с диагональю от 4.5 до 10"
android:normalScreens - экраны с диагональю от 3 до 4.5"
android:smallScreens - экраны с диагональю меньше 3"
android:xlargeScreens - экраны с диагональю больше 10"
Если атрибут имеет значение true, то приложение будет поддерживаться соответствующим размером экрана
Запрет на изменение ориентации
Приложение в зависимости от положения гаджета может находиться в альбомной и портретной ориентации. Не всегда это бывает удобно. Мы можем сделать, чтобы приложение вне зависимости от поворота гаджета использовало только одну ориентацию. Для этого в файле манифеста у требуемой activity надо установить атрибут android:screenOrientation. Например, запретим альбомную ориентацию:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intentvideo1" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:screenOrientation="portrait"
<!-- остальное содержимое-->
Значение android:screenOrientation="portrait" указывает, что данная activity будет находиться только в портретной ориентации. Если же надо установить только альбомную ориентацию, тогда надо использовать значение android:screenOrientation="landscape"
Список источников