63

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

+1

Пожалуйста, сначала сформулируйте свой вопрос. Что вам нужно и что t вы пробовали до сих пор. Проще говоря, что я хочу эффект пульсации, это очень широкий вопрос. Вы также можете дать ссылку на ссылку о том, что вы хотите. Также см. http: // stackoverflow.com/help/how-to-ask –

+0

На самом деле, я хочу, чтобы эффект для текстового вида и изображения отображал эффект выбора/снятия выделения. – Vasant

+0

Вы пробовали искать то же самое? –

ответ

168

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" 
/> 
+2

приятно, что он работал со мной на леденец, но этот способ для Android-андроид-версии? и работает ли он на pre-lollipop? –

+1

потрясающий! спасибо man – FireZenk

+0

Если вы установите прослушиватель кликов в TextView, вам не нужно добавлять android: clickable = "true" в представление в XML-файле. – Richard

5

Вы можете использовать android-ripple-background

Start Effect

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(); 
1

Или вы можете попробовать использовать эту библиотеку (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> 
+7

Я использовал его довольно долго, но больше не рекомендую, если вы не нацелитесь на Android 2.3. Это багги, лагги и создает шаблонный код. И так как в настоящее время у 43% всех устройств есть Android 5 или 6, вы можете просто придерживаться 'selectableItemBackground' при таргетинге на Android 4 и выше. – 0101100101

0

Лучший способ использует библиотеки. This - один из них. Просто добавьте свою зависимость и поставить ниже кода в XML перед каждыми элементами, которые необходимо мультипликационный эффект:

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

О, пожалуйста, нет, это не лучший способ, потому что у вас меньше контроля над ним, и он широко поддерживается в Android SDK. Если кто-нибудь читает это, я рекомендую либо посмотреть комментарий @Bikesh, либо Karthik, если вы хотите контролировать цвет. –

42

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

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

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

+1

Есть ли разница в использовании '' 'selectableItemBackground'''' '' 'selectableItemBackgroundBorderless''' –

+0

Я не знаю, почему он не был ограничен границами и он расширяется по всему макету – VSB

+1

@rakeshkashyap. Разница заключается в том, что selectableItemBackground будет держите рябь в пределах ее вида (ширина/высота). selectableItemBackgroundBorderless будет расширять рябь по другим представлениям (например, пульсация приложения официального калькулятора) – Tudor

1

В дополнение к ответу @Bikesh M Annur обязательно обновите свои библиотеки поддержки. Раньше я использовал 23.1.1, и ничего не происходило. Обновление его до 23.3.0 сделало трюк.

3
<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" /> 

добавить это в вытяжке

<?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" /> 

попробовать это.

1

В случае хорошо голосовавшие решение, которое разместил @Bikesh M Annur (here) не работает для вас, попробуйте использовать:

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

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

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

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

Смежные вопросы