Wie kann ich einen Welleneffekt auf die Textansicht oder die Bildansicht unter Android einstellen?

127

Ich möchte einen Welleneffekt auf die Text- und Bildansicht in Android Studio einstellen. Wie kann ich es tun?

Vasant
quelle
1
Bitte erläutern Sie zuerst Ihre Frage. Was Sie tatsächlich benötigen und was Sie bisher versucht haben. Wenn Sie einfach sagen, dass ich einen Welleneffekt möchte, ist dies eine sehr breite Frage. Sie können auch einen Link als Referenz für das, was Sie möchten, angeben.
Anirudh Sharma
Eigentlich möchte ich einen Effekt für die Textansicht und die Bildansicht zum Auswählen / Deaktivieren des Effekts.
Vasant
Haben Sie versucht, nach dem gleichen zu suchen?
Anirudh Sharma

Antworten:

274

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"
/>
Bikesh M.
quelle
2
Schön, dass es bei mir auf Lollipop funktioniert hat, aber auf diese Weise für welche Android Android-Version? und funktioniert es auf Pre-Lollipop?
Basheer AL-MOMANI
2
@ Richard Ich hatte vor einem Jahr ein Problem mit KitKat (oder ICS) und Klick-Listener funktionierten nicht ohne Android: clickable = "true" für diese Version
DoruChidean
25
Auf modernen Versionen von Android ist dies jetztandroid:background="?android:attr/selectableItemBackground"
tmm1
2
Wie kann ich das verwenden, wenn ich einen benutzerdefinierten Hintergrund haben möchte?
Mrid
3
Der Unterschied zwischen diesem mit / ohne Borderless youtube.com/watch?v=wOjA8tS5sbc
Gibolt
81

Wenn Sie möchten, dass die Welligkeit an die Größe von TextView / ImageView begrenzt wird, verwenden Sie:

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

(Ich denke es sieht besser aus)

Mikro
quelle
2
Gibt es einen Unterschied in der Verwendung von selectableItemBackgroundvsselectableItemBackgroundBorderless
Rakesh Kashyap
Ich weiß nicht, warum es nicht an Grenzen gebunden war und sich durch das gesamte Layout ausdehnte
VSB
4
@rakeshkashyap Der Unterschied besteht darin, dass durch selectableItemBackground die Welligkeit innerhalb der Ansichtsgröße (Breite / Höhe) bleibt. selectableItemBackgroundBorderless erweitert seine Welligkeit gegenüber anderen Ansichten (wie der offiziellen Rechner-App-Welligkeit)
Tudor
1
und müssen auch dieses >>> android setzen: focusable = "true"
Amos
25

Bitte beziehen Sie sich auf die Antwort für den Welleneffekt.

Welligkeit in der Textansicht oder Ansicht:

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

Welligkeit auf Button oder Imageview:

android:foreground="?android:attr/selectableItemBackgroundBorderless"
Vasant
quelle
4
Bitte beachten Sie, dass dies selectableItemBackgroundBorderlessAPI 21+ ist. Unten können Sie wählen selectableItemBackground, um Kompatibilitätsprobleme zu vermeiden
StevenTB
9

Sie können Android-Ripple-Hintergrund verwenden

Effekt starten

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

Animation stoppen:

rippleBackground.stopRippleAnimation();
IntelliJ Amiya
quelle
nett! Gibt es eine Kotlin-Version davon?
Ingenieur
7
<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" />

füge dies in drawable hinzu

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

Versuche dies.

Karthik Sridharan
quelle
5

Versuche dies. Das ist für mich gearbeitet.

android:clickable="true"
    android:focusable="true"
    android:background="?android:attr/selectableItemBackground"
Juboraj Sarker
quelle
1
Ich habe dies bereits zuvor erwähnt ( stackoverflow.com/a/50347848/1954960 ). Anstatt eine doppelte Antwort zu verursachen, klicken Sie bitte auf meine Antwort. Vielen Dank! :)
Zafer Celaloglu
4

Zusätzlich zu den obigen Antworten wird fokussierbar hinzugefügt, um die Warnung des UI-Editors zu vermeiden

android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
Zafer Celaloglu
quelle
3

Wenn die von @Bikesh M Annur ( hier ) veröffentlichte, gut gewählte Lösung für Sie nicht funktioniert, versuchen Sie Folgendes :

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

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

Auch bei Verwendung von android:clickable="true"add android:focusable="true"weil:

" Auf ein Widget, das als anklickbar, aber nicht als fokussierbar deklariert wurde, kann nicht über die Tastatur zugegriffen werden. "

Filipe Brito
quelle
3

Hinzufügen android:clickable="true" android:focusable="true"

Für Welligkeitseffekt

android:background="?attr/selectableItemBackgroundBorderless"

Für wählbaren Effekt

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

Für Button-Effekt

android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"
Silberhabicht
quelle
2

Aktualisieren Sie zusätzlich zur Antwort von @Bikesh M Annur unbedingt Ihre Support-Bibliotheken. Zuvor habe ich 23.1.1 verwendet und nichts ist passiert. Das Update auf 23.3.0 hat es geschafft.

Mark Pazon
quelle
1

Oder Sie können versuchen, diese Bibliothek (Android 9+) zu verwenden: RippleEffect

Integration

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

Verwendung:

<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>
walkmn
quelle
8
Ich habe es ziemlich lange benutzt, aber ich empfehle es nicht mehr, es sei denn, Sie zielen auf Android 2.3. Es ist fehlerhaft, verzögert und erzeugt Boilerplate-Code. Und da zu diesem Zeitpunkt 43% aller Geräte über Android 5 oder 6 verfügen, können Sie sich nur an selectableItemBackgroundAndroid 4 und höher halten.
0101100101
1

für Kreiswelligkeit: android:background="?attr/selectableItemBackgroundBorderless"

für Rechteckwelligkeit: android:background="?attr/selectableItemBackground"

Bita Mirshafiee
quelle
0

Der beste Weg, es hinzuzufügen:

    <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" />
Jack
quelle
-4

Bibliotheken verwenden. Dies ist einer von ihnen. Fügen Sie einfach die Abhängigkeit hinzu und fügen Sie den folgenden Code in XML vor jedem Element ein, das einen Welleneffekt benötigt:

<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">
Amirhossein Naghshzan
quelle
3
Oh bitte nein, es ist nicht der beste Weg, weil Sie weniger Kontrolle darüber haben und es im Android SDK selbst weitgehend unterstützt wird. Wenn jemand dies liest, empfehle ich, entweder den Kommentar von @Bikesh oder Karthik zu lesen, wenn Sie die Farbe steuern möchten.
Dion Segijn