tło
W aplikacji do wybierania numerów na Androidzie, gdy zaczniesz szukać czegoś i klikniesz przycisk strzałki po lewej stronie EditText, uzyskasz na nim efekt tętnienia kołowego:
Problem
Ja też próbowałem, ale dostałem prostokątny:
<ImageButton
android:id="@+id/navButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/search_ic_back_arrow"/>
Pytanie
Jak sprawić, by po kliknięciu przycisk miał efekt falowania kołowego? Czy muszę stworzyć nowy element do rysowania, czy jest na to wbudowany sposób?
android
button
rippledrawable
programista Androida
źródło
źródło
Odpowiedzi:
Jeśli masz już obraz tła, oto przykład tętnienia, które wygląda na zbliżone do selectableItemBackgroundBorderless:
ic_filter_state.xml:
state_pressed_ripple.xml: (krycie ustawione na 10% na białym tle) 1AFFFFFF
źródło
Jeśli używasz motywu AppCompat, możesz ustawić tło widoku jako:
Spowoduje to dodanie okrągłych tętnień na 21 i powyżej oraz kwadratowego tła poniżej 21.
źródło
android:clipChildren="false"
w układach, aby umożliwić propagację animacji.Kolejny atrybut z okrągłym efektem tętnienia, specjalnie dla paska akcji:
UPD : kolor falowania można zmienić za pomocą tego atrybutu:
Należy jednak pamiętać, że ten atrybut dotyczy wszystkich domyślnych efektów tętnienia.
źródło
?
to skrót do?attr/
Utwórz i ustaw tętnienie do rysowania jako tło. Coś takiego.
źródło
Po prostu dodaj to tło do swojego widoku
android:background=?android:attr/actionBarItemBackground
źródło
Możesz stworzyć tętnienie koła, które można narysować, używając
android:radius
atrybutu w XML.Przykład:
Zwróć uwagę, że Twój widok
your_radius
powinien być mniejszy niż szerokość i wysokość widoku. Na przykład: jeśli masz widok z rozmiarem60dp x 60dp
your_radius
powinien być blisko30dp
(szerokość / 2 lub wysokość / 2).źródło
Jeśli chcesz bardziej ogólnych plików XML, mam dwa pliki:
1) btn_ripple_background z kodem:
2) ripple_circuler_shape z kodem:
wreszcie użycie:
android:foreground="@drawable/ripple_btn_background"
źródło
Jeśli chcesz uzyskać efekt tętnienia, który nie przekroczy granicy koła, możesz sprawdzić ten kod. U mnie działa idealnie. Pamiętaj tylko, że musisz podać id = @ android: id / mask w ripple_blue.xml
ripple_blue.xml
color.xml
źródło
Próbować:
źródło
po prostu dodaj ten element do swojego
źródło
W Kotlin / Java możesz wykonać następujące czynności
źródło