Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Поддержка разных разрешений



Мир устройств Android очень сильно фрагментирован, здесь встречаются как гаджеты с небольшим экраном, так и большие широкоэкранные телевизоры. И бывают случаи, когда надо ограничить использование приложения для определенных разрешений экранов. Для этого в файле манифеста определяется элемент < supports-screens>:

<? xml version=" 1.0" encoding=" utf-8"? > < manifest xmlns: android=" http: //schemas.android.com/apk/res/android" package=" com.example.eugene.viewsapplication" />       < 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.eugene.viewsapplication" > < 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"



Intent и Intent-фильтры

Для взаимодействия между различными объектами activity ключевым классом является android.content.Intent. Он представляет собой задачу, которую надо выполнить приложению.

Для работы с Intent добавим новый класс Activity. Для этого нажмем правой кнопкой мыши в папку, в которой находится класс MainActivity, и затем в контекстном меню выберем New-> Activity-> Empty Activity:

Новый класс Activity назовем SecondActivity, а файл его разметки интерфейса - activity_second:

И после этого в проект будет добавлена новая Activity - SecondActivity:

После этого в файле манифеста AndroidManifest.xml мы сможем найти следующие строки:

1 2 3 4 5 6 7 8 < activity android: name=".MainActivity" > < intent-filter> < action android: name=" android.intent.action.MAIN" /> < category android: name=" android.intent.category.LAUNCHER" /> < /intent-filter> < /activity> < activity android: name=".SecondActivity" > < /activity>

Все используемые классы activity должны быть описаны в файле AndroidManifest.xml с помощью элемента < activity>. Каждый подобный элемент содержит как минимум один атрибут android: name, который устанавливает имя класса activity.

Однако по сути activity - это стандартные классы java, которые наследуются от класса Activity или его наследников. Поэтому вместо встроенных шаблонов в Android Studio можем добавлять обычные классы, и затем их наследовать от класса Activity. Однако в этом случае нужно будет вручную добавлять в файл манифеста данные об activity.

Причем для MainActivity в элементе intent-filter определяется интент-фильтр. В нем элемент action значение " android.intent.action.MAIN" представляет главную точку входа в приложение. То есть MainActivity остается основной и запускается приложением по умолчанию.

Для SecondActivity просто указано, что она в проекте, и никаких intent-фильтров для нее не задано.

Чтобы из MainActivity запустить SecondActivity, надо вызвать метод startActivity():

1 2 Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);

В качестве параметра в метод startActivity передается объект Intent. Для своего создания Intent в конструкторе принимает два параметра: action (выполняемое действие или задача) и data (передаваемые в задачу данные). В качестве параметра action может выступать множество возможных действий. В данном случае используется действие ACTION_MAIN, которое задается константой " android.intent.action.MAIN".

Теперь рассмотрим реализацию перехода от одной Activity к другой. Для этого в файле activity_main.xml (то есть в интерфейсе для MainActivity) определим кнопку:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <? xml version=" 1.0" encoding=" utf-8"? > < LinearLayout xmlns: android=" http: //schemas.android.com/apk/res/android" android: id=" @+id/activity_main" android: layout_width=" match_parent" android: layout_height=" match_parent" >   < Button android: id=" @+id/navButton" android: textSize=" 20sp" android: layout_width=" wrap_content" android: layout_height=" wrap_content" android: text=" Перейти к SecondActivity" android: onClick=" onClick" />   < /LinearLayout>

И определим для кнопки в классе MainActivity обработчик нажатия, по которому будет производиться переход к новой Activity:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.example.eugene.activityapplication;   import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View;   public class MainActivity extends AppCompatActivity {   @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View view) { Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); } }

В обработчике нажатия будет запускаться SecondActivity.

Далее изменим код SecondActivity:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package com.example.eugene.activityapplication;   import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView;   public class SecondActivity extends AppCompatActivity {   @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this); textView.setTextSize(20); textView.setPadding(16, 16, 16, 16); textView.setText(" Планшет стоит 180 $" ); setContentView(textView); } }

Запустим приложение и перейдем от одной Activity к другой:


Поделиться:



Последнее изменение этой страницы: 2019-05-04; Просмотров: 283; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь