7

मैं इस तरह के एक सरल तरीके से फैब बारी बारी से:छाया को घुमाने के बिना फ़्लोटिंग एक्शन बटन कैसे घुमाएं?

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> 

यह काम करता है, लेकिन एक साथ फैब के साथ अपनी छाया घूमता है। लेकिन मुझे घूमने के लिए केवल एफएबी की आवश्यकता है (या यहां तक ​​कि अगर कोई अंतर है तो इसकी स्रोत छवि भी)।

+0

एफएबी पर छविव्यू घूर्णन के साथ मेरा समाधान http://stackoverflow.com/questions/29426138/rotating-floatingactionbutton/33169100#33169100 –

उत्तर

18

क्या आपने कंपैट लाइब्रेरी द्वारा प्रदान की गई एनिमेट विधि के साथ प्रयास किया था? मैं भी एक ही समस्या का उपयोग करते समय था एनीमेशन utils

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

यह अभी भी छाया –

+1

छाया घुमाता है और एक अजीब छाया क्लिपिंग भी पेश करता है! –

+2

डिजाइन समर्थन lib 23.2.0 के साथ ठीक काम करता है! कोई छाया रोटेशन (6.0, 4.4 पर परीक्षण)। ओवरशूटइंटरपोलेटर अच्छा है :) –

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

वहाँ एक पूरी तरह से एक और दृष्टिकोण है कि मेरे लिए काम करता है दोषरहित (एक सुझाव में स्वीकार किए जाते हैं जवाब पूर्व एल पर एक काटा छाया पैदा करता है) है। एक एक्सएमएल drawable बनाएं और <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, और या तो सीधे अपने स्तर या फैब के ही imageLevel संपत्ति चेतन; यह 0 से 10000 तक जाता है। यदि आप OvershootInterpolator चाहते हैं, तो toDegrees से 90 पर सेट करें और 5000 के मान तक स्तर को एनिमेट करें ताकि यह सीमाओं से आगे न हो।

+0

साइड नोट: यदि वेक्टर योग्य है, तो आप बिटमैप का उपयोग नहीं कर सकते हैं, इसके बजाय आप इसे निम्न कोशिश कर सकते हैं: ' guness

संबंधित मुद्दे