7

obrócić Fab w tak prosty sposób:Jak obracać pływający przycisk akcji bez rotaing shadow?

fab.startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate)); 

rotate.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <rotate 
     android:fromDegrees="0" 
     android:toDegrees="360" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:duration="1000"/> 
</set> 

działa, ale wraz z jego cień FAB obraca. Ale potrzebuję tylko FAB do obracania (lub nawet jego obrazu src, jeśli jest jakakolwiek różnica).

+0

Moje rozwiązanie z obracającym się ImageView nad FAB http://stackoverflow.com/questions/29426138/rotating-floatingactionbutton/33169100#33169100 –

Odpowiedz

18

Czy próbowałeś korzystać z metody animacji dostarczonej przez bibliotekę Compat? Ja też miałem ten sam problem przy użyciu animacji utils

final OvershootInterpolator interpolator = new OvershootInterpolator(); 
ViewCompat.animate(fab). 
      rotation(135f). 
      withLayer(). 
      setDuration(300). 
      setInterpolator(interpolator). 
      start(); 
+2

To jest nadal obracanie cienia –

+1

i wprowadzenie obcego przycinania cieni! –

+2

działa poprawnie z obsługą projektu lib 23.2.0! brak rotacji cienia (testowany na 6.0, 4.4). OvershootInterpolator jest fajny :) –

8
public void rotateFabForward() { 
    ViewCompat.animate(fab) 
      .rotation(135.0F) 
      .withLayer() 
      .setDuration(300L) 
      .setInterpolator(new OvershootInterpolator(10.0F)) 
      .start(); 
} 

public void rotateFabBackward() { 
    ViewCompat.animate(fab) 
      .rotation(0.0F) 
      .withLayer() 
      .setDuration(300L) 
      .setInterpolator(new OvershootInterpolator(10.0F)) 
      .start(); 
} 
2

Jest to zupełnie inne podejście, które działa bezbłędnie dla mnie (ten zasugerował w przyjętym odpowiedź wytwarza przycięte cień na pre-L). Załóż rozciągliwej XML i owinąć FAB ikonę na <rotate> tagu jak poniżej:

<?xml version="1.0" encoding="utf-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="45"> 
    <bitmap android:src="@drawable/ic_add_white_24dp"/> 
</rotate> 

ustawić tę odkształcalne do FAB i animowanie albo jej poziom bezpośrednio lub właściwość samego FAB imageLevel; wynosi od 0 do 10000. Jeśli chcesz OvershootInterpolator, ustaw toDegrees na 90 i animuj poziom do wartości 5000, aby nie przekroczył granic.

+0

uwaga boczna: jeśli można przeciągnąć wektor, nie można użyć mapy bitowej, zamiast tego możesz spróbować wypróbować: ' guness

Powiązane problemy