Как установить эффект пульсации на textview или imageview на Android?
Я хочу установить эффект пульсации на textview и imageview в Android Studio. Как я могу это сделать?
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">