Як встановити ефект пульсації на перегляд тексту чи перегляд зображень на Android?


127

Я хочу встановити ефект пульсації на перегляд тексту та перегляд зображень в Android Studio. Як я можу це зробити?


1
Будь ласка, сформулюйте своє запитання спочатку. Що насправді вам потрібно і що ви намагалися до цього часу. Просто кажучи, що я хочу, щоб ефект пульсацій викликає дуже широке запитання. Ви також можете дати посилання для посилання на те, що ви хочете. Також дивіться stackoverflow . com / help / how-to ask
Anirudh Sharma

Насправді я хочу ефект для перегляду тексту та перегляду зображень / вибору ефекту.
Васан

ви намагалися шукати те саме?
Аніруд Шарма

Відповіді:


276

Посилання: 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 для Android? і чи працює це на попередньому льодянику?
Basheer AL-MOMANI

2
@Richard У мене виникла проблема з KitKat (або ICS) рік тому, і слухачі кліків не працювали без андроїда: clickkable = "true" для цієї версії
DoruChidean

25
На сучасних версіях для android це заразandroid:background="?android:attr/selectableItemBackground"
tmm1

2
Як використовувати це, коли я хочу користувальницький фон ??
середина

3
Різниця між цим з / без Borderless youtube.com/watch?v=wOjA8tS5sbc
Gibolt

82

Якщо ви хочете, щоб пульсація була обмежена розміром використання TextView / ImageView:

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

(Я думаю, що це виглядає краще)


2
Чи є різниця у використанні selectableItemBackgroundvsselectableItemBackgroundBorderless
rakesh kashyap

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

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

1
а також потрібно встановити цей >>> android: focusable = "true"
Амос

Корисні. Дякую.
Pooja

25

Нижче наведено відповідь щодо ефекту пульсацій.

пульсація в Textview або перегляді:

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

пульсація на кнопці або перегляді зображень:

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

4
Зауважте, що selectableItemBackgroundBorderlessце API 21+. Нижче ви можете selectableItemBackgroundуникнути проблеми сумісності
StevenTB

10

Можна використовувати android-ripple-background

Початковий ефект

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

приємно! чи існує котлінська версія цього?
рейнджейнжер

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

спробуйте це.


6

спробуйте це. Це для мене працює.

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

1
Я вже згадував про це раніше ( stackoverflow.com/a/50347848/1954960 ), тож замість того, щоб викликати повторювану відповідь, будь ласка, ще раз подякуйте мою відповідь, Дякую! :)
Zafer Celaloglu

5

На додаток до вищезазначених відповідей додається фокусується, щоб уникнути попередження редактора інтерфейсу користувача

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

4

У випадку, якщо рішення про голосування, опубліковане @Bikesh M Annur ( тут ) не працює для вас, спробуйте використати:

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

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

Також при використанні android:clickable="true"додати, android:focusable="true"оскільки:

" Віджет, оголошений таким, що можна натискати, але не оголошений фокусируваним, недоступний через клавіатуру. "


3

Додайте android:clickable="true" android:focusable="true"

Для ефекту Ripple

android:background="?attr/selectableItemBackgroundBorderless"

Для вибору ефекту

android:background="?android:attr/selectableItemBackground"

Для ефекту Кнопки

android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"

2

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


2

для пульсації кола: android:background="?attr/selectableItemBackgroundBorderless"

для пульсації прямокутника: android:background="?attr/selectableItemBackground"


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>

8
Я використовував його досить давно, але більше не рекомендую його, якщо ви не орієнтуєтесь на Android 2.3. Він баггі, млявий і створює код котла. А оскільки на даний момент у 43% усіх пристроїв є Android 5 або 6, ви можете просто дотримуватися, selectableItemBackgroundколи орієнтуєтесь на Android 4 і вище.
0101100101

0

Найкращий спосіб його додати:

    <ImageView
        android:id="@+id/ivBack"
        style="?attr/actionButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:src="@drawable/ic_back_arrow_black"
        android:tint="@color/white" />

-4

Використання бібліотек. Це одна з них. Просто додайте її залежність і поставте нижче коду в xml перед кожними елементами, які потребують ефекту пульсації:

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

4
о, будь ласка, ні, це не найкращий спосіб, оскільки ви маєте менший контроль над ним, і він широко підтримується в самому Android SDK. Якщо хтось читає це, я рекомендую або подивитись коментар @Bikesh або Karthik, якщо ви хочете контролювати колір.
Діон Сегінь
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.