Работа с наборами изображений. LayerDrawable 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа с наборами изображений. LayerDrawable



LayerDrawable представляет набор изображений. Такой набор задается общим элементом <layer-list> и включает в себя несколько элементов item, которые собственно и задают отдельные изображения.

Пример 1. Описание LayerDrawable.

  <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </layer-list>

Смысл атрибутов элемента item следующий:

· android:drawable: представляет ссылку на ресурс изображения

· android:id: уникальный идентификатор данного ресурса. Имеет следующую форму:@+id/name.

· android:top: смещение с верхнего края в пикселях

· android:right: смещение справа в пикселях

· android:bottom: смещение снизу в пикселях

· android:left: смещение слева в пикселях

По умолчанию все ресурсы изображений при выводе на экран масштабируются, заполняя все пространство предназначенного им элемента управления, например, кнопки. Для отмены масштабирования внутри элемента item добавляется дополнительный элемент <bitmap>. Для дополнительного указания положения изображения на поле виджета применяют атрибута android:gravity. Например, для помещения в центре поля, атрибуту надо задать значение "center"

Пример 2. Задано несколько изображений в файлах android_red.png, android_green.png и android_blue.png. Необходимо создать ресурс в виде файла layers.xml в папке res/drawable, который бы принимал эти изображения и управлял ими при выводе на экран. Необходимо отменить их масштабирование и обеспечить вывод в центре виджетов.

  <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/android_red" android:gravity="center" /> </item> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android_green" android:gravity="center" /> </item> <item android:top="20dp" android:left="20dp"> <bitmap android:src="@drawable/android_blue" android:gravity="center" /> </item> </layer-list>

Постройте ImageView, использующий данный ресурс.

Вопросы для проверки знаний.

1. В каком общем элементе задают набор изображений, какой элемент задает описание одного изображения?

2. В чем заключается масштабирование при выводе изображений на управляющий элемпент и как его можно отменить?

10.4. Класс ImageView. Размещение изображений на экране.
Методы загрузки изображений в объекты ImageView

Класс ImageView задает значения и методы просмотра изображений в Студии. Объекты данного классаявляются базовыми контейнерами для загрузки в них изображений, которые можно брать из разных источников. Для загрузки изображения в XML-файле используется атрибут android:src. С его помощью можно задать отображаемое элементом изображение. Причем в качестве значения атрибута может выступать как файл изображения, так и ресурс drawable и даже обычный цвет.

Пример 1. XML-файл, описывающий вертикальный линейный макет, в котором размещено 3 изображения: 1) рисунок-заглавие (программное имя: image1, тип drawable, находится в файле с именем “Name”), 2) полоса (программное имя: image2,), 3) рисунок (программное имя: image3,)hbceyjrе Задание следующее.

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">   <ImageView android:id="@+id/image1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/Name"/>   <ImageView android:id="@+id/image2" android:layout_width="125dip" android:layout_height="25dip" android:layout_marginTop="20dip" android:layout_marginBottom="20dip" android:src="#555555"/>   <ImageView android:id="@+id/image3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_draw" android:scaleType="centerInside" android:maxWidth="30dip" android:maxHeight="30dip" /> </LinearLayout>

Рассмотрим методы загрузки изображений из класса ImageView:

- setImageResource(int resId) — загрузка изображения с использованием идентификатора,

- setImageBitmap(Bitmap bitmap) — загрузка растрового изображения,

- setImageDrawable(Drawable drawable) - загрузка готового изображения,

- setImageURI(Uri uri) — загрузка изображения по его URI.

Метод setImageResource(). Сначала в хмl-описании исходного изображения надо указать его id и задать программное имя (например, draw1), а также атрибут src (например, android:src="@drawable.my_draw"), затем по программному имени получить с помощью метода findViewById ссылку на объект типа ImageView и передать его свойства в новый объект этого же типа (в примере – ImV1 ), после чего в графическое свойство данного элемента метод setImageResource переносит исходное изображение по его атрибуту android:src ( @drawable.my_draw):

ImageView ImV1 = (ImageView) findViewById(R.id. draw1);

ImV1.setImageResource(R.drawable.my_draw);

 

Метод setImageBitmap(). Используется класс BitmapFactory для чтения ресурса изображения в объект Bitmap, а затем в ImageView указывается полученный Bitmap.

 

ImageView imgView = (ImageView) findViewById(R.id.imageView1);

imgView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.cat));

 

Метод setImageDrawable(). Если у вас есть готовое изображение, например, на SD-карте, то его можно использовать в качестве объекта Drawable.

ImageView imgView = (ImageView) findViewById(R.id.imageView1);

imgView.setImageDrawable(Drawable.createFromPath("/mnt/sdcard/cat.jpg"));

 

Метод setImageResource(). Сначала нужно получить ссылку на ImageView, а затем используется идентификатор изображения из ресурсов:

 

Метод setImageURI(). Берётся URI файла изображения и используется в качестве источника изображения. Этот способ годится для работы с локальными изображениями.

ImageView imgView = (ImageView) findViewById(R.id.imageView1);

imgView.setImageURI(URI.parse("file://mnt/sdcard/cat.jpg"));

 

Другие методы

Также вам часто придется использовать методы, связанные с размерами и масштабированием: setMaxHeight(), setMaxWidth(), getMinimunHeight(), getMinimunWidth(), getScaleType(), setScaleType().

Вопросы для проверки знаний.

1. Какие два свойства есть у простых кнопок?

2. Для чего xml-описанию кнопки задается дополнительное свойство android:id?

3. Для чего создается вспомогательный объект класса Button, в который помещается все содержание кнопки, какой метод при этом используется?

4. Какие три метода можно использовать для разработки программного кода функции-обработчика?

5. Для чего в файле activity.main.xml для кнопок задается свойство android:onClick?

6. Какие действия описываются в теле функции-обработчика?

7. Как можно упростить обработку нажатий на кнопки при большом их числе?

 

 



Поделиться:


Последнее изменение этой страницы: 2017-01-27; просмотров: 492; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.0.240 (0.008 с.)