- SeekBar (Слайдер)
- Меняем задний фон экрана
- Дополнительное чтение
- Компонент Slider из библиотеки материального дизайна
- Создаём горизонтальный слайдер с изображениями для Android без единой строки кода
- Очень простой слайдер экранов
- Использование
- Подробности
- Sliders — Material Component For Android
- Types of sliders
- Continuous Slider
- Values changes Listeners
- Discrete Slider
- Setup the Slider Label
- app:labelBehavior
- LabelFormatter
- key properties of sliders
SeekBar (Слайдер)
SeekBar — это обычный слайдер, когда пользователь может передвигать ползунок пальцем на экране. Ползунок также можно двигать при помощи клавиш-стрелок.
Компонент SeekBar находится в разделе Widgets и наследуется от класса ProgressBar. В Android Studio 3.0 представлен в двух вариантах: SeekBar и SeekBar (Discrete).
Для отслеживания перемещения ползунка SeekBar необходимо реализовать интерфейс-слушатель SeekBar.OnSeekBarChangeListener с методами-заглушками:
- onProgressChanged() — уведомляет об изменении положения ползунка;
- onStartTrackingTouch() — уведомляет о том, что пользователь начал перемещать ползунок;
- onStopTrackingTouch() — уведомляет о том, что пользователь закончил перемещать ползунок
Заготовка для Kotlin (на Java будет ниже в статье).
Создадим новый проект и добавим компоненты SeekBar и TextView:
Напишем код, чтобы в текстовом поле отображалось текущее значение ползунка после того, как пользователь отпустит его.
Ниже представлены вариант на Android 5.0 и старый вариант на Android 2.3 до появления Material Design, чтобы вы видели, как менялся интерфейс.
Меняем задний фон экрана
Усложним пример и будем менять цвет у фона экрана. Добавим на форму три компонента SeekBar:
Напишем код, меняющий значение цвета через значения ползунка:
Кот Рыжик попросил выставить цвет, наиболее подходящий цвету его шкурки. Я решил ему немного польстить:
Дополнительное чтение
patryk1007/ShootingSlider — прикольный слайдер, напоминающий стрельбу из пушки в играх
Источник
Компонент Slider из библиотеки материального дизайна
Началось с небольшой детективной истории — разглядывая сайт Material Design, наткнулся на страницу Sliders. В описании говорилось, что данный компонент доступен для Android и даже дана ссылка на Гитхаб. Меня это немножко удивило, так как я ни разу о нём не слышал. Перехожу по ссылке — на Гитхабе говорится, что компонент пока находится в активной разработке и даны куцые примеры на Java. «В этих ваших интернетах» упоминания о Slider не нашёл. В официальной документации по библиотеке тоже нет никаких упоминаний.
Любопытство взяло верх и я стал самостоятельно копаться.
По своему внешнему виду Slider похож на стандартный Seekbar. Но небольшие отличия есть. Чтобы их увидеть, набросал простой проект. Добавим пару слайдеров на экран, кнопку и посмотрим на компонент в действии.
Я использовал последнюю версию библиотеки.
На всякий случай замечу, что когда я вручную прописал код, то Android Studio отказывалась показывать экран активности в режиме «Design», пришлось перезапускать студию. После этого всё нормализовалось.
Код для класса активности.
Запускаем и смотрим на результат.
Первое что бросается в глаза — мы можем установить несколько ползунков через slider.values. Они ведут себя независимо и не мешают друг другу.
У второго слайдера установлен дискретный режим через атрибут android:stepSize. Можно заметить, что в этом режиме на дорожке появились маленькие точки.
Если нажать на ползунок, то сверху появляется плашка с указанием текущего значения.
Щелчок на кнопке программно установит ползунок в нужном месте у первого слайдера. Учтите, что в нашем случае компонент превратится в тыкву слайдер с одним ползунком, так как мы сбросили список значений, оставив только одно.
У слайдера есть несколько слушателей. Для демонстрации привёл один из них — Slider.OnSliderTouchListener.
Текст на плашке можно менять. Это пригодится, когда используются большие числа. Тогда вместо чисел с большим количеством нулей (миллионы, триллионы и т.д.) можно использовать сокращенные варианты. За это поведение отвечает интерфейс LabelFormatter. Также существует вспомогательный интерфейс BasicLabelFormatter, который уже содержит полезные сокращения больших чисел типа 9.1K вместо 9100.
Давайте немного пошалим и напишем слово из трёх букв.
Новый элемент показался интересным и вполне пригодным для использования в проекте.
Источник
Создаём горизонтальный слайдер с изображениями для Android без единой строки кода
Во многих 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 разметкой в текстовом или визуальном редакторе.
В завершение приведём код слайдера, созданного в рамках данной статьи.
Источник
Очень простой слайдер экранов
Когда я начинал изучать андроид, мне очень хотелось добавить красивое перелистывание экранов — как в популярных приложениях. Хотелось просто некоторое подобие LinearLayout, содержимое которого можно будет прокручивать. Однако для того, чтобы написать простейший слайдер с использованием ViewPager, мне потребовалось несколько часов на разбор, а также целая страница кода. К тому же, присутствовали некоторые ограничения — добавление объекта внутрь тега не добавляло его в список виджетов.
Разобравшись, решил написать свой класс ScreenPager, который наследуется от ViewPager и работает очень просто. Причём работает как в xml, так и в чистом коде.
Использование
Для начала создайте простейшее приложение. Пусть его класс MainActivity находится в com.example.testapp и имеет метод onCreate. Теперь создайте в том же каталоге класс ScreenPager и добавьте туда следующий код, не вникая в него пока что:
Теперь вы можете создать файл screenpager.xml в вашем res/layout и поместить туда следующий код
Если вы вручную создаёте файл — то не забудьте сохранить его в кодировке UTF-8. И не забывайте о том, что строки нужно сохранять в строковых ресурсах, а не вставлять напрямую. В данной статье я намеренно не делал это, чтобы упростить код.
Теперь в MainActivity.onCreate добавим одну строчку
Всё! Слайдер работает. Но длинное имя com.example.testapp — это некрасиво. Мы же хотим сделать всё максимально просто, не так ли?
Оказалось, что система позволяет использовать короткие имена только для классов из android.view или android.widget. Если же мы хотим сделать так для нашего класса — следует переопределить Factory для LayoutInflater. Я написал метод getShortNameFactory, который возвращает специальную фабрику, позволяющую использовать сокращённое имя для нашего класса. Установим её в методе onCreate, причём сделать это надо до setContentView:
Также импортируйте LayoutInflater, если ваша IDE не сделает это за вас:
Теперь мы можем использовать использовать сокращённое название нашего класса:
Но это ещё не всё! Вы можете строить ваши экраны в коде, и это тоже просто:
Используйте на здоровье. Вместо кнопок можете вставлять ваши менеджеры компоновки или любые другие is-a View объекты. Правда ваша среда разработки (в моём случае это Android Studio) может ругаться на отсутствие layout_width и layout_height, но это предупреждение можно легко отключить.
Подробности
Как работает ViewPager и PagerAdapter, можете почитать в этой статье. Собственно, я по ней их и изучал.
Класс ScreenPager наследуется от ViewPager и включает в себя нестатический вложенный класс — ScreenPagerAdapter, который наследуется от PagerAdapter. Если понадобится его получить — это можно будет сделать через getAdapter(). Также внутри ScreenPager находится список из View, с которыми он должен работать.
Когда обрабатывается xml-код, происходит вызов addView для каждого объекта внутри тега ScreenPager. Мы переопределили эту функцию и она перенаправляет View в addScreen, чтобы занести его в коллекцию и уведомить адаптер об этом. Таким образом, оба случая — и создание слайдера через код, и через xml — проходят через addScreen.
Источник
Sliders — Material Component For Android
Sliders used to view and select a value or range from the given slider bar.They’re mainly used for adjusting settings such as volume and brightness, etc.
Sliders can use icons on both ends of the bar to represent a numeric or relative scale. The range of values or the nature of the values, such as volume change, can be communicated with icons.
Sliders add into Material design in library version 1.2.0. So, you need to add 1.2.0 or higher version on material design.
Types of sliders
There are two types of sliders.
- Continuous Slider
- Discrete Slider
Also, We have a another slider called range slider.
Lets see about these sliders in detail.
Continuous Slider
Continuous sliders allow us to select any value between the given start and end value.
For example, valueFrom = “0.0” and valueTo=”100.0″ in this case, you can select any values between from and to values like 55.5, 62.0, etc.
defining the slider In the layout,
valueFrom : starting value of the slider.
valueTo : ending value of the slider.
value: setting the initial value of the slider.
Similarly, we can add a RangeSlider in a layout:
The RangeSlider has app:values attribute to set the range for the slider. we need to provide the range in arrays.
Values changes Listeners
We can observe the changes of the slider in two different ways.
by using addOnSliderTouchListener, we can observe the sliders start and stop touch position values.
similarly, we can add touch listener for the range slider.
Sliders OnChangeListener notified eveerytime the slider value changes.
Also, OnChangeListener for the RangeSlider.
Discrete Slider
Discrete slider allows user to select an exact value in the given input range.
If you want to slider to be discrete, then you need to add attribute call android:stepSize=”5.0″. This will setup the step between valueFrom and valueTo values based on the stepSize value.
For example, valueFrom = 10.0, valueTo = 50.0 and stepSize = 10.0, then you can able to select values 10.0, 20.0, 30.0, 40.0, 50.0 only.
defining discrete slider in the layout:
Also, we can add discrete in the RangeSlider.
We can observe the discrete slider values change same as continuous slider. Please check value changes Listeners above.
Setup the Slider Label
The label will be shown at the top of the slider thumb after you touch the thumb. Basically, Slider layout holding the current selected value of the slider.
We can change the behavior and label format using the below methods.
app:labelBehavior
You can change how it’s drawn via the app:labelBehavior attribute or setLabelBehavior method.
app:labelBehavior having three different modes.
- floating (default) — draw the label above the slider view.
LabelFormatter
By using a LabelFormatter you can change the display format of the selected values based on your requirement like 10KG, 12MB, like that.
That can be achieved through the setLabelFormatter method.That can be achieved through the setLabelFormatter method.
In above code, I have rounded the selected values and converted into dollars.
key properties of sliders
A Slider has a four UI elements.
- Track
- Thumb
- Value Label
- Tick Mark (only for discrete slider)
Источник