Ich versuche, die FloatingActionButton-Welligkeit auf etwas Ähnliches wie this zu setzen.
Vom Materialdesign.
Das Problem ist, dass ich nur einen "flachen Stil" bekomme, bei dem es keine Wellen gibt. Der Button ändert sich in meinem Fall von Weiß zu Orange ohne die in dem Link oben gezeigte Animation.
Ich bin der Antwort hier gefolgt:
FloatingActionButton-Beispiel mit Support Library
aber meine FAB ist immer noch langweilig!
BEARBEITEN: Mein aktueller Code lautet: XML:
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/item_activity_fab"
Android:layout_width="64dp"
Android:layout_height="64dp"
Android:layout_marginRight="16dp"
Android:src="@drawable/watch"
app:borderWidth="0dp"
app:elevation="6dp"
app:fabSize="normal"
app:layout_anchor="@id/item_activity_title_background"
app:layout_anchorGravity="top|right|end"
app:pressedTranslationZ="12dp"
app:rippleColor="@Android:color/transparent"/>
Java:
mAddToWatchListFAB.setRippleColor(ContextCompat.getColor(this, R.color.orange_6));
Ich habe diese Methode an der FAB ausprobiert, aber es schien nicht zu funktionieren. Ich habe auch die Schritte in dem von mir bereitgestellten Link ausprobiert
fügen Sie dem schwimmenden Action-Button-XML-Code die folgenden 2 Eigenschaften hinzu
app:rippleColor="@color/textcolor"
Android:clickable="true"
wenn Sie FAB anklickbar machen, wird die Farbe der Wellen hinzugefügt
Sie können es so implementieren, wie es meine Gabriele Mariotti
Sie können so etwas tun:
<Button Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:background="@drawable/ripple" />
Wo ist die Ripple.xml:
<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:color="?android:colorControlHighlight"> <item Android:id="@Android:id/mask"> <shape Android:shape="oval"> <solid Android:color="?android:colorAccent" /> </shape> </item> </ripple>
wie gesagt in hier was für alle Welligkeitsbedürfnisse gelten kann.
UPDATE
<Android.support.design.widget.FloatingActionButton
Android:id="@+id/item_activity_fab"
Android:layout_width="64dp"
Android:layout_height="64dp"
Android:layout_marginRight="16dp"
Android:src="@drawable/watch"
Android:background="@drawable/ripple"
app:borderWidth="0dp"
app:elevation="6dp"
app:fabSize="normal"
app:layout_anchor="@id/item_activity_title_background"
app:layout_anchorGravity="top|right|end"
app:pressedTranslationZ="12dp"/>
Und benutze die obige Ripple.xml. So einfach! Alles was Sie tun müssen, ist zu maskieren :)
UPDATE 2
Für API 20 und darunter gibt es Optionen zum Implementieren des Ripple-Effekts. Überprüfen Sie die folgenden Tipps von Marcin Orlowski
Glücklicherweise sind bereits einige benutzerdefinierte Implementierungen verfügbar:
einschließlich Widget-Sets zum Thema Materlial, die mit älteren Android-Versionen kompatibel sind:
sie können also eines davon oder google für andere "Material-Widgets" oder so ausprobieren ...
Anstelle von transparent verwenden Sie Folgendes:
app:rippleColor="@color/colorAccentLight"
dabei ist colorAccentLight ein hellerer Akzent Ihrer aktuellen Akzentfarbe. In meinem Fall habe ich verwendet:
<color name="colorAccent">#E040FB</color>
<color name="colorAccentLight">#E1BEE7</color>
in der Datei colors.xml ... Sie können es aber auch zu Testzwecken auf eine andere zufällige Farbe (mit Ausnahme Ihrer aktuellen Akzentfarbe) setzen.
Ihre Wellenfarbe ist transparent. Ich nehme an, Ihre Welligkeit zeigt sich normal, aber da sie unsichtbar ist, können Sie sie nicht sehen.
Sehen Sie diese Antwort für eine Lösung.
Android: Können Sie einen Ripple-Effekt haben, dessen Standardstatusfarbe transparent ist?
<!--change this to any color-->
app:rippleColor="@Android:color/transparent"
<!-- try this line instead above -->
app:rippleColor="@color/colorPrimary"
Android:clickable="true"