Как установить эффект пульсации на textview или imageview на Android?


Я хочу установить эффект пульсации на textview и imageview в Android Studio. Как я могу это сделать?

11 81

11 ответов:

Ref:http://developer.android.com/training/material/animations.html,

http://wiki.workassis.com/category/android/android-xml/

<TextView
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>

<ImageView
.
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>

Если вы хотите, чтобы пульсация была ограничена размером TextView / ImageView используйте:

<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>

(Я думаю, что это выглядит лучше)

можно использовать android-ripple-фон

Запустить Эффект

final RippleBackground rippleBackground=(RippleBackground)findViewById(R.id.content);
ImageView imageView=(ImageView)findViewById(R.id.centerImage);
imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        rippleBackground.startRippleAnimation();
    }
});

остановить анимацию:

rippleBackground.stopRippleAnimation();
<TextView
            android:id="@+id/txt_banner"
            android:layout_width="match_parent"
            android:text="@string/banner"
            android:gravity="center|left"
            android:layout_below="@+id/title"
            android:background="@drawable/ripple_effect"
            android:paddingLeft="15dp"
            android:textSize="15sp"
            android:layout_height="45dp" />

добавьте это в drawable

<?xml version="1.0" encoding="utf-8"?>
<!--this ribble animation only working for >= android version 21-->
<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/click_efect" />

попробуйте это.

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

android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"

В случае же голосовал решение вывешено @Бикеш м Аннаре (здесь) не работает для вас, попробуйте использовать:

<TextView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

<ImageView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

кроме того, при использовании android:clickable="true" добавить android:focusable="true" потому что:

"виджет, который объявлен кликабельным, но не объявлен фокусируемым, недоступен через клавиатуру."

пожалуйста, см. Ниже Ответ на волновой эффект.

пульсация на Textview или view:

android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"

пульсация на кнопке или Imageview:

android:foreground="?android:attr/selectableItemBackgroundBorderless"

или вы можете попробовать использовать эту библиотеку (android 9+):RippleEffect

интеграция

dependencies {
    compile 'com.github.traex.rippleeffect:library:1.3'
}

использование:

<com.andexert.library.RippleView
  android:id="@+id/more"
  android:layout_width="?android:actionBarSize"
  android:layout_height="?android:actionBarSize"
  android:layout_toLeftOf="@+id/more2"
  android:layout_margin="5dp"
  rv_centered="true">

  <ImageView
    android:layout_width="?android:actionBarSize"
    android:layout_height="?android:actionBarSize"
    android:src="@android:drawable/ic_menu_edit"
    android:layout_centerInParent="true"
    android:padding="10dp"
    android:background="@android:color/holo_blue_dark"/>

</com.andexert.library.RippleView>

В дополнение к ответу @Бикеш м Аннаре, обязательно обновите библиотеки. Ранее я использовал 23.1.1 и ничего не произошло. Обновление его до 23.3.0 сделало трюк.

лучший способ-это использование библиотек. этой - один из них. Просто добавьте свою зависимость и поместите ниже код в xml перед каждым элементом, который нуждается в ripple effect:

<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">

попробуйте это. Это сработало для меня.

android:clickable="true"
    android:focusable="true"
    android:background="?android:attr/selectableItemBackground"