Android button with imageview

Как я могу дать эффект щелчка imageview, как кнопка на Android?

У меня есть imageview в моем Android-приложении, которое я использую как кнопку с событием onClick, но, как вы можете догадаться, он не дает imageview кликабельный эффект при нажатии. Как я могу этого достичь?

29 ответов

вы можете создавать различные изображения для состояний clicked / not clicked и устанавливать их в onTouchListener следующим образом

лучший выбор заключается в том, что вы определяете селектор следующим образом

и выберите изображение в случае:

вы можете сделать это с помощью одного изображения, используя что-то вроде этого:

Я, вероятно, сделаю это подклассом ImageView (или ImageButton, поскольку это также подкласс ImageView) для более легкого повторного использования, но это должно позволить вам применить «выбранный» вид к imageview.

Это можно сделать с только один файл изображения использование метода ColorFilter. Однако ColorFilter рассчитывает работать с ImageViews, а не с кнопками, поэтому вам нужно преобразовать кнопки в ImageViews. Это не проблема, если вы используете изображения в качестве кнопок, но это более раздражает, если у вас есть текст. В любом случае, если вы найдете способ обойти проблему с текстом, Вот код, чтобы использовать:

который применяет красный оверлей к кнопке ( цветовой код-это шестнадцатеричный код для полностью непрозрачного красного цвета-первые две цифры-прозрачность, затем это RR GG BB.).

редактировать: хотя оригинальный ответ ниже работает и легко настраивается, см. этот пост адвокатом разработчика Android в Google, если вы хотите / нуждаетесь в более эффективной реализации. Также обратите внимание, что android:foreground и приходя на все виды, включая ImageView, по умолчанию в Android M.

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

трюк заключается в том, чтобы обернуть ImageView в FrameLayout с атрибутом android:foreground что позволяет нам определить оверлея для его содержания. Если мы установим android:foreground селектору (например, ?android:attr/selectableItemBackground для уровня API 11+) и прикрепите OnClickListener к FrameLayout вместо ImageView, изображение будет перекрыто с drawable нашего селектора — the нажмите эффект мы желаем!

Читайте также:  Nfs most wanted для android 4pda

(обратите внимание, что это должно быть помещено в родительский макет.)

использовать style=»?android: borderlessButtonStyle» в XML-файле. Он покажет Android по умолчанию нажмите эффект.

Источник

ImageSwitcher

Компонент ImageSwitcher наследуется от класса ViewSwitcher и позволяет заменять текущий элемент View на другой элемент View. Самый распространённый вариант — использование ImageView. Одновременно на экране может отображаться только один элемент View. Во время перехода между элементами View могут использоваться анимации (плавные появления/исчезновения и вращения). В студии находится в разделе Expert.

Базовый пример

Дочерние элементы View создаются при помощи экземпляра класса ViewFactory. Например, элемент ImageSwitcher и его соответствующий экземпляр класса ViewFactory могут быть использованы для генерации элемента ImageView текущего вопроса викторины и для последующего переключения на элемент ImageView следующего вопроса, когда пользователь щёлкнет по кнопке Вперёд или Назад.

Создадим новый проект и добавим элементы в разметку.

Обратите внимание, что элементы ImageView являются дочерними и вложены в ImageSwitcher. Также у атрибута onClick задан обработчик onSwitcherClick. Осталось написать код:

Метод showNext() выводит следующий элемент. Вывод происходит циклически в одном направлении. Если у вас используются две картинки, то они будут по очереди сменять друг друга. Для смены изображения в обратную сторону используется метод showPrevious().

Анимация затемнения

Мы рассмотрели простейший пример смены одного изображения на другое. Причём, смена происходит сразу, без задержки. Чтобы смена изображений происходила красиво, нужно подключить анимацию.

Добавив код к предыдущему примеру, вы получите плавную анимацию с использованием прозрачности. Первая картинка будет плавно исчезать, уступая второму изображению.

Динамическая смена картинок

Рассмотрим более продвинутый пример. Подготовьте несколько картинок в папке res/drawable. На экран активности добавим две кнопки для просмотра картинок Вперёд и Назад. На этот раз мы уже не используем дочерние элементы ImageView. Картинки будут загружаться динамически.

Напишем код для управления галереей.

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

Далее кроме знакомых нам методов для анимации, вызываем методы setFactory() и setImageResource().

Метод setFactory() помогает указать подходящий класс ViewFactory, позволяющий менять изображения по очереди. Класс ViewFactory имеет всего один обязательный метод — метод makeView(). Этот метод должен возвращать View подходящего типа, в нашем примере определённым образом настроенный элемент ImageView.

Метод setImageResource() загружает изображение из ресурсов.

Читайте также:  Word для андроид ответы

Вспомогательные методы setPositionNext() и setPositionPrev() позволяют установить значение для текущей позиции, которое используется в обработчиках нажатий кнопок.

Управление жестами

Если вы хотите управлять сменой картинок не через кнопки Вперёд/Назад, а движением пальца, то нужно подключить класс GestureDetector. Дополним предыдущий пример.

Слайд-шоу

По такому же принципу можно устроить анимацию в виде слайд-шоу.

Код. Не забудьте подготовить несколько картинок в ресурсах.

Источник

Добавить Imageview по нажатию на кнопку

Добавить строки по нажатию на кнопку
Доброго времени суток! Народ помогите решить вот такую задачу, надо при нажатии на кнопку добавить.

При нажатию на кнопку добавить Layout
не подскажете как по нажатию на кнопку вставить LinearLayout с определенной разметкой в тот Layout.

ComboBox. Добавить новую строку по нажатию на кнопку.
Необходимо добавить новую строчку в список COMBOBOX при нажатии кнопки. Помогите плз Добавлено.

Спасибо.
Что я неправильно сделал? Хочу по нажатию на созданном imageview загружать в него картинку из галереи но в момент выбора изображения приложение вылетает.

Pablito, я понял спасибо.

Так и не разобрался где эта область создаётся и как её уменьшить
Может подскажет кто? Вот код..

ExFau$t, не помогло.

Добавлено через 54 минуты
ExFau$t, может здесь что то.

Как можно добавить пункт в специальное меню по нажатию на кнопку
Помогите пожалуйста. Есть страница (в архиве), нужно создать на ней кнопку при нажатии на которую в.

Как в процедуру, выполняющуюся по нажатию на кнопку, добавить переменную цикла программы?
Всем здравствуйте. Есть программа, создающая в цикле необходимое количество форм. Формы должны.

Замена изображения в imageview по нажатию
Всем привет! Такой вопрос: Нажимаю на imagevie и хочу что бы менялось изображение. Имеется 3.

Возможно использовать ImageView как кнопку?
Возможно использовать ImageView как кнопку? Если да то как?

На форме создать кнопку и по нажатию на эту кнопку открыть фотографию
Салют всем форумчанам! Помогите мне! Как реализовать следующую задумку — на форме создать кнопку и.

Как добавить ImageView в колонку TableView?
Пытаюсь добавить, но проблема в том, что при добавлении фотографии, ее путь заносится в БД, а потом.

Источник

ImageSwitcher

Компонент ImageSwitcher наследуется от класса ViewSwitcher и позволяет заменять текущий элемент View на другой элемент View. Самый распространённый вариант — использование ImageView. Одновременно на экране может отображаться только один элемент View. Во время перехода между элементами View могут использоваться анимации (плавные появления/исчезновения и вращения). В студии находится в разделе Expert.

Читайте также:  Звуки при наборе номера для андроид

Базовый пример

Дочерние элементы View создаются при помощи экземпляра класса ViewFactory. Например, элемент ImageSwitcher и его соответствующий экземпляр класса ViewFactory могут быть использованы для генерации элемента ImageView текущего вопроса викторины и для последующего переключения на элемент ImageView следующего вопроса, когда пользователь щёлкнет по кнопке Вперёд или Назад.

Создадим новый проект и добавим элементы в разметку.

Обратите внимание, что элементы ImageView являются дочерними и вложены в ImageSwitcher. Также у атрибута onClick задан обработчик onSwitcherClick. Осталось написать код:

Метод showNext() выводит следующий элемент. Вывод происходит циклически в одном направлении. Если у вас используются две картинки, то они будут по очереди сменять друг друга. Для смены изображения в обратную сторону используется метод showPrevious().

Анимация затемнения

Мы рассмотрели простейший пример смены одного изображения на другое. Причём, смена происходит сразу, без задержки. Чтобы смена изображений происходила красиво, нужно подключить анимацию.

Добавив код к предыдущему примеру, вы получите плавную анимацию с использованием прозрачности. Первая картинка будет плавно исчезать, уступая второму изображению.

Динамическая смена картинок

Рассмотрим более продвинутый пример. Подготовьте несколько картинок в папке res/drawable. На экран активности добавим две кнопки для просмотра картинок Вперёд и Назад. На этот раз мы уже не используем дочерние элементы ImageView. Картинки будут загружаться динамически.

Напишем код для управления галереей.

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

Далее кроме знакомых нам методов для анимации, вызываем методы setFactory() и setImageResource().

Метод setFactory() помогает указать подходящий класс ViewFactory, позволяющий менять изображения по очереди. Класс ViewFactory имеет всего один обязательный метод — метод makeView(). Этот метод должен возвращать View подходящего типа, в нашем примере определённым образом настроенный элемент ImageView.

Метод setImageResource() загружает изображение из ресурсов.

Вспомогательные методы setPositionNext() и setPositionPrev() позволяют установить значение для текущей позиции, которое используется в обработчиках нажатий кнопок.

Управление жестами

Если вы хотите управлять сменой картинок не через кнопки Вперёд/Назад, а движением пальца, то нужно подключить класс GestureDetector. Дополним предыдущий пример.

Слайд-шоу

По такому же принципу можно устроить анимацию в виде слайд-шоу.

Код. Не забудьте подготовить несколько картинок в ресурсах.

Источник

Оцените статью