簡體   English   中英

如何在不旋轉陰影的情況下旋轉浮動動作按鈕?

[英]How to rotate floating action button without rotating shadow?

我以如此簡單的方式旋轉 FAB:

fab.startAnimation(AnimationUtils.loadAnimation(this, R.anim.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>

這有效,但與 FAB 一起,它的陰影會旋轉。 但是我只需要 FAB 來旋轉(或者甚至是它的 src 圖像,如果有任何區別的話)。

您是否嘗試使用 Compat 庫提供的 animate 方法? 使用 Animation utils 時我也遇到了同樣的問題

final OvershootInterpolator interpolator = new OvershootInterpolator();
ViewCompat.animate(fab).
           rotation(135f).
           withLayer().
           setDuration(300).
           setInterpolator(interpolator).
           start();
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();
}

有一種完全另一種方法對我來說完美無缺(接受的答案中建議的方法會在 pre-L 上產生一個剪切陰影)。 創建一個 XML drawable 並將您的 FAB 圖標包裝到一個<rotate>標簽中,如下所示:

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

將此 drawable 設置為您的 FAB,並直接為其級別或 FAB 本身的imageLevel屬性設置動畫; 它從 0 到 10000。如果您想要OvershootInterpolator ,則將toDegrees設置為 90 並將級別設置為 5000 的動畫,這樣它就不會超出范圍。

最短方式:順時針旋轉:

fab.animate().rotationBy(135f) // 135f = 135 degree.

逆時針旋轉(復位到初始位置):

fab.animate().rotationBy(-135f) // 135f = 135 degree.

同樣可以通過對象動畫器實現:

  moveRight.rotation = -180f

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM