Android'de metin görünümünde veya görüntü görünümünde dalgalanma efekti nasıl ayarlanır?


127

Android Studio'da metin görünümü ve görüntü görünümü üzerinde bir dalgalanma efekti ayarlamak istiyorum. Nasıl yapabilirim?


1
Lütfen önce sorunuzu detaylandırın.Aslında neye ihtiyacınız olduğunu ve şimdiye kadar ne denediniz? Basitçe dalgalanma efekti istediğimi söylemek onu çok geniş bir soru haline getiriyor.Ayrıca, ne istediğinize dair referans için bir bağlantı da verebilirsiniz . com / yardım / nasıl-sorulur
Anirudh Sharma

Aslında metin görünümü ve resim görünümü seçme / seçmeyi kaldırma efekti için efekt istiyorum.
Vasant

aynısını aramayı denedin mi?
Anirudh Sharma

Yanıtlar:


277

Referans: 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
güzel benimle lolipop üzerinde çalıştı, ancak bu şekilde hangi android android sürümü için? ve pre-lolipop üzerinde çalışıyor mu?
Basheer AL-MOMANI

2
@Richard Bir yıl önce KitKat (veya ICS) ile bir sorun yaşadım ve tıklama dinleyicileri android olmadan çalışmadı: clickable = "true" bu sürüm için
DoruChidean

25
Android'in modern sürümlerinde bu artıkandroid:background="?android:attr/selectableItemBackground"
tmm1

2
Özel bir arka plan istediğimde bunu nasıl kullanabilirim?
mrid


82

Dalgalanmanın TextView / ImageView boyutuna bağlı olmasını istiyorsanız şunu kullanın:

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

(Bence daha iyi görünüyor)


2
selectableItemBackgroundVsselectableItemBackgroundBorderless
rakesh kashyap kullanımında

Neden sınırlarla sınırlandırılmadığını bilmiyorum ve tüm düzen boyunca genişliyor
VSB

4
@rakeshkashyap'ın farkı, selectableItemBackground'un dalgalanmayı görünüm boyutunda (genişlik / yükseklik) tutmasıdır. selectableItemBackgroundBorderless, dalgalanmasını diğer görünümler üzerinden genişletecek (resmi hesap makinesi uygulaması dalgalanması gibi)
Tudor

1
ve ayrıca bunu >>> android: focusable = "true" olarak ayarlamanız gerekiyor
Amos

Faydalı. Teşekkürler.
Pooja

25

Dalgalanma etkisi için lütfen aşağıdaki cevaba bakın.

Metin görünümünde veya görünümünde dalgalanma:

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

Düğme veya Görüntü Görünümünde dalgalanma:

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

4
Lütfen bunun selectableItemBackgroundBorderlessAPI 21+ olduğuna dikkat edin . Aşağıda selectableItemBackgrounduyumluluk sorunundan kaçınmayı seçebilirsiniz
StevenTB

10

Sen kullanabilirsiniz android-dalga-arka plan

Başlatma Etkisi

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

Animasyonu durdur:

rippleBackground.stopRippleAnimation();

Güzel! bunun bir Kotlin versiyonu var mı?
rengineer

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

bunu çekmeceye ekle

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

bunu dene.



5

Yukarıdaki cevaplara ek olarak, UI editörünün uyarısını önlemek için odaklanabilir ekleniyor

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

4

@ Bikesh M Annur ( burada ) tarafından yayınlanan iyi oylanmış bir çözüm sizin için işe yaramazsa, kullanmayı deneyin:

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

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

Ayrıca, android:clickable="true"add kullanırken android:focusable="true"çünkü:

" Tıklanabilir olduğu bildirilen ancak odaklanılabilir olduğu bildirilmeyen bir widget'a klavye aracılığıyla erişilemez. "


3

Ekle android:clickable="true" android:focusable="true"

Dalgalanma Etkisi İçin

android:background="?attr/selectableItemBackgroundBorderless"

Seçilebilir Efekt İçin

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

Düğme efekti için

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

2

@Bikesh M Annur'un cevabına ek olarak, destek kitaplıklarınızı güncellediğinizden emin olun. Daha önce 23.1.1 kullanıyordum ve hiçbir şey olmadı. 23.3.0'a güncellemek hile yaptı.


2

daire dalgalanması için: android:background="?attr/selectableItemBackgroundBorderless"

dikdörtgen dalgalanma için: android:background="?attr/selectableItemBackground"


1

Veya bu kitaplığı kullanmayı deneyebilirsiniz (android 9+): RippleEffect

bütünleşme

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

Kullanımı:

<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
Oldukça uzun bir süre kullandım, ancak Android 2.3'ü hedeflemediğiniz sürece artık önermiyorum. Buggy, gecikmeli ve standart kod üretir. Ve şu anda tüm cihazların% 43'ü Android 5 veya 6'ya sahip selectableItemBackgroundolduğundan, Android 4 ve üstünü hedeflerken buna bağlı kalabilirsiniz .
0101100101

0

Eklemenin en iyi yolu:

    <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

Kitaplıkları kullanma. Bu onlardan biri. Dalgalanma etkisi gerektiren her öğeden önce bağımlılığını ekleyin ve aşağıdaki kodu xml olarak koyun:

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

4
oh lütfen hayır, bu en iyi yol değil çünkü üzerinde daha az kontrole sahipsiniz ve Android SDK'nın kendisinde yaygın olarak destekleniyor. Herhangi biri bunu okursa, rengi kontrol etmek istiyorsanız @Bikesh veya Karthik'in yorumlarına bakmanızı öneririm.
Dion Segijn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.