Статьи

Дизайн пользовательского интерфейса Android: основные элементы управления изображением

В этом уроке вы узнаете, как создавать базовые элементы управления изображениями Android. Затем вы узнаете, как настраивать, стилизовать и управлять этими элементами управления различными способами.

Из этого туториала вы узнаете, как создать несколько разных элементов управления ImageView в приложении Android. Во-первых, вы узнаете, как добавить базовые элементы управления изображениями в файлы макета и каковы некоторые из их наиболее полезных атрибутов. Далее вы узнаете, как настроить содержимое элемента управления изображения несколькими различными способами. Наконец, мы обсудим некоторые другие функции, доступные для элемента управления ImageView в Android.

Android SDK включает в себя простой статический текстовый элемент управления для использования в ваших макетах: ImageView (android.widget.ImageView). Хорошим примером использования элемента управления ImageView является отображение значка или графики на экране. Элементы управления ImageView могут быть растровыми изображениями (такими как PNG, JPG и GIF) или могут быть другими типами Drawable, которые поддерживаются платформой Android, например фигурами, определенными в XML.

Вот пример экрана с пятью различными элементами управления ImageView, отображаемыми на нем.

Экран Android с многочисленными элементами управления ImageView

Начните с создания проекта Android. Реализуйте свое Android-приложение как обычно. После настройки проекта и запуска приложения определите, на каком экране вы хотите добавить элементы управления ImageView. Возможно, вы просто создали новый проект Android с его активностью и макетом по умолчанию (main.xml). Это будет работать для этого упражнения. После того, как вы настроили свой проект Android, вы готовы приступить к этому уроку.

Элементы управления ImageView обычно включаются в файл ресурсов макета вашей деятельности. Например, чтобы добавить элемент управления ImageView в ресурс макета main.xml, связанный с вашим приложением, необходимо отредактировать файл макета. Вы можете сделать это в Eclipse, используя дизайнер ресурсов Layout или непосредственно редактируя XML. Элементы управления также могут быть созданы программно и добавлены на экран во время выполнения. Просто создайте элемент управления ImageView (android.widget.ImageView) и добавьте его в свой макет в своей деятельности.

Чтобы добавить элемент управления ImageView в файл ресурсов макета, откройте файл макета /res/layout/main.xml, который является частью вашего проекта Android. Нажмите на LinearLayout (или родительский элемент управления макетом), к которому вы хотите добавить элемент управления ImageView. В Eclipse из графического дизайнера ресурсов макета вы можете выбрать элемент управления ImageView из раздела «Изображения и мультимедиа» палитры и перетащить его в родительский макет.

Чтобы настроить внешний вид и поведение элемента управления ImageView, настройте атрибуты элемента, выбрав элемент управления (на вкладке «Контур» или в окне «Предварительный просмотр») и изменив его атрибуты на вкладке «Свойства». Вы также можете редактировать XML напрямую.

Конкретные атрибуты элементов управления ImageView, о которых вы хотите знать:

  • Присвойте элементу управления ImageView уникальное имя, используя свойство id, чтобы на него могли ссылаться другие элементы управления в макете XML и программно из кода Java.
  • При работе с макетами и рисованными ресурсами установите изображение, отображаемое в элементе управления ImageView, с помощью свойства src; это может быть программно установлено с помощью метода setImageResource (), или есть другие способы загрузки изображений из других источников, таких как setImageBitmap, setImageDrawable () и setImageUri (), в зависимости от того, где происходит графика.
  • Как обычно, установите соответствующие значения высоты макета и ширины макета элемента управления.
  • Установите любые другие атрибуты, которые вы хотите настроить внешний вид элемента управления. Например, отрегулируйте отступы, видимость или другие параметры.

Например, вот основной XML, найденный в файле макета для ImageView:

1
2
3
4
5
<ImageView
    android:id=»@+id/imageViewOfGirl»
    android:src=»@drawable/person»
    android:layout_width=»wrap_content»
    android:layout_height=»wrap_content»</ImageView>

Наконец, если и когда вы хотите получить программный доступ к ImageView в вашем классе Activity, просто используйте его идентификатор, чтобы загрузить его:

1
ImageView img = (ImageView) findViewById(R.id.imageViewOfGirl);

Теперь давайте обсудим некоторые из наиболее распространенных атрибутов для элементов управления ImageView.

По умолчанию содержимое элемента управления ImageView имеет определенный размер, обычно размер графических размеров. Они также ограничены их атрибутами layout_width и layout_height. Вы также можете указать минимальные и максимальные атрибуты высоты и ширины с помощью ресурса измерения (dp, px и т. Д.). Для получения дополнительной информации о измерениях см. Документацию Android SDK в разделе «Размеры ресурса» .

В XML эти свойства будут отображаться в вашем элементе управления ImageView как:

1
2
3
4
android:minHeight=»50dp»
android:minWidth=»50dp»
android:maxHeight=»150dp»
android:maxWidth=»150dp»

Здесь мы указываем, что элемент управления должен иметь определенный минимальный и максимальный размер. Обратите внимание, что при использовании в одиночку указание этих размеров не сохраняет соотношение сторон изображения, и поэтому оно может выглядеть сжатым, сжатым или иным образом не идеальным.

Если вы работаете с элементами управления ImageView в своем коде Java, вы также можете программно установить минимальный и максимальный размеры элемента управления ImageView, используя методы setMinimumHeight (), setMaxHeight (), setMinimumWidth () и setMaxWidth () класса ImageView. ,

Когда вы изменяете размер элемента управления ImageView, независимо от того, хотите ли вы увеличить или уменьшить масштаб, вам часто нужно сохранить его пропорции или относительные размеры ширины к высоте, чтобы изображение выглядело правильно. На рисунке выше показано несколько элементов управления ImageView, отображающих одно и то же изображение девушки, только с разной шириной, высотой и соотношением сторон.

Вы можете указать, что элемент управления ImageView сохраняет свое соотношение сторон, используя атрибут AdjustViewBounds. В XML это свойство будет отображаться в вашем элементе управления ImageView как:

1
android:adjustViewBounds=»true»

Этот атрибут чаще всего сочетается с типом масштабирования, которого вы хотите достичь. Простейшим и наиболее распространенным типом шкалы, который вы будете использовать, является тип fitXY, который масштабирует как высоту, так и ширину вверх или вниз до тех пор, пока он не будет соответствовать указанным максимальным размерам. Имейте в виду, что это не означает, что элементом управления будут ТОЧНЫЕ максимальные / минимальные размеры этих размеров, если только они не соответствуют точно одинаковому соотношению сторон.

1
android:scaleType=»fitXY»

Если вы работаете с элементами управления ImageView в своем коде Java, вы также можете программно установить границы и тип масштабирования элемента управления ImageView, используя методы setAdjustViewBounds () и setScaleType () класса ImageView.

Как и любой другой элемент управления представлением, ImageView может быть включен для щелчка, если вы того пожелаете. Эта возможность по умолчанию отключена в ImageView. Включить его просто. Просто включите щелчок ImageView с помощью атрибута clickable, а затем укажите свой обработчик кликов с атрибутом onClick, например:

1
2
android:clickable=»true»
android:onClick=»onClickGirl»

Затем вам нужно обновить класс Activity и реализовать метод onClickGirl, например:

1
2
3
4
public void onClickGirl(View view)
{
   Toast.makeText(this, «You clicked me!», Toast.LENGTH_SHORT).show();
}

Элементы управления ImageView также поддерживают длинные щелчки, но вам нужно будет регистрировать их программно. Вы также можете сделать фокусировку ImageView и включить или отключить тактильную обратную связь, если вы того пожелаете.

Как правило, вы хотите предоставить мобильные графические ресурсы, размер которых соответствует размеру устройств, на которые вы хотите настроить таргетинг. Вот несколько разных сценариев:

  • Если вы храните графику в качестве ресурсов проекта, вы можете рассмотреть возможность предоставления альтернативных версий для экранов другого размера или разрешения (см. Android SDK на Альтернативных ресурсах для получения дополнительной информации о квалификаторах ресурсов ).
  • Если вам нужна простая графика, которая растягивается до разных размеров, вы можете взглянуть на графику NinePatch.
  • Если отображаемая графика поступает от третьей стороны, возможно, у вас меньше контроля над размером. У вас все еще есть варианты: вы можете уменьшить их на лету, как обсуждалось ранее, или вы можете использовать класс Bitmap, чтобы физически создать фактическую графику, размер которой соответствует вашему желанию, и затем отобразить ее.

Приложения Android используются многими разными пользователями. Доступность — это то, что нужно учитывать при написании ваших приложений. Каким образом человек с ограниченными возможностями или без зрения будет работать с вашим приложением? Одна из простых техник, которая в значительной степени способствует поддержке встроенных программ чтения с экрана и других специальных возможностей Android, состоит в том, чтобы всегда, всегда, задавать описание содержимого для каждого графического элемента на экране — ImageView контролирует больше всего:

1
android:contentDescription=»Picture of a girl»

Устанавливая описание контента, даже те, кто не видит девушку на картинке, узнают, что она есть, и могут дать ей свое воображение.

Вы также можете установить это поле программно, используя метод setContentDescription ().

Элементы управления ImageView обычно используются в пользовательских интерфейсах приложений Android для отображения графического (Drawable) содержимого различными способами. Из этого руководства вы узнали, как создавать элементы управления изображениями Android и настраивать их различными простыми способами. Эти атрибуты можно смешивать и сопоставлять, чтобы обеспечить очень гибкое отображение изображения на экране.