Jak mogę uzyskać efekt tętnienia w prostym układzie liniowym / względnym po dotknięciu układu?
Próbowałem ustawić tło układu na coś takiego:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item android:drawable="@android:color/white"/>
</ripple>
Jednak po dotknięciu układu widzę tylko zwykłe białe tło i brak efektu tętnienia. Co ja robię źle?
Edytować:
Dla porównania, oto mój plik xml układu:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/test"
android:clickable="true">
</RelativeLayout>
<item android:drawable="@android:color/white"/>
sekcję. Więc nie jestem pewien, jak to ma działać, gdybym chciał mieć kolor tła w układzie. Umieszczenie tego na innym układzie z kolorem tła również nie działa!Odpowiedzi:
Ustaw te właściwości w swoim układzie (jeśli układ ma domyślne białe / jasne tło):
W tym przypadku nie potrzebujesz niestandardowego rysunku.
Jeśli jednak twój układ ma czarne / ciemne tło, musisz stworzyć własne tętnienie, które można narysować, takie jak ten:
Następnie ustaw to ripple do rysowania jako właściwość android: background .
Możesz zobaczyć wiele przykładów tego typu zmarszczek w AOSP: tutaj
źródło
background
?Dodam to dodatkowo do odpowiedzi Igora Ganapolsky'ego na wypadek, gdyby ktoś chciał mieć układ w innym kolorze, a także efekt falowania. Po prostu tworzysz efekt tętnienia w elementach do rysowania:
następnie podaj go jako tło układu lub dowolny przycisk, o którym wspomniał Igor Ganapolsky w swojej odpowiedzi.
źródło
Musisz zmienić następujący fragment kodu w dowolnym widżecie (
TextView
/Button
) i możesz zaimplementować efekt Ripple :I jesteś gotowy.
źródło
Okazuje się, że to działa zgodnie z przeznaczeniem. Standardowa wartość colorControlHighlight motywu Materiał to
#40ffffff
. Więc na białym tle to się nie pojawi. Zmiana koloru podświetlenia na inny działa i / lub zmiana koloru tła obiektu.Dziękuję wszystkim (zwłaszcza Alanvowi za wskazanie mi właściwego kierunku).
źródło
colorControlHighlight
swójstyles.xml
. Dodaj go na przykład do własnego motywu.Ustaw
android:clickable="true"
w swoim układzie.źródło
Oto przykład kliknięcia przykładowego układu z efektem tętnienia:
źródło
Użyj tego ripple.xml w folderze do rysowania , a następnie przypisz go jako widok
android: background = "@ drawable / ripple"
android: clickable = "true"
źródło
Po prostu dodaj domyślny efekt tętnienia za pomocą
android:background="?selectableItemBackground"
Lubić:
źródło
Umieść to w swoim układzie:
Uwaga: w dokumentacji API jest błąd. Będzie działać tylko na API> = 23
Dla wszystkich poziomów API użyj tego rozwiązania
źródło
Próbowałem wszystkich tych odpowiedzi i nic mi nie pomogło, więc rozwiązałem, tworząc następujący styl:
Następnie zastosowałem do mojego układu liniowego:
źródło