- Регистрация
- 9 Май 2015
- Сообщения
- 1,071
- Баллы
- 155
- Возраст
- 52
Во многих Android приложениях можно встретить такой приём как просмотр изображений при помощи их перелистывания. Когда каждое из нескольких изображений располагается как бы на отдельном экране.
Существует достаточно много способов реализации для этого. Сегодня мы рассмотрим способ, который не требует написания ни одной строки кода на Java. Всё будет сделано при помощи XML разметки.
Основой для слайдера будет служить виджет HorizontalScrollView. В качестве примера расположим его внутри ConstraintLayout и зададим привязки таким образом, чтобы HorizontalScrollView был растянут по размеру контейнера (параметры привязки в примере кода в конце статьи).
У вложенного в HorizontalScrollView LinearLayout задаём ориентацию horizontal (по умолчанию установлено vertical) чтобы изображения располагались по горизонтали. А, внутри этого LinearLayout помещаем несколько ImageView с изображениями из ресурсов программы.
Для того чтобы изображения в слайдере отображались и перелистывались корректно у каждого ImageView устанавливаем следующие параметры: layout_width – WRAP_CONTENT, layout_height – MATCH_PARENT, adjustViewBounds – true.
Параметр adjustViewBounds необходим если для слайдера планируется использовать изображения в высоком разрешении. В противном случае между изображениями могут появиться пробелы.
Собственно, теперь слайдер готов. Важно отметить, что все вышеописанные действия выполнены полностью без написания программного кода на Java. Для создания подобного слайдера вполне достаточно работы с XML разметкой в текстовом или визуальном редакторе.
В завершение приведём код слайдера, созданного в рамках данной статьи.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android=http://schemas.android.com/apk/res/android
xmlns:app=http://schemas.android.com/apk/res-auto
xmlns:tools=http://schemas.android.com/tools
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.xmlslider.MainActivity">
<HorizontalScrollView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="0dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.514">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
app:srcCompat="@drawable/a001" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
app:srcCompat="@drawable/a002" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
app:srcCompat="@drawable/a003" />
</LinearLayout>
</HorizontalScrollView>
</android.support.constraint.ConstraintLayout>
Существует достаточно много способов реализации для этого. Сегодня мы рассмотрим способ, который не требует написания ни одной строки кода на Java. Всё будет сделано при помощи XML разметки.
Основой для слайдера будет служить виджет HorizontalScrollView. В качестве примера расположим его внутри ConstraintLayout и зададим привязки таким образом, чтобы HorizontalScrollView был растянут по размеру контейнера (параметры привязки в примере кода в конце статьи).
У вложенного в HorizontalScrollView LinearLayout задаём ориентацию horizontal (по умолчанию установлено vertical) чтобы изображения располагались по горизонтали. А, внутри этого LinearLayout помещаем несколько ImageView с изображениями из ресурсов программы.
Для того чтобы изображения в слайдере отображались и перелистывались корректно у каждого ImageView устанавливаем следующие параметры: layout_width – WRAP_CONTENT, layout_height – MATCH_PARENT, adjustViewBounds – true.
Параметр adjustViewBounds необходим если для слайдера планируется использовать изображения в высоком разрешении. В противном случае между изображениями могут появиться пробелы.
Собственно, теперь слайдер готов. Важно отметить, что все вышеописанные действия выполнены полностью без написания программного кода на Java. Для создания подобного слайдера вполне достаточно работы с XML разметкой в текстовом или визуальном редакторе.
В завершение приведём код слайдера, созданного в рамках данной статьи.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android=http://schemas.android.com/apk/res/android
xmlns:app=http://schemas.android.com/apk/res-auto
xmlns:tools=http://schemas.android.com/tools
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.xmlslider.MainActivity">
<HorizontalScrollView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="0dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.514">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
app:srcCompat="@drawable/a001" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
app:srcCompat="@drawable/a002" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
app:srcCompat="@drawable/a003" />
</LinearLayout>
</HorizontalScrollView>
</android.support.constraint.ConstraintLayout>