Эффект пульсации на кнопке Android
Опубликовано: 30 Ноября, 2021
Сенсорная обратная связь в Android является обязательной всякий раз, когда пользователь нажимает на элемент, или эффект пульсации кнопки при нажатии на то же самое, дает пользователю уверенность в том, что кнопка была нажата, чтобы он мог дождаться следующего взаимодействия с приложением. Итак, в этой статье мы собираемся обсудить, какие типы ряби можно реализовать и где их можно использовать. Взгляните на следующее изображение, чтобы получить представление о дискуссии.
Шаги по реализации пульсации кнопок (обратной связи при касании) в Android
Шаг 1. Создайте пустой проект действия
- Создайте пустой проект Android Studio Activity. Обратитесь к Android | Как создать / запустить новый проект в Android Studio? чтобы узнать, как создать пустой проект Android Studio.
Шаг 2. Работа с файлом activity_main.xml
- В основном макете приложения реализовано 4 TextView. один для обратной связи касания по умолчанию с рамкой, второй - для обратной связи касания по умолчанию без рамки, третий - для настраиваемой обратной связи при касании с рамкой, четвертый - для настраиваемой обратной связи при касании без рамки.
- Вызовите следующий код для реализации пользовательского интерфейса.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" tools:context = ".MainActivity" tools:ignore = "HardcodedText" > <!--default touch feedback with border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginTop = "64dp" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Ripple With Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--default touch feedback without border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Ripple Without Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--custom touch feedback with border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:clickable = "true" android:focusable = "true" android:foregroundGravity = "bottom" android:gravity = "center|start" android:padding = "24dp" android:text = "Custom Ripple With Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--custom touch feedback without border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Custom Ripple Without Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> </ LinearLayout > |
Выходной интерфейс:
Шаг 3. Рябь по умолчанию в Android
- Рябь по умолчанию в Android для кнопок или текстовых кнопок может быть достигнута с помощью тегов:
- android:background=”?android:attr/selectableItemBackground”: this creates ripple effect with border.
- android:background=”?android:attr/selectableItemBackgroundBorderless”: this creates ripple effect without border.
Note: These tags are need to be set under the TextView.
- Чтобы реализовать оба эффекта пульсации по умолчанию в Android, вызовите следующий код внутри файла activity_main.xml.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" tools:context = ".MainActivity" tools:ignore = "HardcodedText" > <!--default touch feedback with border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginTop = "64dp" android:background = "?android:attr/selectableItemBackground" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Ripple With Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--default touch feedback without border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:background = "?android:attr/selectableItemBackgroundBorderless" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Ripple Without Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--custom touch feedback with border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:clickable = "true" android:focusable = "true" android:foregroundGravity = "bottom" android:gravity = "center|start" android:padding = "24dp" android:text = "Custom Ripple With Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--custom touch feedback without border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Custom Ripple Without Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> </ LinearLayout > |
Выход: запустить на эмуляторе
Шаг 4. Добавление пользовательских макетов
- Они должны быть реализованы в папке с возможностью переноса. После реализации их необходимо установить в качестве фона для этих текстовых кнопок.
- Чтобы добавить макеты, щелкните правой кнопкой мыши папку с возможностью рисования> новый> Файл ресурсов с возможностью рисования.
- Первый макет - custom_bordered_ripple.xml и вызывает в нем следующий код.
XML
<? xml version = "1.0" encoding = "utf-8" ?> android:color = "@color/colorAccent" > <!--this creates the mask with the ripple effect--> < item android:id = "@+id/mask" android:drawable = "@android:color/white" /> </ ripple > |
- Второй макет - custom_borderless_ripple.xml и вызывает следующий код.
XML
<? xml version = "1.0" encoding = "utf-8" ?> android:color = "@color/colorAccent" > </ ripple > |
- Следующим шагом является вызов этих настраиваемых макетов в качестве фона для кнопок Custom Ripple With Border и Custom Ripple Without Border внутри файла activity_main.xml.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" tools:context = ".MainActivity" tools:ignore = "HardcodedText" > <!--default touch feedback with border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_marginTop = "64dp" android:background = "?android:attr/selectableItemBackground" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Ripple With Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--default touch feedback without border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:background = "?android:attr/selectableItemBackgroundBorderless" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Ripple Without Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--custom touch feedback with border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:background = "@drawable/custom_bordered_ripple" android:clickable = "true" android:focusable = "true" android:foregroundGravity = "bottom" android:gravity = "center|start" android:padding = "24dp" android:text = "Custom Ripple With Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> <!--custom touch feedback without border--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:background = "@drawable/custom_borderless_ripple" android:clickable = "true" android:focusable = "true" android:gravity = "center|start" android:padding = "24dp" android:text = "Custom Ripple Without Border" android:textColor = "@android:color/black" android:textSize = "18sp" /> </ LinearLayout > |
Выход: запустить на эмуляторе
Хотите более динамичную и конкурентную среду для изучения основ Android?
Щелкните здесь, чтобы перейти к уникальному руководству, составленному нашими экспертами с целью мгновенно подготовить вашу отрасль!