У меня есть кнопка с изображением, которая не реагирует на анимацию при нажатии, потому что это статическое изображение, в отличие от обычных кнопок на леденец, которые имеют встроенный эффект пульсации. Я хотел бы добавить эффект создания эффекта соприкосновения материала к изображению, но, похоже, не может найти способ его реализовать. Я могу установить цветной фильтр по изображению, но это не эффект пульсации. Пример того, что я пытаюсь сделать, - это когда вы держите обложку обложки альбома в Google Play Музыке, а теневая пульсация перемещается по изображению.Применить дизайн материалов Touch Ripple to ImageButton?
ответ
Для еще лучшего результата:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_button"
android:background="?attr/selectableItemBackgroundBorderless"
/>
Вы можете просто добавить фон к вашему ImageButton так:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_dialog"
android:background="?android:attr/selectableItemBackground" />
Что делать, если у меня уже есть возможность рисования в качестве фона? – JohannaNoobie
Или, наоборот, если вы ориентируетесь API 21+, используйте backgroundTint
:
<ImageButton
android:backgroundTint="@color/white"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/ic_button"
style="@style/Widget.AppCompat.ImageButton"/>
этот ответ не работает. – JohannaNoobie
Я получил хорошие ответы от i.shadrin (here) и Nicolar с (here).
Разница между их ответами заключается в том, что ?attr/selectableItemBackgroundBorderless
может предоставить вам android.view.InflateException
, поэтому решение ?android:attr/selectableItemBackground
.
FWIW, я не знаю, почему исключение происходит, потому что первый ответ работал отлично во всех моих старых проектах, но в моем недавнем проекте не было (возможно, из-за темы приложения = android:Theme.Material
?).
Самое странное, что происходит в том, что несмотря на то, Волновой эффект был показан именно из-ограничивающая ImageButton, поэтому решение:
- Чтобы использовать
android:foreground="?android:attr/selectableItemBackgroundBorderless"
вместоandroid:background="?android:attr/selectableItemBackgroundBorderless"
Надеюсь, это поможет вам, если вы столкнулись с этим.
- 1. Существенный дизайн Ripple Event
- 2. Как применить дизайн материалов к версиям Android версии 5.0?
- 3. Дизайн анимации материалов
- 4. Дизайн материалов - где это?
- 5. Дизайн материалов на iOS
- 6. Custom EditText - Дизайн материалов
- 7. Дизайн материалов Выберите Dropdown
- 8. ImageButton touch feedback
- 9. ImageButton over Button touch
- 10. crash - дизайн материалов android 5.0
- 11. Дизайн материалов для подкласса EditText
- 12. Дизайн материалов и Android Studio
- 13. Дизайн материалов с панелью приложений
- 14. Интерфейс Android и дизайн материалов
- 15. дизайн материалов и minSdkVersion = 10
- 16. AlertDialog неправильно использует дизайн материалов?
- 17. Материальный дизайн Ripple/Stay Solid Animation
- 18. Как создать хороший дизайн и нормальное ощущение приложения (дизайн материалов)
- 19. Дизайн материалов для Android в Eclipse
- 20. Прокрутите вниз, чтобы обновить Дизайн материалов
- 21. Дизайн материалов в API 19 (KitKat)?
- 22. Дизайн материалов для Android - LinearLayout elevation
- 23. Дизайн материалов: кнопка или редактирование текста?
- 24. Дизайн материалов sidenav в контентной области
- 25. Конвертировать дизайн Android (пряники) в конструкцию материалов
- 26. Дизайн материалов на планшетах Pre-Lollipop
- 27. Дизайн материалов: Расширенная панель инструментов + Кнопка возврата
- 28. Простой календарь в ReactJS и дизайн материалов
- 29. Дизайн материалов в Android Studio прекратил работать
- 30. Как создать дизайн пользовательских материалов в андроиде?
Это лучший ответ - дайте круговой ощущения, а также эффект пульсации, спасибо. – ElliotM
Мне нравится этот ответ! – grAPPfruit
Как вы инвертируете эффект для использования на темном фоне? –