Электронная библиотека » Тимур Машнин » » онлайн чтение - страница 7


  • Текст добавлен: 16 октября 2020, 07:59


Автор книги: Тимур Машнин


Жанр: Компьютеры: прочее, Компьютеры


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 7 (всего у книги 20 страниц)

Шрифт:
- 100% +

Мастер Android Icon Set

Мастер Android Icon Set ADT-плагина помогает создать значок Launcher Icons, представляющий приложение, значки Menu Icons опций меню, значки Action Bar Icons элементов панели действий, значки Tab Icons вкладок и значки Notification Icons уведомлений панели состояния.

Для создания значков приложения в окне Project Explorer нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | Android | Android Icon Set, нажмем кнопку Next – в результате откроется окно мастера.



Окно мастера Android Icon Set позволяет выбрать с помощью переключателя тип значка и ввести имя его файла, после чего нажатием кнопки Next перейти к созданию значка.

Кнопка Text мастера позволяет создать значок в виде текста на цветном фоне. При этом поле Text: определяет текст значка, а кнопка Font: дает возможность выбрать шрифт текста.

Кнопка Image мастера с помощью кнопки Browse поля Image File: позволяет выбрать в качестве значка изображение.

Кнопка Clipart мастера с помощью кнопки Choose позволяет выбрать из предоставляемой коллекции изображение.

Ползунок Additional Padding мастера устанавливает отступ текста от краев значка путем масштабирования текста.

Для Launcher-значков опция Foreground Scaling: с помощью кнопок Crop и Center определяет способ масштабирования текста, опция Shape с помощью кнопок Square и Circle позволяет установить форму значка, а опции Background Color: и Foreground Color: обеспечивают выбор цвета фона и текста значка.

Для значков Action Bar Icons кнопки Holo Light и Holo Dark опции Theme определяют стиль отображения текста.

Окно Preview мастера показывает конечный вид значка для экранов устройства с различной плотностью.

После нажатия кнопки Finish мастера будет создан набор файлов значка в каталогах res/drawable– [ldpi, mdpi, hdpi, xhdpi] со спецификаторами, обеспечивающими поддержку экранов Android-устройства с различной плотностью, в соответствии с которой папка drawable с нужным спецификатором будет выбрана Android-системой для загрузки при выполнении кода приложения.

Мастер Android Test Project

Мастер Android Test Project помогает создать для выбранного Android-проекта набор тестов на базе Android-расширения платформы тестирования JUnit.

Android-расширение платформы тестирования JUnit представлено библиотекой android. test платформы Android.

ADT-плагин обеспечивает сборку проекта Android-тестов в пакет и его загрузку вместе с пакетом тестируемого Android-приложения в Android-устройство, в котором инструмент android.test.InstrumentationTestRunner запускает созданный набор тестов. При тестировании Android-приложения в Android-устройстве ни Android-система, ни инструмент InstrumentationTestRunner сами по себе не запускают Android-приложение, это делают Android-тесты путем вызова соответствующих методов.

Проект Android-тестов имеет ту же структуру, что и проект Android-приложения. Для предотвращения конфликтов в Android-системе имя пакета Android-тестов состоит из имени пакета тестируемого Android-приложения плюс расширение. test. Кроме того, файл манифеста AndroidManifest. xml проекта Android-тестов содержит тэг <instrumentation>, устанавливающий в качестве инструмента запуска тестов инструмент InstrumentationTestRunner, а также определяющий имя пакета тестируемого Android-приложения. Так как код инструмента InstrumentationTestRunner содержится в отдельной библиотеке android.test.runner, тэг <application> файла манифеста AndroidManifest. xml проекта Android-тестов содержит тэг <uses-library>, указывающий необходимость загрузки библиотеки android.test.runner.

Для тестирования компонентов Android-приложения в каталоге src проекта Android-тестов в пакете Android-тестов требуется создание классов, расширяющих классы тестов программного интерфейса Android Testing API:

android.test.ActivityInstrumentationTestCase2 <T extends android.app.Activity> – обеспечивает тестирование отдельного Activity-компонента, с его запуском в экземпляре Android-приложения, использующим обычную инфраструктуру Android-системы.

android.test.ActivityUnitTestCase <T extends android.app.Activity> – обеспечивает тестирование отдельного Activity-компонента, изолированного от Android-системы.

android.test.SingleLaunchActivityTestCase <T extends android.app.Activity> – обеспечивает тестирование отдельного Activity-компонента с его загрузкой только один раз для тестирования режима загрузки, отличного от standard (атрибут android: launchMode тэга <activity>).

android.test.ProviderTestCase2 <T extends android.content.ContentProvider> – обеспечивает тестирование отдельного ContentProvider-компонента в изолированном окружении.

android.test.ServiceTestCase <T extends android.app.Service> – обеспечивает тестирование отдельного изолированного Service-компонента.

android. test. ApplicationTestCase <T extends android. app. Application> – обеспечивает тестирование Application-класса.

Для создания проекта Android-тестов в меню File среды Eclipse выберем команду New | Other | Android | Android Test Project и нажмем кнопку Next, введем имя проекта и нажмем кнопку Next, выберем Android-проект для тестирования и нажмем кнопку Next, выберем версию Android-платформы и нажмем кнопку Finish. В результате ADT-плагином будет сгенерирована основа проекта Android-тестов для выбранного Android-приложения.

Для создания класса тестов в окне Project Explorer среды Eclipse нажмем правой кнопкой мышки на узле пакета проекта Android-тестов и в контекстном меню выберем команду New | Other | Java | Class, нажмем кнопку Next и в окне мастера создания Java-класса в поле Name: введем имя класса тестов, а в поле Superclass: введем имя расширяемого класса библиотеки android. test платформы Android, например android.test.ActivityInstrumentationTestCase2 <NameActivity>, где NameActivity – имя класса Activity-компонента тестируемого Android-приложения. После нажатия кнопки Finish будет сгенерирована и открыта в Eclipse-редакторе основа класса тестов.

После заполнения необходимым кодом класса тестов, для запуска Android-тестов запустим Android-эмулятор, используя приложение AVD Manager, после этого в окне Project Explorer среды Eclipse нажмем правой кнопкой мышки на узле проекта Android-тестов и в контекстном меню выберем команду Run As | Android JUnit Test. В результате ADT-плагин загрузит пакет Android-тестов вместе с пакетом тестируемого Android-приложения в Android-устройство, в котором будут запущены созданные тесты. При этом результаты тестирования будут возвращены в среду Eclipse для отображения в автоматически открывающемся представлении JUnit.

Среда разработки Android Studio

Начало работы

К сожалению или к счастью, в настоящее время официальной средой разработки Android-приложений является среда Android Studio, основанная на интегрированной среде IntelliJ IDEA.

После загрузки Android Studio встречает приглашением создать новый проект.



Нужно отметить, что проект среды Android Studio является аналогом Workspace в Eclipse, а модуль Android Studio это аналог Eclipse-проекта.

Кроме того, Android Studio поставляется с системой сборки проектов Gradle, интегрированной в Android Studio с помощью плагина Android Gradle. Система сборки проектов Gradle позволяет для одного и того же проекта и модулей генерировать различные APK-файлы приложения, имеющие различные свойства, например, платные или бесплатные, предназначенные для работы на различных уствойствах, например, для работы на смартфонах или планшетах.

Также Android Studio поставляется с инструментом lint, автоматически анализирующим код при компиляции на наличие потенциальных багов и возможностей оптимизации кода.

Сжатие, оптимизация и обсфукация кода APK-файла приложения в Android Studio производится с помощью инструмента ProGuard.

И lint и ProGuard запускаются в Android Studio системой сборки проектов Gradle.

Для облачных вычислений Android Studio позволяет создать и развернуть модуль App Engine.

После выбора Start a new Android Studio project откроется диалоговое окно, в котором нужно определить имя папки проекта, имя пакета и расположение проекта.



Далее оставим рекомендованный минимальный уровень Android API.



И выберем создание модуля с пустой активностью.




Нажмем Finish.

В результате будет сгенерирована основа модуля Android-приложения, Android-структура которого отобразится в View-представлении Project среды разработки.



Чтобы изменить Java SDK или Android SDK для проекта, в меню File выберем Project Structure и в SDK Location изменим каталог SDK.



Тут же выбрав модуль, можно изменить для него уровень Android API.

Изменить кодировку проекта на UTF-8 можно, в меню File выбрав Settings и далее File Encodings.



Android-структура приложения отличается от его файловой структуры.

Чтобы посмотреть файловую структуру приложения, нажмем на Android и выберем Project.



В отличие от Eclipse, здесь каталог src содержит пакет класса, расширяющего класс android.app.Activity, пакет тестов, папку ресурсов приложения и файл манифеста приложения.

Для добавления библиотек v4 support и v7 appcompat в модуль, в меню File выберем Project Structure и во вкладке Dependencies нажмем кнопку Add, выберем Library dependency и соответствующую библиотеку.



Для создания таких ресурсов, как animator (XML-файлы для создания объектов анимации), color (XML-файлы, определяющие цветовую гамму View-объектов), drawable (PNG, JPEG, GIF, 9-PNG и XML-файлы, формирующие графику), layout (XML-файлы для формирования структуры GUI-интерфейса Activity-объектов), menu (XML-файлы, описывающие меню приложения), raw (каталог предназначен для хранения таких данных приложения как файлов в формате MP3 или Ogg), values (XML-файлы для хранения строк, стилей, чисел, размеров и другое, используемых приложением, в виде пар имя-значение), xml (различные конфигурационные и ресурсные XML-файлы), нажмем правой кнопкой мышки на узле res модуля и выберем New | Android resource directory. Для создания ресурсного файла выберем New | Android resource file.

Дополнительно здесь предусмотрено создание папки anim для Tween-анимации, папки interpolator, папки mipmap для значков приложения, папки transition для Transition-анимации.

Значки приложения можно создать, нажав правой кнопкой мышки на узле res модуля и выбрав New | Image Asset.

Для создания каталога аssets, предназначенного для хранения данных приложения, доступ к которым осуществляется с помощью класса android.content.res.AssetManager, в контекстном меню выберем New | Folder | Assert Folder.



R-класс и класс BuildConfig находятся в каталоге build/generated модуля.



Кнопка AVD Manager панели Android Studio или меню Tools | Android | AVD Manager позволяют запустить приложение AVD Manager для создания и запуска эмулятора Android-устройства.

Кнопка Run «app’ панели Android Studio или меню Run | Run «app’ позволяют запустить модуль в Android-устройстве.

Меню Run | Edit Configurations позволяет изменить настройки запуска модуля.

В результате запуска Android-приложения каталог build модуля пополнится компилированными и конвертированными в DEX-формат виртуальной машины Dalvik файлами модуля, а также APK-файлом Android-приложения.

Папка build/outputs/apk будет содержать два APK-файла app-debug-unaligned. apk и app-debug. apk. Сначала генерируется файл app-debug-unaligned. apk, а затем на его основе генерируется оптимизированный app-debug. apk файл, который и загружается для отладки.

Отдельно для сборки модуля щелкнем правой кнопкой мышки на модуле и выберем Make Module «app’.

Для подготовки к публикации Android-приложения и создания подписанного APK-файла приложения в меню Build выберем Generate Signed APK. Далее для создания хранилища закрытого ключа, которым будут подписываться Android-приложения, нажмем кнопку Create new, определим путь и имя файла хранилища, введем пароль и имя хранилища, параметры сертификата и нажмем кнопку OK. Нажмем кнопку Next, введем пароль и нажмем кнопку OK и далее кнопку Finish.

В результате в корневом каталоге модуля будет создан подписанный и готовый к публикации APK-файл приложения.



Для отладки Android-приложения в меню Run выберем Debug «app’. В результате откроется диалоговое окно выбора устройства, на котором будет запущено приложение, и после выбора, например, эмулятора и запуска приложения, в меню View | Tool Windows можно воспользоваться элементом Debug, открывающим или закрывающим окно отладчика.

В меню Run с помощью выбора Attach debugger to Android proccess можно присоединить отладчик к конкретному процессу.

В меню View | Tool Windows, выбрав Android, можно открыть окно инструмента DDMS.

Окно Structure среды Android Studio показывает структуру кода исходного файла, открытого в редакторе.



Окно Captures среды Android Studio показывает информацию, сохраненную с помощью инструмента DDMS.

В меню Tools | Android с помощью выбора Android Device Monitor можно запустить ADM-приложение.



В меню Tools | Android с помощью выбора Navigation Editor можно открыть окно структуры и компоновки Android-приложения.



Удалить модуль из проекта можно, выбрав меню File | Project Structure, затем модуль и нажав кнопку минус.



Создание различных версий Android-приложения с помощью Gradle

Система сборки Gradle обеспечивает в рамках одного модуля создание нескольких Android-приложений с разным контентом или создание одного Android-приложения для работы на разных устройствах пользователя или комбинацию этих двух случаев.

В первом случае в Google Play каждое Android-приложение публикуется отдельно, во втором случае разные версии публикуются в рамках одного Android-приложения.

Для создания нескольких Android-приложений в одном модуле в Android Studio откроем окно Project и выберем вариант Project.

В каталоге src скопируем и вставим папку main под именами free и paid.



Чтобы не было ошибки сборки, в папке main удалим файл MainActivity. java.

Откроем в редакторе файл сборки build.gradle и добавим код:

productFlavors {

paid {

applicationId «com. application. full»


}


free {

applicationId "com.application.demo»


}

}

Нажмем кнопку Sync Project with Gradle Files.

Теперь можно вести отдельно разработку для папки free и для папки paid.

Для запуска конкретного Android-приложения в эмуляторе, откроем окно Build Variants и выберем вариант приложения, который хотим запустить.



Нажмем кнопку Run «app’.

Для создания одного Android-приложения для работы на разных устройствах пользователя, все версии этого приложения должны иметь один и тот же пакет и быть подписаны одним ключом. Разные версии должны иметь разное значение android: versionCode.

При этом, при публикации, для этого набора APK-файлов создается одно описание, один набор значков, скриншотов, назначается одна цена. Для публикации используется режим Advanced mode Google Play.

Если разные версии Android-приложения создаются для разных уровней API, версия с более высоким значением android: minSdkVersion должна иметь более высокое значение android: versionCode. То же самое относится и к увеличению размера экрана для разных версий приложения. При этом значение android: versionName будет одинаковым для всех версий.

Для создания разных версий приложения для разных уровней API, откроем файл сборки модуля build.gradle в редакторе кода и добавим код:

productFlavors {

flavor1 {

versionCode 1

minSdkVersion 8

}


flavor2 {

versionCode 2

minSdkVersion 15

}

}

Для создания разных версий приложения для устройств с разными экранами, откроем файл сборки модуля build.gradle в редакторе кода и добавим код:

productFlavors {

phone {

versionCode 1


}


tablet {

versionCode 2


}

}

В каталоге src модуля создадим две папки phone и tablet с файлами AndroidManifest. xml:

<?xml version=«1.0» encoding=«utf-8»? >

<manifest xmlns: android="http://schemas.android.com/apk/res/android"

package=«com. application»>


<supports-screens

android: smallScreens=«true»

android: normalScreens=«true»

android: largeScreens=«false»

android: xlargeScreens=«false»/>


</manifest>

И

<?xml version=«1.0» encoding=«utf-8»? >

<manifest xmlns: android="http://schemas.android.com/apk/res/android"

package=«com. application»>


<supports-screens

android: smallScreens=«false»

android: normalScreens=«false»

android: largeScreens=«true»

android: xlargeScreens=«true»/>


</manifest>

В папках phone и tablet также можно вести разработку приложения для разных устройств.

При сборке APK-файлов, в главный файл AndroidManifest. xml будут добавляться разные элементы <supports-screens>.

Отображение контента Android приложением

Галерея изображений

Самую простую галерею изображений в Android-приложении можно реализовать с помощью компонента android.widget.ImageView и слушателя setOnTouchListener () контейнера ImageView-компонента.

Галерею с более сложной анимацией можно реализовать с помощью компонента android.widget.ViewFlipper.

При реализации с ImageView-компонентом смена изображений осуществляется методом setImageDrawable () и в памяти хранится только одно изображение. В реализации с ViewFlipper-компонентом определяется набор дочерних View-компонентов, переключение между которыми обеспечивается ViewFlipper-компонентом. При этом при большом количестве дочерних View-компонентов может возникнуть ошибка переполнения памяти. Поэтому при использовании ViewFlipper-компонента при переключении необходимо динамически очищать и добавлять дочерние компоненты для ViewFlipper-компонента.

Другой способ реализации галереи изображений – это применение компонента android.support.v4.view.ViewPager и фрагментов android.support.v4.app.Fragment. Однако при этом требуется минимальная версия 11 для Android API и использование дополнительной библиотеки Android Support Library.

ViewPager-компонент обеспечивает переключение между экранами, динамически создаваемыми с помощью адаптера android.support.v4.app.FragmentStatePagerAdapter, который определяет контент, создавая объекты android.support.v4.app.Fragment.

ImageView

Для создания галереи изображений в главном Activity-компоненте приложения определим показ начальной заставки и панели с кнопками переключения между разделами контента:

import java.io.IOException;

import java.io.InputStream;

import android.app.Activity;

import android.content.Intent;

import android.graphics. drawable. Drawable;

import android. os. Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.View. OnClickListener;

import android.view.View. OnTouchListener;

import android. widget. Button;

import android.widget.ImageView;

import android.widget.ViewFlipper;


public class MainActivity extends Activity {


private float fromPosition;


@Override

protected void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView(R.layout.activity_main);

ImageView image;

image = (ImageView)findViewById(R.id.imageViewLaunch);

try

{

InputStream ims = getAssets().open("_FRONT.jpg»);

Drawable d = Drawable.createFromStream (ims, null);

image.setImageDrawable (d);

}

catch (IOException ex)

{

return;

}

final ViewFlipper viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipperContents);

viewFlipper.setOnTouchListener (new OnTouchListener () {

public boolean onTouch (View v, MotionEvent event) {

switch (event.getAction ())

{

case MotionEvent.ACTION_DOWN:

fromPosition = event.getX ();

break;

case MotionEvent.ACTION_UP:

float toPosition = event.getX ();

if (fromPosition> toPosition)

viewFlipper.setDisplayedChild (1);

default:

break;

}

return true;

}

});

final Intent intent = new Intent (this, ContentActivity.class);

final Button btn1= (Button)findViewById(R.id.button1);

btn1.setOnClickListener (new OnClickListener () {

public void onClick (View v) {

String name=«title»;

String value=btn1.getText().toString ();

intent. putExtra (name, value);

startActivity (intent);

}

});


final Button btnn= (Button)findViewById(R.id.buttonn);

btnn.setOnClickListener (new OnClickListener () {

public void onClick (View v) {

String name=«title»;

String value=btnn.getText().toString ();

intent. putExtra (name, value);

startActivity (intent);

}

});


}

@Override

public boolean onCreateOptionsMenu (Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected (MenuItem item) {

switch (item.getItemId ()) {

case R.id.action_settings:

final Intent intent = new Intent (this, MainActivity.class);

startActivity (intent);

return true;

default:

return super. onOptionsItemSelected (item);

}}}

В классе MainActivity в методе onCreate () создается экран, содержимое которого определяется компоновкой activity_main. xml:

<ViewFlipper xmlns: android="http://schemas.android.com/apk/res/android"

android: id="@+id/viewFlipperContents»

xmlns: tools="http://schemas.android.com/tools"

android: layout_width=«match_parent»

android: layout_height=«match_parent»

android: paddingBottom="@dimen/activity_vertical_margin»

android: paddingLeft="@dimen/activity_horizontal_margin»

android: paddingRight="@dimen/activity_horizontal_margin»

android: paddingTop="@dimen/activity_vertical_margin»

tools:context=".MainActivity»>


<ImageView

android: id="@+id/imageViewLaunch»

android: layout_width=«fill_parent»

android: layout_height=«fill_parent»

android: contentDescription="@string/desc»/>


<include layout="@layout/contents»/>

</ViewFlipper>

Где ViewFlipper-компонент обеспечивает переключение с начальной заставки ImageView на панель с кнопками, содержимое которой определяется компоновкой contents. xml:

<?xml version=«1.0» encoding=«utf-8»? >


<ScrollView xmlns: android="http://schemas.android.com/apk/res/android"

android: layout_width=«match_parent»

android: layout_height=«match_parent»>


<LinearLayout android: layout_width=«fill_parent»

android: baselineAligned=«false»

android: layout_height=«wrap_content»

android: orientation=«horizontal»>


<LinearLayout android: layout_height=«wrap_content»

android: id="@+id/linearLayout1»

android: orientation=«vertical»

android: layout_width=«0dip»

android: layout_weight=». 8»>


<TextView

android: id="@+id/contentsTitle»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/title»

android: textStyle=«bold»

android: textAppearance=»? android: attr/textAppearanceMedium»/>

<Button

android: gravity=«left|center_vertical»

android: id="@+id/button1»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/introduction» />


<Button

android: gravity=«left|center_vertical»

android: id="@+id/buttonn»

android: layout_width=«fill_parent»

android: layout_height=«wrap_content»

android: text="@string/chx» />

</LinearLayout>


<LinearLayout android: layout_width=«0dip»

android: layout_height=«wrap_content»

android: orientation=«horizontal»

android: id="@+id/linearLayout_dummy»

android: layout_weight=». 20»>

</LinearLayout>

</LinearLayout>

</ScrollView>

Кнопки панели разделов контента обеспечивают запуск другого Activity-компонента приложения, передавая ему в качестве параметра свой текст, для идентификации содержимого раздела, который нужно отображать:

import java.io.IOException;

import java.io.InputStream;

import android.app.Activity;

import android.content.Intent;

import android.graphics. drawable. Drawable;

import android. os. Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.MotionEvent;

import android.view.View;

import android.view.View. OnTouchListener;

import android.widget.ImageView;

import android.widget.LinearLayout;


public class ContentActivity extends Activity {


private float fromPosition;

private int index;

private LinearLayout linearLayout;

private ImageView image;


@Override

protected void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView(R.layout.activity_content);

String name=«title»;

String value=this.getIntent().getStringExtra (name);

linearLayout= (LinearLayout)findViewById(R.id.layoutContent);

image=(ImageView)findViewById(R.id.imageViewContent);

if (value. equals («Introduction»)) {

this.setTitle («Introduction»);

setContent (1,8,value);

}


if (value. equals («Chaptern»)) {

this.setTitle («Chaptern»);

setContent (1,xxx, value);

}


}

@Override

public boolean onCreateOptionsMenu (Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected (MenuItem item) {

switch (item.getItemId ()) {

case R.id.action_settings:

final Intent intent = new Intent (this, MainActivity.class);

startActivity (intent);

return true;

default:

return super. onOptionsItemSelected (item);

}}


private void setImage (String path) {

InputStream ims;

try {

ims = getAssets ().open (path);

Drawable d = Drawable.createFromStream (ims, null);

image.setImageDrawable (d);

} catch (IOException e) {

e.printStackTrace ();

}}


private void setContent (int start, int end, String path) {

final String pathContent=path;

final int endContent=end;

final int startContent=start;

index=startContent;

setImage(pathContent+"/"+index+".jpg»);


linearLayout.setOnTouchListener (new OnTouchListener () {

public boolean onTouch (View v, MotionEvent event) {

switch (event.getAction ())

{

case MotionEvent.ACTION_DOWN:

fromPosition = event.getX ();

break;

case MotionEvent.ACTION_UP:

float toPosition = event.getX ();

if (fromPosition> toPosition) {

index++;

if (index <=endContent) {

setImage(pathContent+"/"+index+".jpg»);

} else {

index=endContent;

}}

else if (fromPosition <toPosition) {

index – ;

if (index> =startContent) {

setImage(pathContent+"/"+index+".jpg»);

} else {

index=startContent;

}}

default:

break;

}

return true;

}

});

}}

В классе ContentActivity в методе onCreate () создается экран, содержимое которого определяется компоновкой activity_content. xml:

<LinearLayout xmlns: android="http://schemas.android.com/apk/res/android"

xmlns: tools="http://schemas.android.com/tools"

android: id="@+id/layoutContent»

android: layout_width=«match_parent»

android: layout_height=«match_parent»

android: orientation=«vertical»

android: paddingBottom="@dimen/activity_vertical_margin»

android: paddingLeft="@dimen/activity_horizontal_margin»

android: paddingRight="@dimen/activity_horizontal_margin»

android: paddingTop="@dimen/activity_vertical_margin»

tools:context=".ContentActivity»>


<ImageView

android: id="@+id/imageViewContent»

android: layout_width=«fill_parent»

android: layout_height=«fill_parent»

android: contentDescription="@string/cont»/>


</LinearLayout>

ContentActivity-компонент, получая в качестве параметра текст кнопки панели компонента MainActivity, вызывает метод setContent (), в котором определяется переключение между изображениями соответствующей папки каталога assets проекта приложения.


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Следующая
  • 0 Оценок: 0

Правообладателям!

Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.


Популярные книги за неделю


Рекомендации